Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这个修剪代码会失败吗?_C# - Fatal编程技术网

C# 这个修剪代码会失败吗?

C# 这个修剪代码会失败吗?,c#,C#,我最近在代码中遇到了一个异常,因为我正在修剪一个空字符串。 我将其替换为以下内容: SomeValue = (SomeString ?? "").Trim(); 这个代码会失败吗 谢谢 注意:我知道我可以添加一个try/catch;我只是想在不使用try/catch的情况下,使这条线路不出现故障。这不是我应该采用的方式,但不,现在不应该失败 我可能会编写一个扩展方法,在检查null后调用trim。大概是这样的: public static string NullTrim(this Stri

我最近在代码中遇到了一个异常,因为我正在修剪一个空字符串。 我将其替换为以下内容:

  SomeValue = (SomeString ?? "").Trim();
这个代码会失败吗

谢谢


注意:我知道我可以添加一个try/catch;我只是想在不使用try/catch的情况下,使这条线路不出现故障。

这不是我应该采用的方式,但不,现在不应该失败

我可能会编写一个扩展方法,在检查null后调用trim。大概是这样的:

public static string NullTrim(this String str) {
    if(str == null) {
        return string.Empty;
    }
    return str.Trim();
}
这允许编译和执行以下所有内容而不会出错:

    "".NullTrim();
    "  test  ".NullTrim();
    ((string)null).NullTrim();
假设
SomeString
确实是
字符串,则此操作不会失败(即抛出
NullReferenceException

您可以通过多种方式实现相同的目标:

SomeValue = (SomeString == null)?string.Empty:SomeString.Trim();

如果它因为
NullReferenceException
而失败,那么现在它肯定不会因为而失败。至于其余的,我不能说没有上下文。

你能写一些小单元测试来测试吗?我怀疑你范围内的答案是否定的,它不会失败。它在正常运行中失败的唯一原因是内存不足。它以一种更奇怪的方式失败。它会产生垃圾数据,你不会知道。真正的错误不是你对空字符串调用Trim(),而是你忘记初始化字符串。这个bug现在将被隐藏起来,在程序的完全不同的部分生成错误的输出。好的,谢谢Oded。这是自定义json反序列化程序的一部分,我在一个不能失败的过程中遇到了一个错误。@frenchie-当您编写这样的代码时,请考虑使其尽可能可读。@Oded,我会更精确一点:
这不会失败(抛出NullReferenceException)
因为此代码可能以其他方式失败。@DarinDimitrov-公平点。。。当然,
OutOfMemoryException
总是可能发生的。@frenchie,在Azure上,您将获得
System.OutOfCreditException
,然后再获得
System.OutOfMemoryException
:-)好的,谢谢您的想法;目前,我将继续我的路线。