这两者之间有什么不同,我应该使用哪一个?
string s = "Hello world!";
String s = "Hello world!";
许多人(例如Jeffrey Richter在他的书CLR Via C#中)声称System.String
和string
以及System.Int32
和int
之间没有区别,但是我们必须更深入地加以区分,以便真正挤出这个问题的精华,使我们能够从中获得所有的营养价值(编写更好的代码)。
A. 对于编译器而言,它们是相同的...
B. 但是,在框架和非C#上下文中,它们是不同的。不同之处包括...
string
、int
和其他C#类型。对于内部公司,如果只使用C#,那么就坚持使用C#类型。System.String
和System.Int32
。对于你的内部组织,如果还使用VB.NET、F#或任何其他.NET语言,或者开发供客户使用的库,那么在这些情况下,你应该使用“Frameworky”类型,以便每个人都能理解你的接口,无论他们来自哪个宇宙。(反正克林贡语里怎么说System.String
呢?)string
和String
在C#中没有太大区别。
String
是.NET框架中System命名空间中的一个类。其完全限定名为System.String
。小写的string是System.String
的别名。
但是建议在声明变量时使用string
:
string str = "Hello";
在使用任何与字符串相关的内置方法时,我们可以使用 String
,例如 String.IsNullOrEmpty()
。
另一个不同之处是,在使用 String
之前,我们必须在 .cs 文件中导入系统命名空间,而 string
可以直接使用。
string
是.NET框架中String
类的别名。实际上,每种C#类型都有一个在.NET中对应的等效类型。String
类,你需要导入System
命名空间,而当你使用string
关键字时,你不需要导入命名空间。String
和string
都用于表示一串字符,但它们在不同的上下文中使用:System.String
类的别名。
- 您可以在C#代码的任何地方使用它。System.String
类。
- 要在不加限定符的情况下使用String
(大写S),通常需要在代码文件的顶部添加using System;
指令;否则,您需要使用System.String
。初始化:
string s1 = "你好";
System.String s2 = "世界";
方法使用:
string s1 = "你好";
int length = s1.Length; // 使用 string 关键字
String s2 = "世界";
int length2 = s2.Length; // 使用 String 类
至少有四个区别:
1- string是一个保留字,但是String只是一个类名。这意味着不能仅使用string作为变量名。
2- 你不能在不“using System”的情况下使用String,因此使用“string”可以减少写入的代码量。
3- 'String'是比'string'更好的命名约定,因为它是一种类型而不是变量。
4- "string"是C#关键字,并在大多数编码编辑器中语法突出显示,但不是"String"。
string
是 C# 语法的一个 词法 构造,而System.String
只是一种类型。无论任何规范中提到的 显式 差异如何,仍然存在这种隐含的差异,可能会带来一些歧义。语言本身必须以一种不需要考虑 BCL 中的特定类的方式支持string
。 - Kirk Wollstring
存在问题。需要缩写System.String
,但作为别名,它看起来非常相似,但不完全相同。然而,经过几年的C#编程,我认为,安全起见,可以直接使用string
和string.Format()
,不用担心System.String
。 - RolandSystem.String
类还在,而string
关键字仍然是它的别名,就像System.Int32
和int
一样。它们实际上是同一个东西。 - Craig Tullis