【问题标题】:String vs string [duplicate]字符串与字符串 [重复]
【发布时间】:2010-09-12 02:31:15
【问题描述】:

在 C# 中有 String 对象和 string 对象。

两者有什么区别? 关于使用的最佳做法是什么?

【问题讨论】:

    标签: c# .net string declaration


    【解决方案1】:

    没有区别。 string(小写)只是 System.String 的别名。

    【讨论】:

      【解决方案2】:

      没有区别。 string 是编译器转换为 System.String 的别名。

      事实上,它甚至在 MSIL 中有别名:

      .method private hidebysig static void  Main(string[] args) cil managed
      

      【讨论】:

        【解决方案3】:

        它们之间没有区别。 string 只是 System.String 的别名。编译时,它们都被编译为 System.String 对象。

        【讨论】:

          【解决方案4】:

          小写版本只是实际类 String 的别名。就 IL 生成而言,没有真正的区别。

          【讨论】:

            【解决方案5】:

            它们是别名并且可以互换。但是,在风格上,对于声明,我使用小写字符串,对于静态方法,我使用 String。

            string foo = "bar";
            
            if( foo != String.Empty )
            {
               Console.WriteLine(String.Format("foo.Length = {0}", foo.Length));
            }
            

            【讨论】:

              【解决方案6】:

              没有区别,因为 string 被编译器转换为 System.String。与所有常见类型相同(int 转到 System.Int32 等)。我们使用简单的名称,以便它们脱颖而出。

              【讨论】:

                【解决方案7】:

                没有区别。 System.Stringstring 完全相同。常见的 C# 编码准则表明您应该使用关键字 string

                【讨论】:

                  【解决方案8】:

                  一个是 System.String 的 .Net 类型,一个是特定于 C# 的,结果是 System.String 的别名。

                  http://msdn.microsoft.com/en-us/library/362314fe(VS.71).aspx

                  【讨论】:

                    【解决方案9】:

                    没有区别。 string 是 C# 语言的关键字,它指代 System.String 类,就像 int 是一个关键字,它指代 System.Int32。

                    【讨论】:

                      【解决方案10】:

                      以后,尝试编译一个同时使用两者的应用程序,然后使用 Reflector(将语言更改为 IL)查看编译后的输出。你会发现没有区别。

                      【讨论】:

                        【解决方案11】:

                        考虑到“int”在某些语言中因 16 位/32 位系统而异,“字符串”将来可能会演变为与 System.String 不同。

                        但现在是。

                        【讨论】:

                          【解决方案12】:

                          请注意: string/String 不是唯一的几个别名: 例如。 Integer,Int32,int都是别名。

                          @mliesen:它不会在 C# 中发生,它不像 C。这是因为在 C# 中,您不会创建可执行文件,而是创建每个编译的代码,如 java。

                          【讨论】:

                            猜你喜欢
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 2013-06-13
                            • 1970-01-01
                            • 2020-04-20
                            • 2013-08-29
                            • 2023-04-06
                            相关资源
                            最近更新 更多