这两者之间有什么区别,我应该使用哪一个?
string s = "Hello world!";
String s = "Hello world!";
这两者之间有什么区别,我应该使用哪一个?
string s = "Hello world!";
String s = "Hello world!";
当前回答
下面的案例字符串是 System.String 的标志,它们在 C# 中是相同的。
有一个讨论是否应该使用系统类型(System.Int32,System.String等)类型或C#联盟(int, string等)。我个人认为你应该使用C#联盟,但这只是我的个人偏好。
其他回答
我更喜欢使用线条,因为这种类型是如此使用,我不希望合成亮度将其与所有其他类混合。虽然它是一个类,它被使用更像原始,所以我认为不同的亮度颜色是合适的。
如果你正确点击字符串的关键字,然后从背景菜单中选择去定义,它会带你到字符串类 - 它只是合成糖,但它提高了可读性 imo。
.NET 类型与其他对象类型相同的颜色(值类型是合适的对象,毕竟)。
条件和控制的关键词(如如果,交换和返回)是下层和彩色黑蓝色(默认情况下)。
考虑一下:
String someString;
string anotherString;
这是一个协议问题,真的. 字符串只是看起来更像C/C++风格. 通用协议是使用你所选择的语言提供的任何缩写(int/Int为Int32)。 这也适用于“对象”和十数。
理论上,这可能有助于将代码转移到某些未来的64位标准,其中“int”可能意味着Int64,但这不是问题,我会期望任何升级巫师将改变任何int引用到Int32无论如何只是安全。
只是为了完整性,这里是一个与相关信息的脑跳动......
正如其他人指出的那样, string 是 System.String 的 alias. 假设使用 String 编译到 System.String 的代码(即您没有使用某些不同的 String 类型的其他名称空间的指令),它们编译到相同的代码,所以在执行时间没有任何差异。
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
在特征中,值类型联盟被称为“简单类型”。字母可以用于每个简单类型的恒定的值;没有其他值类型有字母形式可用。
有一個情況,你必須使用連結:當明確指定一個 enum 的基礎類型。
public enum Foo : UInt32 {} // Invalid
public enum Bar : uint {} // Valid
这只是一个问题,规格如何定义enum声明 - 结尾后的一部分必须是整体类型的生产,这是一个标志的sbyte, byte, short, ushort, int, uint, long, ulong, char......相反的类型的生产,用于变量声明,例如,它不表明任何其他差异。
最好的答案我曾经听说过关于使用提供的类型联盟在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#世界里,但我最终试图让我的代码看起来像框架代码。