例如:
string s = "Hello world!";
String S = "Hello world!";
两种字符串应该如何使用?并且他们之间的差异是什么?
发布于 2018-02-07 01:17:37
string
是C#中System.String
的别名。所以从技术上讲,没有什么区别。就像int
v.V.System.Int32
...
一般情况下,我建议在使用string
来引用对象。
例如:
string place = "world";
如果你需要特指这个类的话,我建议使用String
。
例如:
string greet = String.Format("Hello {0}!", place);
不过这些情况有可能发生改变,因为StyleCop现在强制使用C#特定的别名。
发布于 2018-02-07 02:54:22
string
的别名System.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
除了string
和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
中都很好的例子出现。
发布于 2018-02-07 03:41:44
String
代表System.String
并且这是一个.NET框架类型。string
在C#语言中化名System.String
.在IL中(中间语言),这两种方法都被汇编成System.String
,所以没有区别。如果你用C#编写代码,我更希望是string,
因为它是一个C#类型别名,并且被C#程序员所熟知。
或者说是(int
,System.Int32
)。
https://stackoverflow.com/questions/-100003174
复制相似问题