Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/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#_String - Fatal编程技术网

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。空的,更新的标签。