2013-07-30 82 views
0

基本上,我希望能夠有一個函數,它在可空類型,然後返回值,如果它有一個或字符串值「NULL」,如果它是空,因此該函數需要能夠接受任何可空類型,然後返回該類型或返回字符串NULL。下面是我在尋找的一個例子,我似乎無法弄清楚我的功能需要做什麼。函數接受空類型,並返回可空類型或字符串

UInt16? a = 5; 
UInt16? b = null; 
UInt32? c = 10; 
UInt32? d = null; 

Console.WriteLine(MyFunction<UInt16?>(a)) // Writes 5 as UInt16? 
Console.WriteLine(MyFunction(UInt16?>(b)) // Writes NULL as String 
Console.WriteLine(MyFunction(UInt32?>(c)) // Writes 10 as UInt32? 
Console.WriteLine(MyFunction(UInt32?>(d)) // Writes NULL as String 

static T MyFunction<T>(T arg) 
{ 
    String strNULL = "NULL"; 

    if (arg.HasValue) 
     return arg; 
    else 
     return strNULL; 
} 

回答

2
static string MyFunction<T>(Nullable<T> arg) where T : struct 
{ 
    String strNULL = "NULL"; 

    if (arg.HasValue) 
     return arg.Value.ToString(); 
    else 
     return strNULL; 
} 
+0

當然,返回 「NULL」 作爲字符串的值是有爭議的。如果你仍然需要處理當它爲空時要做什麼,那麼通過將邏輯轉移到方法中,你並沒有獲得任何東西。 –

+0

@DanielMann這只是對問題中描述的特定問題的答案。這是OP的想法返回「NULL」 – empi

+1

這不會編譯如:'T'需要一個非可空類型是有效的可空''(即'其中T:struct') – RoadieRich