基本的に、次の汎用関数が必要です。
public string StringOrNull<T> (T value)
{
if (value != null)
{
return value.ToString();
}
return null;
}
where T: class などの制約を使用できることはわかっていますが、T はプリミティブ型、Nullable<>、またはクラスにすることができます。これを行う一般的な方法はありますか?
編集
私は銃を飛ばしたことが判明しました。このサンプルが示すように、これは実際には問題なく動作します。
class Program
{
static void Main(string[] args)
{
int i = 7;
Nullable<int> n_i = 7;
Nullable<int> n_i_asNull = null;
String foo = "foo";
String bar = null;
Console.WriteLine(StringOrNull(i));
Console.WriteLine(StringOrNull(n_i));
Console.WriteLine(StringOrNull(n_i_asNull));
Console.WriteLine(StringOrNull(foo));
Console.WriteLine(StringOrNull(bar));
}
static private string StringOrNull<T>(T value)
{
if (value != null)
{
return value.ToString();
}
return null;
}
}