2012-07-11 82 views
-1

这下面的代码会得到我一个随机数:保存生成的随机数字供以后使用

Random r = new Random(); 
int srandom = r.Next(2147483647); 

我想将它保存为一个字符串/ INT /长或一些如何,所以我将能够使用相同的数字。因此,例如,如果我现在打电话给srandom,我会得到随机数,但过了一段时间后它会改变。我希望它保持不变。

+0

你想要一个新的随机数的每个程序启动时间(和直到它退出为止),还是只想一次生成它,然后在程序下次启动时加载保存的数字? – shambulator 2012-07-11 10:38:06

+0

每次程序启动时,我都会想要一个新的随机数(并使用同一个直到它退出) – MiLady 2012-07-11 10:39:27

+0

将srandom更改为类的静态字段,并从您的类的静态构造函数中指定它。 – 2012-07-11 10:46:07

回答

0

你可以做到以下几点:

Globals8.GlobalInt8 = Globals8.GlobalInt8.HasValue ? Globals8.GlobalInt8 : srandom; 

你声明变量GlobalInt8作为一个可空INT这样的:

public static class Globals8 
{ 
    private static int? globalInt8 = default(int?); 
    public static int? GlobalInt8 
    { 
     get { return globalInt8;} 
     set { globalInt8 = value;} 
    } 
} 

同样的事情可以适用于长变量。这里发生的是,您将该值初始化为与参考对象中的null类似的默认值。之后,你检查变量是否有价值,然后你忽略它。否则你设定了它的价值。

希望这是有用的。

+0

嗯所以只需一秒这个代码将保持唯一的第一个随机数?它不会每次都打电话给srandom?我需要一次随机生成的数字。 – MiLady 2012-07-11 10:46:49

+0

你的代码不起作用。 'default(int)'将返回0.所以GlobalInt8.HasValue将为true。你必须用'null'来初始化它,或者使用正确的类型('default(int?)') – 2012-07-11 10:53:58

+0

我不明白你真正想要实现的是如何给我调用一个序列或者更清楚地使用你的注释我可以告诉你如何去做。 – 2012-07-11 11:17:16

3

您可以在类中创建一个静态字段,并从静态构造函数设置它在程序生命周期中一旦初始化:

public class YourClass{ 

    private static readonly int g_RandomInt; 

    static YourClass(){ 
     g_RandomInt = new Random().Next();  
    } 

    public void InstanceMethod() 
    { 
     Console.WriteLine(g_RandomInt); 
    } 
} 
+0

谢谢,我应该如何设置并获取它? – MiLady 2012-07-11 10:56:26

+0

我可以回答,但我更喜欢建议你在网上采用一个好的C#教程。这是C#语言的基础知识,网络上有很多教程。说实话,我不能直接回答你,因为它取决于整个程序(哪个类负责存储它,哪个类会消耗它,等等) – 2012-07-11 11:00:16