这两者之间有什么区别,我应该使用哪一个?

string s = "Hello world!";
String s = "Hello world!";

当前回答

这个YouTube视频实际上展示了它们的差异。

当我们谈论.NET 时,有两个不同的东西,一个是.NET 框架,另一个是使用该框架的语言(C#,VB.NET 等)。

此分類上一篇

String s = "I am String";

string s = "I am String";

同样,还有其他 C# 数据类型的联盟,如下所示:

现在,从程序员的观点来看,百万美元的问题:那么什么时候使用“String”和“String”?

在下面的代码中,左侧是变量声明,它被声明使用“丝带”。在右侧,我们称一种方法,所以“丝带”更敏感。

string s = String.ToUpper() ;

其他回答

string 是.NET 框架中的 String 的标志。

在哪里“String”实际上是 System.String。

我会说它们是可交换的,没有区别什么时候和在哪里你应该使用一个或另一个。

最好是和你所使用的相一致。

对于什么是值得的,我使用链来宣布类型 - 变量,属性,回报值和参数. 这与其他系统类型的使用一致 - int, bool, var 等(尽管 Int32 和 Boolean 也是正确的)。

我使用 String 在 String 类上使用静态方法,如 String.Split() 或 String.IsNullOrEmpty()。我觉得这更有意义,因为方法属于一个类,并且与我使用其他静态方法一致。

绳子指一个带物体,它具有各种功能来操纵所包含的绳子。

字符串指一个原始类型

在 C# 中,他们都编写到 String 但在其他语言中,他们不这样做,你应该使用 String 如果你想处理 String 对象和 string 如果你想处理字母。

这是一个协议问题,真的. 字符串只是看起来更像C/C++风格. 通用协议是使用你所选择的语言提供的任何缩写(int/Int为Int32)。 这也适用于“对象”和十数。

理论上,这可能有助于将代码转移到某些未来的64位标准,其中“int”可能意味着Int64,但这不是问题,我会期望任何升级巫师将改变任何int引用到Int32无论如何只是安全。

最好的答案我曾经听说过关于使用提供的类型联盟在C#来自Jeffrey Richter在他的书CLR Via C#。

我已经看到一些开发人员混淆,不知道是否使用线条或线条在他们的代码. 因为在C#的线条(一个关键字)地图准确到System.String(一个FCL类型),没有区别,也可以使用。 在C#,长地图到System.Int64,但在不同的编程语言,很长时间可以地图到Int16或Int32. 事实上,C++/CLI实际上处理很长时间作为Int32. S

BinaryReader br = new BinaryReader(...);
float val  = br.ReadSingle(); // OK, but feels unnatural
Single val = br.ReadSingle(); // OK and feels good

所以你有它,我认为这些都是很好的点,但是,我找不到自己在自己的代码中使用杰弗里的建议,也许我太困在我的C#世界里,但我最终试图让我的代码看起来像框架代码。

但从编码指南的观点,最好使用字符串而不是字符串,这就是开发人员通常使用的。 例如,而不是使用 Int32 我们使用 int 作为 int 是 alias 到 Int32

FYI “关键字行仅仅是预先定义的类 System.String 的名称” - C# 语言规格 4.2.3 http://msdn2.microsoft.com/En-US/library/aa691153.aspx