c# - 为什么允许使用 string.Substring(length,0)?

标签 c# string

<分区>

有人可以告诉我允许使用什么 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-1i 的长度为 j 的子字符串是字符串 t=sisi+1 ...si+j-1。这里没有歧义:很明显,如果 j 为 0,则结​​果为空字符串。通常,只有在某些情况异常时才会引发异常:输入没有任何意义,或者是不允许的。

关于c# - 为什么允许使用 string.Substring(length,0)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44101420/

相关文章:

c# - DataContractSerializer 失败,空数据

c# - AutoMapper 可以在值类型(枚举)和引用类型之间进行映射吗? (字符串)

javascript - 在 div 的所有子级中搜索文本并隐藏不包含它的文本

javascript - jquery ":contains"选择器是否接受这种值 "Banking and Finance"?

java - 为什么说 Java 的 String 内存使用率很高?

c# - 外键的 FluentValidation RuleFor 属性

java - 从 Java 类调用 C# 类

c# - 遍历从方法返回的列表,直到该方法没有给我任何记录

c - 如何从 c 中的文本文件创建多个运行总计的函数?

java - 在java中打印任意长度的用户输入姓名的首字母和全名