gpt4 book ai didi

c# - 为什么 System.String.EndsWith() 有一个字符重载而 System.String.StartsWith() 没有?

转载 作者:太空狗 更新时间:2023-10-30 00:33:04 24 4
gpt4 key购买 nike

我正在查看 System.String 并且想知道为什么 EndsWithStartsWith 方法在参数方面不是对称的可以拿。

具体来说,为什么 System.String.EndsWith 支持 char 参数而 System.String.StartsWith 不支持?这是因为任何限制或设计特点吗?

// System.String.EndsWith method signatures
[__DynamicallyInvokable]
public bool EndsWith(string value)

[ComVisible(false)]
[SecuritySafeCritical]
[__DynamicallyInvokable]
public bool EndsWith(string value, StringComparison comparisonType)

public bool EndsWith(string value, bool ignoreCase, CultureInfo culture)

[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
internal bool EndsWith(char value)
{
int length = this.Length;
return length != 0 && (int) this[length - 1] == (int) value;
}

// System.String.StartsWith method signatures
[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
[__DynamicallyInvokable]
public bool StartsWith(string value)

[SecuritySafeCritical]
[ComVisible(false)]
[__DynamicallyInvokable]
public bool StartsWith(string value, StringComparison comparisonType)

public bool StartsWith(string value, bool ignoreCase, CultureInfo culture)

最佳答案

在 ILSpy 中看,这个重载似乎绝大多数在 IO 代码中被调用为

s.EndsWith(Path.DirectorySeparatorChar)

大概这只是 C# 团队认为避免重复代码很有用的东西。

请注意,在开始时进行此检查要容易得多(s[0] == c vs s[s.Length - 1] == c)这也可以解释为什么他们懒得做 StartsWith 重载。

关于c# - 为什么 System.String.EndsWith() 有一个字符重载而 System.String.StartsWith() 没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13862781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com