[英]c# Which is the better way to give random number to function
哪個更好,隨機結果有區別嗎?
void Func1(Random rand)
{
var num=rand.Next();
}
void Func2(ref Random rand)
{
var num=rand.Next();
}
它們在功能上是等效的。 您不會更新函數中的rand
引用,因此通過ref
傳遞它不會執行任何操作。
經驗法則:不要使用ref
除非您絕對必須並了解它的作用。
1)如果您不需要明確使用ref
,請不要使用它。
2)通常你不需要通過method
s 傳遞Random
。 如果必須這樣做,可能是您在代碼中做錯了。
為什么? 因為要確保真正的隨機性,最好始終使用相同的Random
實例,而不是創建許多實例。
這就是為什么你應該總是聲明一個並使用它,就像在這個例子中一樣:
class Program
{
static void Main(string[] args)
{
RandomNumbersPrinter randomNumbersPrinter = new RandomNumbersPrinter();
int randomInteger = randomNumbersPrinter.GetRandomInteger();
Console.WriteLine(randomInteger);
}
}
public class RandomNumbersPrinter
{
private static readonly Random _random = new Random();
public int GetRandomInteger()
{
return _random.Next();
}
}
由於Random
是一種引用類型,唯一的區別是在調用Func1
時會復制對實例的引用。
在Func2
,您將對Random
本身的實際現有引用傳遞給該方法。
有關這方面的更多信息,請查閱文檔。
最重要的是,除非您打算將rand
分配給方法中的新Random
對象,否則不應在此處使用ref
關鍵字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.