簡體   English   中英

c# 哪個是賦予隨機數功能的更好方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM