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

时间:2010-10-22 21:09:18

标签: c# static primitive

据我所知,类似StringInt32的任何静态成员也可以从相关的原始数据类型访问。因此,String.Formatstring.Format相同,Int32.MaxValueint.MaxValue相同。

这两种形式有区别吗?一个人比另一个更受欢迎吗?即使它们相同,人们通常认为它们更具可读性吗?

编辑:因为它们是相同的,从人的角度来看是首选吗?在阅读其他人的代码时,您希望看到String.Formatstring.Format吗?

8 个答案:

答案 0 :(得分:41)

没有区别,这些是.Net框架类型的C#中的类型别名,你在下面调用相同的方法。

例如:

  • intSystem.Int32
  • 的别名
  • stringSystem.String
  • 的别名

You can find a complete list of these aliases on MSDN here

答案 1 :(得分:11)

那些不是相关的原始数据类型。它们只是C#中可用的短序。 string别名System.Stringint别名System.Int32。致int.MaxValue 的电话是对Int32.MaxValue电话。 C#只允许您以类似于您在其他类似C语言中键入的内容进行类型化输入。

答案 2 :(得分:8)

大多数答案一般都有。但是,在某些情况下需要别名。在我的头顶:

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

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

还有其他几个地方你必须使用别名;除此之外,它主要是风格。通常接受以下两个规则,可能是第一个超过第二个规则:

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

答案 3 :(得分:4)

他们是完全相同的。 stringint分别是StringInt32的语法别名。

答案 4 :(得分:3)

请注意,如果您进入IDE并将鼠标悬停在string上,您将看到它由System.String定义

这是一个“别名”......有一件事是另一件事的简写。 int是Int32的别名,byte是Byte的别名,char是Char的别名,依此类推。

答案 5 :(得分:3)

可互换性的一个有趣证明就是IDE本身 开始输入List<String> list = new,然后查看IntelliSense的建议:List<string>。它甚至不会将List<String>作为选择之一。

要回答您的问题的第二部分,这是一个意见问题,我更倾向于intstring而不是大写:

  • 明亮的蓝色更明确,如果您正在快速阅读代码,则不能将类别名称误认为是其他内容
  • 我需要按SHIFT +键的次数越少,我输入的速度就越快
  • IntelliSense将自动完成小写名称,即使你以大写字母开头,所以对我来说,在同一行中看到同一类的大小写版本,或者甚至在相同的行中,这在美学上是令人不愉快的项目
  • 类型int本质上非常简单,我不愿意强迫我的眼睛将其与大写字母和名称中的两个数字联系起来(即Int32);它使它看起来太具体而没有明显的原因

我的一位同事特意使用Int32String确保与未来的.NET更新兼容;我不同意完全说出来的人。请证明我错了!

答案 6 :(得分:2)

string不是基本类型,而只是String的别名。他们是一回事。

答案 7 :(得分:0)

String.Format()需要“使用系统”;但是string.Format()没有。