String.Format与string.Format(以及其他基元数据类型的静态成员)之间有什么区别?

26
据我所知,类的任何静态成员,例如 StringInt32,也可以从相关的基本数据类型中访问。因此,String.Formatstring.Format 相同,Int32.MaxValueint.MaxValue 相同。
这两种形式之间有区别吗?有偏好的吗?即使它们相同,其中一种是否通常被认为更易读?
编辑:由于它们相同,从人类的角度来看,哪种更受欢迎?在阅读别人的代码时,你更愿意看到 String.Format 还是 string.Format
8个回答

48

很酷,我喜欢这个。谢谢你提供链接! - Matthew
1
学习C#时,我有点困惑为什么会存在'string'和'String'两种类型。当我意识到如果删除'using System;'这行代码后,'String'就变成无效类型时,这让我更好地理解了它们的区别。 - Detmar

13

它们不是相关的原始数据类型。它们只是 C# 中可用的简写方式。stringSystem.String 的别名,intSystem.Int32 的别名。对 int.MaxValue 的调用实际上是对 Int32.MaxValue 的调用。C# 只是允许您使用类似于其他类 C 语言的速记方式。


8

大多数答案都是一般性的。然而,有些情况下需要使用别名。举个例子:

public enum MyEnum:Byte {...} //will not compile

public enum MyEnum:byte {...} //correct

除此之外,还有几个地方需要使用别名;除此之外,大多数情况下只是风格问题。以下两条规则通常被接受,第一条比第二条更为普遍:

  • 对于所有定义变量或成员类型(声明、参数、强制转换、泛型类型闭包)的用法,请使用别名(小写关键字)。
  • 对于静态上下文中类型的所有用法(调用静态方法,如解析器或字符串操作方法,或静态属性如MinValue/MaxValue),请使用类型名称(PascalCased类标识符)。

5
它们是相同的。 stringint 分别是 StringInt32 的语法别名。

3

字符串不是原始类型,而只是String的别名。它们是同一件事。


3
请注意,如果您进入IDE并将鼠标悬停在string上方,您将看到它由System.String定义。
这是一个“别名”...一件事情是另一件事情的简写。int是Int32的别名,byte是Byte的别名,char是Char的别名,依此类推。

3
一个有趣的证明它们是可以互换的就是IDE本身。
开始输入 List<String> list = new,然后看看IntelliSense的建议:List<string>。它甚至不会给你List<String>作为选择之一。
回答您问题的第二部分,这是一个意见问题,我更喜欢用小写字母的intstring,原因如下:
  • 明亮的蓝色更具决定性,如果您快读代码,则不会将类名误认为其他内容
  • 我需要少按 SHIFT+键的次数,我打字也就越快
  • IntelliSense将自动完成小写名称,即使您以大写字母开头,因此在同一行甚至在同一项目中看到相同类的大写和小写版本对我来说是美学上令人不愉快的
  • 类型int本质上非常简单,我不想强迫我的眼睛将其与具有大写字母和两个数字的名称(即Int32)关联起来;它看起来太具体了,没有显而易见的原因
我的一个同事说专门使用Int32String可以确保与未来的.NET更新兼容;我完全不同意那些说法。请证明我错了!

0

String.Format()需要"using Systems;",但string.Format()不需要。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接