【发布时间】:2009-10-08 16:31:33
【问题描述】:
如何在可以为 null 的 object 类型的对象上编写对 .ToString() 方法的调用。我目前正在执行以下操作,但它很长:
myobject == null ? null : myobject.ToString()
【问题讨论】:
如何在可以为 null 的 object 类型的对象上编写对 .ToString() 方法的调用。我目前正在执行以下操作,但它很长:
myobject == null ? null : myobject.ToString()
【问题讨论】:
使行为更加封装的一种方法是将其放入扩展方法中:
public static class ObjectExtensions
{
public static string NullSafeToString(this object input)
{
return input == null ? null : input.ToString();
}
}
然后你可以在任何对象上调用NullSafeToString:
object myobject = null;
string temp = myobject.NullSafeToString();
【讨论】:
myobject.NullSafeToString() 将由编译器翻译成ObjectExtensions.NullSafeToString(myobject)。
如果您经常以这种方式使用该特定类型,您可以编写一个方法GetString(object foo),它将返回一个字符串或空值。这将为您节省一些打字时间。
C# 中是否有类似于 C++ 模板的东西?如果是,您也可以将其应用于GetString() 方法。
【讨论】:
你确定你想要一个空对象的空字符串吗?我认为这更有可能:
myobject == null ? string.Empty : myobject.ToString()
这并没有直接错误,但我记得一些准则,其中函数应该接受 null 和 Empty,但最好不要返回 null 字符串。
【讨论】: