<分区>
有人可以告诉我允许使用什么 string.Substring(someIndex,0)
吗?
string a = "abc";
var result = a.Substring(1,0);
Console.WriteLine(result);
此代码将被编译并且不会向控制台写入任何内容。
允许这样做的原因是什么?
什么情况下可以使用?
更新
我会澄清我知道这个方法是什么,在这种情况下它返回空字符串。我不是在问为什么结果是空的。我在问为什么允许这样做。
<分区>
有人可以告诉我允许使用什么 string.Substring(someIndex,0)
吗?
string a = "abc";
var result = a.Substring(1,0);
Console.WriteLine(result);
此代码将被编译并且不会向控制台写入任何内容。
允许这样做的原因是什么?
什么情况下可以使用?
更新
我会澄清我知道这个方法是什么,在这种情况下它返回空字符串。我不是在问为什么结果是空的。我在问为什么允许这样做。
最佳答案
This code will be compiled and will write nothing to console.
首先,从技术上讲,这个语句是错误的:它向控制台写入了一个新行。这就是 WriteLine
中的 Line
发挥作用的地方。但我们不要挑剔。
What is the reason that this is allowed?
没有理由禁用它。比方说你想制作一个字符串插入方法:
public static string StringInsert(String original, String toInsert, int index) {
return original.Substring(0,index)+toInsert+original.SubString(index);
}
现在我们的 StringInsert
方法无法知道第一部分或第二部分是否为空(我们可以决定在索引 0
处插入)。如果我们不得不考虑第一个子串的长度可能为零,或者第二个,或者两者都有,那么我们将不得不实现大量的 if
逻辑。现在我们可以使用一个 one liner。
通常一个字符串s是一个sequence字符s=s0s1 ...sn-1。 i 的长度为 j 的子字符串是字符串 t=sisi+1 ...si+j-1。这里没有歧义:很明显,如果 j 为 0,则结果为空字符串。通常,只有在某些情况异常时才会引发异常:输入没有任何意义,或者是不允许的。
关于c# - 为什么允许使用 string.Substring(length,0)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44101420/