C#对对象调用.ToString()的最佳方法

C#对对象调用.ToString()的最佳方法,c#,rewrite,C#,Rewrite,如何对object类型可以为null的对象编写对.ToString()方法的调用。我目前做了以下工作,但时间相当长: myobject == null ? null : myobject.ToString() 如果您经常以这种方式使用该特定类型,您可以编写一个方法GetString(objectfoo),该方法将返回字符串或null。这将为您节省一些打字时间。 C语言中有类似C++模板的东西吗?如果是,您也可以将其应用于GetString()方法。您确定要为空对象使用空字符串吗?我认为这更

如何对object类型可以为null的对象编写对.ToString()方法的调用。我目前做了以下工作,但时间相当长:

  myobject == null ? null : myobject.ToString()

如果您经常以这种方式使用该特定类型,您可以编写一个方法
GetString(objectfoo)
,该方法将返回字符串或null。这将为您节省一些打字时间。
C语言中有类似C++模板的东西吗?如果是,您也可以将其应用于
GetString()
方法。

您确定要为空对象使用空字符串吗?我认为这更有可能:

myobject == null ? string.Empty : myobject.ToString()

这并不是直接的错误,但我记得一些指导原则,其中函数应该接受null和Empty,但最好不要返回null字符串。

使行为更加封装的一种方法是将其放在扩展方法中:

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();

是的,当为null时我需要一个null。我经常使用它,但它来自wall projet的不同部分,所以我需要调用Tools.GetString()之类的东西。那会更好。但是有没有一种语法不需要调用方法呢?所以使用扩展methodosd,您可以在空引用上调用方法!奇怪,但它解决了我的问题!您可能不知道将空对象转换为空字符串是否适用于所有情况,我认为添加一个采用默认值的重载是合理的。@Duaner:这并不像看上去那么奇怪;只是语法上的糖。我的示例中的调用
myobject.NullSafeToString()
将由编译器转换为
ObjectExtensions.NullSafeToString(myobject)