String.Empty或null:什么最好从服务返回“错误”字段?

时间:2011-01-10 15:52:52

标签: c# .net string

我们都知道(或多或少)String.Empty和null之间的区别。我仍然没有决定在“通常”开发中对我有什么好处(我的意思是开发ASP.NET应用程序的服务器端部分,WinForms应用程序 - 一切都是C#.NET代码),但我看到并阅读了很多关于。

的文章

但是当我从服务(ASP.NET WebService或WCF服务)返回字符串值时,我没有看到比较什么更好。

如果我返回null或String.Empty:

,你的建议是什么?
  1. 当我需要返回'错误'消息时(null或空将表示'没有错误');
  2. 当我需要返回“电子邮件”字段值时(空或空将表示'未指定电子邮件)。
  3. 欢迎任何想法。

5 个答案:

答案 0 :(得分:3)

这完全是品味,风格和一致性的问题。你有其他服务返回null / empty吗?如果是这样,最好匹配它们。否则我个人认为null优于空。因为null可以作为更好的哨兵值。可以将空字符串视为发生错误,但未返回错误详细信息。

答案 1 :(得分:1)

通常我会使用哪个返回值更符合其余代码处理这种情况的方式。你描述的案例当然可以采取任何一种方式;在我看来,错误消息在没有错误时返回null更有意义,而电子邮件作为空字符串更有意义(因为没有输入/指定电子邮件)。

答案 2 :(得分:0)

始终返回string.Empty而不是null

如果使用服务方法的代码调用服务返回的字符串操作,那么使用该服务方法的代码就不必担心NullReferenceException

重复的空值检查会使您的代码看起来很丑陋,难以阅读。

答案 3 :(得分:0)

NULL和string.empty在纯请求表单中的表示方式相同。不同之处在于XSD映射,关于设置nillable =“true”与否。

更好的请求可能是返回“无效”结果,因此不会被服务的任何第三方消费者误解。

答案 4 :(得分:0)

从概念上讲,Null表示未定义的值。为了这个论点,让我们假设您有一个标志,指示用户是否有电子邮件地址。如果未设置此标志,则Null将是电子邮件地址的适当值。如果设置了该标志,则空字符串将指示未提供电子邮件地址。

有了错误信息,我会再次说Null表示未定义,例如报告没有错误。空字符串可能表示发生了错误,但由于某种原因未提供详细信息。

只要你在服务范围内保持一致,任何一方都应该没问题。