您希望在通用ToString函数中看到什么?

时间:2009-10-22 18:55:53

标签: .net

假设您有一个名为“SafeToString”的通用函数。目的是能够传递任何内容,并且总是得到一个明智的响应,没有任何例外。您希望它如何回应这些输入?

  • Null - > Null或String.Empty
  • DBNull.Value - > Null,String.Empty或类似“”
  • 的文本
  • Nullable包含null - > Null,String.Empty或类似“”
  • 的文本
  • 包含无的FSharpOption - > Null,String.Empty或“None”
  • 包含Some(5)的FSharpOption - > “5”或“Some(5)”

3 个答案:

答案 0 :(得分:3)

这不是回答你的问题,请原谅我。但是你总是在对象上使用Convert.ToString()来避免异常。例如:

string x = null;
string a = x.ToString(); // throws exception

string b = Convert.ToString(x); // this is fine 

答案 1 :(得分:1)

我认为能够区分不同种类的空值/空值非常重要。所以我喜欢这样的东西:

  • null - > “空”
  • DBNull.Value - > “DBNull”,或者如果你重视区分价值与类名称的能力,可能是“DBNull.Value”
  • Nullable包含null - &gt; "null <typename>"。 Nullables与普通空值的不同之处在于它们具有与之关联的类型,并且了解它可能很有用。
  • FSharpOption无 - &gt; “无”
  • FSharpOption Some(5) - &gt; “有些(5)”,就像F#通常一样,特别感谢Grauenwolf检查这个。

答案 2 :(得分:0)

可以使用扩展方法实现这样的功能。扩展方法适用于空输入参数。

是的,我同意ToString引起的NullReferenceException在记录功能方面非常烦人。