我想能夠調用具有Nullable參數的泛型foo方法。當Foo方法的主體調用Foo()時,它會遞歸,導致堆棧溢出(沒有.com)。有沒有辦法讓if語句中的調用與運行時類型調用正確的重載?具有可爲空的參數調用的泛型重載方法具體類型
我知道更改名稱會做到這一點,我明白爲什麼遞歸發生,但不知道另一種方式來寫這個。
感謝您的期待。
class Program {
static void Main(string[] args) {
int? x = 5;
int y = 10;
Foo(x, y);
}
static void Foo<T>(Nullable<T> arg, T defaultValue) where T : struct {
if (arg.HasValue)
Foo(arg.Value, defaultValue);
}
static void Foo(int arg, int defaultValue) {
Console.WriteLine(string.Format("I'm an int arg={0}, default={1]}", arg, defaultValue));
}
static void Foo(string arg, int defaultValue) {
Console.WriteLine(string.Format("I'm an string arg={0}, default={1]}", arg, defaultValue));
}
static void Foo(bool arg, int defaultValue) {
Console.WriteLine(string.Format("I'm an double arg={0}, default={1]}", arg, defaultValue));
}
}
你期望'雙?'去哪兒? – 2012-02-07 04:02:53
嘗試在調用中明確地轉換參數Foo() – logicnp 2012-02-07 04:12:22