如果在字符串返回方法中找不到字符串,则返回替代值

时间:2012-02-14 13:07:45

标签: c# string return

我有一个返回字符串的方法。在正常操作条件下,返回空字符串或null。但是,从此方法返回null""是否是一种良好的编码习惯?

5 个答案:

答案 0 :(得分:2)

是的,在这种情况下,我更喜欢返回null来显示找不到字符串。空字符串通常用于显示空结果。

替代方法是抛出一些Exception,但作为程序员,我觉得无法使用Exceptions。返回null 更好

答案 1 :(得分:1)

null与空字符串之间存在语义差异。一个人说“它没有为那个输入定义”,另一个说“输入的正确值是空字符串”。

想象一下,你为C的子集编写了一个编译器,允许main - 函数不返回任何内容。您的编译器返回一个带有一些幻想汇编语言的字符串。

// Testcode 0
void main() {

为此,您将返回null,由于缺少右括号,代码格式不正确(不,不抛出异常,预计会出现用户编写的代码中的错误)。没有有效的输出。

// Testcode 1
void main() { printf("hello!"); }

为此,您将返回"push 'hello!'\ncall printf"

// Testcode 2
void main() {}

为此你可能会返回"",代码什么也不做,什么都不返回,但是有效。

答案 2 :(得分:1)

null通常用于“没有字符串”(字符串“某处未找到”),或者简单地说,不应用字符串。空字符串更常用于存在字符串的情况,但实际上是空的。

例如,如果您在StackOverflow中搜索某些用户的配置文件描述,如果用户未输入任何配置文件描述,则空字符串将是正确的结果;和null,如果没有找到这样的用户。

答案 3 :(得分:1)

是的我是这么认为的,(如果您期望该方法的字符串结果),但如果没有(例如错误/警告),我会考虑在您的方法中抛出异常的替代方法。我通常使用这种方法而不是在这种情况下返回字符串。

e.g。

try
{
     Validate();
}
catch(NotValidException ex)
{
    // Report
}

如果未在此处捕获,则异常将冒出并且 less 沉默,例如,忘记检查Validate方法的返回值。

答案 4 :(得分:1)

这取决于方法的目的,如果您有一个方法string GetCustomerName(int custId),如果客户不存在而不是返回null,您宁愿抛出异常。另一方面,如果有一个方法将字符串的第一个字母更改为大写,并且您在输入中提供了null,则返回null是可以接受的。