.net 您希望在通用ToString函数中看到什么?
假设您有一个名为“SafeToString”的通用函数。这样做的目的是能够传递任何信息,并且总是能够毫无例外地得到正常的响应。您希望它如何响应这些输入.net 您希望在通用ToString函数中看到什么?,.net,.net,假设您有一个名为“SafeToString”的通用函数。这样做的目的是能够传递任何信息,并且总是能够毫无例外地得到正常的响应。您希望它如何响应这些输入 Null->Null或字符串。空 DBNull.Value->Null、String.Empty或类似“”的文本 包含null->null、String.Empty或类似“”的文本的Nullable FSharpOption包含None->Null、String.Empty或“None” 包含一些(5)->“5”或“一些(5)”的选项 可以使用
- Null->Null或字符串。空
- DBNull.Value->Null、String.Empty或类似“”的文本
- 包含null->null、String.Empty或类似“”的文本的Nullable
- FSharpOption包含None->Null、String.Empty或“None”
- 包含一些(5)->“5”或“一些(5)”的选项
是的,我同意ToString导致的NullReferenceException在日志功能中非常烦人。可以使用扩展方法实现此功能。扩展方法可以很好地处理空输入参数
是的,我同意ToString导致的NullReferenceException在日志功能中非常烦人。我认为能够区分不同种类的null/empty值很重要。所以我喜欢这样的东西:
- 空->“空”
- DBNull.Value->“DBNull”,或者如果您重视区分值与类名称的能力,则可以选择“DBNull.Value”
- Nullable包含null->
。Nullables与普通nulls的不同之处在于它们有一个与之关联的类型,了解这一点可能很有用“null”
- FSharpOption无->“无”
- FSharpOption Some(5)->“Some(5)”,正如F#通常所做的那样,特别感谢Grauenwolf对此的检查
- 空->“空”
- DBNull.Value->“DBNull”,或者如果您重视区分值与类名称的能力,则可以选择“DBNull.Value”
- Nullable包含null->
。Nullables与普通nulls的不同之处在于它们有一个与之关联的类型,了解这一点可能很有用“null”
- FSharpOption无->“无”
- FSharpOption Some(5)->“Some(5)”,正如F#通常所做的那样,特别感谢Grauenwolf对此的检查
- 这不是回答你的问题,请原谅。但您必须始终在对象上使用
Convert.ToString()
,以避免出现异常。例如:
string x = null;
string a = x.ToString(); // throws exception
string b = Convert.ToString(x); // this is fine
这并没有回答你的问题,所以请原谅我。但您必须始终在对象上使用
Convert.ToString()
,以避免出现异常。例如:
string x = null;
string a = x.ToString(); // throws exception
string b = Convert.ToString(x); // this is fine
哦,是的,这当然是一种扩展方法。问题更多的是,如果你要使用它,你希望看到什么。哦,是的,当然这是一种扩展方法。问题更多的是,如果你想使用它,你希望看到什么。如果你想使用它来填充GUI或打印报告,你还想这样做吗?我仔细检查了一下,FSharpOption.ToString在beta 2中会使用“Some(5)”@Steven,当您将该信息传递给函数时,您将丢失该信息。@Grauenwolf:如果我将空字符串传递给接受对象的函数,则为“是”。但是,如果我传递了一个为null的
int?
,就会出现这种情况。我想,更一般地说,如果我将null子引用传递给接受基类引用的方法,它将无法区分这与传递null基类引用。再说一次,我不知道我们是否想要它。如果你用它来填充GUI或打印报告,你还想这样做吗?我仔细检查了一下,beta 2中的FSharpOption.ToString将使用“Some(5)”@Steven,当您将该信息传递给函数时,您将丢失该信息。@Grauenwolf:如果我将空字符串传递给接受对象的函数,则为“是”。但是,如果我传递了一个为null的int?
,就会出现这种情况。我想,更一般地说,如果我将null子引用传递给接受基类引用的方法,它将无法区分这与传递null基类引用。再说一次,我不知道我们会想要它。