String和C#中的字符串有什么区别?

示例(注意案例):

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

什么是使用每个指导原则 ? 有什么区别


string是C#中System.String的别名。
从技术上讲,没有区别。 这就像intSystem.Int32

就指导原则而言,通常建议您在引用某个对象时使用string

例如

string place = "world";

同样,我认为一般建议使用String如果你需要特别提到该类。

例如

string greet = String.Format("Hello {0}!", place);

这是微软在他们的例子中倾向于使用的风格。


看起来这个领域的指导可能已经改变了,因为StyleCop现在强制使用C#特定的别名。


为了完整起见,这里是相关信息的大脑转储...

正如其他人所指出的, stringSystem.String的别名。 它们编译成相同的代码,所以在执行时没有任何区别。 这只是C#中的别名之一。 完整的列表是:

object:  System.Object
string:  System.String
bool:    System.Boolean
byte:    System.Byte
sbyte:   System.SByte
short:   System.Int16
ushort:  System.UInt16
int:     System.Int32
uint:    System.UInt32
long:    System.Int64
ulong:   System.UInt64
float:   System.Single
double:  System.Double
decimal: System.Decimal
char:    System.Char

除了stringobject ,别名都是值类型。 decimal是一个值类型,但不是CLR中的基本类型。 唯一没有别名的基本类型是System.IntPtr

在规范中,值类型别名被称为“简单类型”。 文字可以用于每个简单类型的常量值; 没有其他值类型可用文字形式。 (将它与VB相比较,VB允许使用DateTime文字,并且也有它的别名。)

有一种情况需要使用别名:明确指定枚举的基础类型时。 例如:

public enum Foo : UInt32 {} // Invalid
public enum Bar : uint   {} // Valid

这只是规范定义枚举声明的方式问题 - 冒号后的部分必须是整型生产,它是sbytebyteshortushortintuintlongulongchar一个标记。 ..而不是像变量声明所使用的类型生产。 它没有表明任何其他差异。

最后,当涉及到使用哪个API时:我个人使用别名来实现实现,但CLR类型适用于任何API。 在实现方面你使用的确不重要 - 团队之间的一致性很好,但没有其他人会关心。 另一方面,如果你在一个API中引用一个类型,这是非常重要的,你以一种语言中立的方式来实现。 称为ReadInt32的方法是明确的,而称为ReadInt的方法需要解释。 例如,调用者可以使用为Int16定义int别名的语言。 .NET框架设计师遵循这种模式,在BitConverterBinaryReaderConvert类中有很好的例子。


String代表System.String ,它是一个.NET Framework类型。 string System.String的C#语言中的别名 。 它们都被编译为IL (中级语言)中的System.String ,所以没有区别。 选择你喜欢和使用的。 如果你用C#编写代码,我宁愿使用string因为它是C#类型的别名,并且被C#程序员熟知。

我可以说相同的intSystem.Int32等。

链接地址: http://www.djcxy.com/p/21021.html

上一篇: What is the difference between String and string in C#?

下一篇: Passing Reference types by value in C#