问题
这两者有什么区别,我应该使用哪一个?
string s = "Hello world!"; String s = "Hello world!";
解答
string
是 C# 中System.String
.
所以从技术上讲,没有区别。就好像int
对 System.Int32
..
就指南而言,通常建议在string
您引用对象时使用。
例如
string place = "world";
同样,我认为String
如果您需要专门引用该类,通常建议使用它。
例如
string greet = String.Format("Hello {0}!", place);
这是 Microsoft 在其示例中倾向于使用的样式。
正如其他人所指出的,string
是System.String
. 假设您的代码 usingString
编译为System.String
(即您没有针对其他具有不同String
类型的名称空间的 using 指令),它们编译为相同的代码,因此在执行时没有任何区别。这只是 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
除了string
and之外object
,别名都是值类型。decimal
是值类型,但不是 CLR 中的基本类型。唯一没有别名的原始类型是System.IntPtr
.
在规范中,值类型别名被称为“简单类型”。文字可用于每个简单类型的常量值;没有其他值类型具有可用的文字形式。(将其与 VB 进行比较,它允许DateTime
文字,并且也有一个别名。)
在一种情况下您必须使用别名:显式指定枚举的基础类型时。例如:
public enum Foo : UInt32 {} // Invalid
public enum Bar : uint {} // Valid
这只是规范定义枚举声明的方式的问题——冒号之后的部分必须是整数类型的sbyte
产生式,它是, byte
, short
, ushort
, int
, uint
, long
, ulong
, ...的一个标记,char
而不是类型产生式例如,由变量声明使用。它不表示任何其他差异。
最后,谈到使用哪个:我个人在实现中到处都使用别名,但对任何 API 都使用 CLR 类型。在实施方面使用哪个并不重要 - 团队之间的一致性很好,但没有其他人会关心。另一方面,真正重要的是,如果您在 API 中引用类型,则以语言中立的方式进行。调用的方法ReadInt32
是明确的,而调用的方法ReadInt
需要解释。例如,调用者可能正在使用为 定义int
别名的语言Int16
。.NET 框架设计者遵循了这种模式,在BitConverter
,BinaryReader
和Convert
类中就是很好的例子。
来自:https://stackoverflow.com/questions/7074/what-is-the-difference-between-string-and-string-in-c
标签:String,C#,System,别名,使用,类型,string From: https://www.cnblogs.com/djd66/p/16924599.html