例如:
string s = "Hello world!";
String S = "Hello world!";两种字符串应该如何使用?并且他们之间的差异是什么?
发布于 2018-02-07 01:17:37
string是C#中System.String的别名。所以从技术上讲,没有什么区别。就像intv.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
复制相似问题