2015-10-22 31 views
2

我試圖找出它,但我不知道如何將一個類的新實例的結果傳遞給一個函數調用,或者如果這是可能的。C#在函數調用中使用類返回值

如果我wan't傳遞一個隨機數,我得先創建它:

int n = 0; 
Random rnd = New Random(); 
int m = rnd.Next(0, n); 

MyClass.MyFunction(MyValue1, m); 

其實,這是4行代碼。然而,作爲c#的新手,我已經看到了很多,並想知道,如果有一個更短的版本。一些僞代碼:

MyClass.MyFunction(MyValue1, Random rnd = new Random() {rnd.Next(0, n); return}); 

這是不是有可能?我以爲我看到過這樣的事情,但找不到任何關於它的事情。

+1

您通常需要一個Random對象來抽取隨機數,所以在這種情況下,您可能希望您的「新隨機數」處於構造函數或靜態屬性中,那麼您只需要將'rnd.Next'得到你的下一個隨機數。 – crashmstr

回答

1

您可以撥打Next剛過new Random()

MyClass.MyFunction(MyValue1, new Random().Next(0,n)); 

new Random()將創建Random對象,並對其可以調用Next()。所以有可能將其稱爲內聯,而無需先存儲Random

+1

非常感謝。沒想到它那麼容易:) – AllDayPiano

0

我會簡單地離開這個位置

MyClass.MyFunction(MyValue1, ((Func<int>)(() => 
{ 
    int n = 0; 
    var rnd = new Random(); 
    return rnd.Next(0, n); 
}))()); 

P.S:它編譯和作品。

作爲@crashmstr評論,它實際上不是一個好主意,具體到Random。對於單個隨機值是可以的,但對於一系列隨機數,您不希望每次都創建新實例,否則您的數字將變爲not so random

相關問題