C# 字符串比较
情景 考虑以下代码片段C# 字符串比较,c#,string,C#,String,情景 考虑以下代码片段 string s = "S"; string s1 = "S"; string s2 = string.Empty; switch (s) { case "S": s1 = "StringComparison"; break; default: bre
string s = "S";
string s1 = "S";
string s2 = string.Empty;
switch (s)
{
case "S":
s1 = "StringComparison";
break;
default:
break;
}
switch (s[0])
{
case'S':
s2 = "StringCOmpare2";
break;
default:
break;
}
第一种开关情况导致IL中的stringcomparison
但第二种开关情况不会导致IL内的stringcomparison
有人能证明这一点吗?因为在第二个开关上,您不是在进行字符串比较,而是在进行字符比较。您的第二个开关语句不是在使用字符串,而是在使用单个字符。因此,没有字符串比较。最简单的答案是,在第二个块中没有进行字符串比较;你在比较两个角色
但是,您是对的,这两个代码块在功能上是等效的。一个好的优化编译器应该能够检测到“s”是一个固定长度的字符串,并将其重写为不使用完整的字符串比较。您通过返回字符的its访问字符串,因此可以像使用字符数组一样使用该字符串
所以你要做的是一个字符比较。用撇号表示“S”也表明您将“S”用作字符而不是字符串。这应该是什么编程语言?这闻起来像是家庭作业……一种未知语言的家庭作业。可能C++?看起来像C?因为他提到了String。空的,更新的标签。