25

据我所知,类的任何静态成员都可以从相关的原始数据类型访问String或访问。Int32所以,String.Format与 相同string.Format,与Int32.MaxValue相同int.MaxValue

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

编辑:既然它们是相同的,从人类的角度来看是首选吗?您更愿意看String.Format还是string.Format在阅读别人的代码时?

4

8 回答 8

43

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

例如:

  • int是一个别名System.Int32
  • string是一个别名System.String

您可以在此处的 MSDN 上找到这些别名的完整列表

于 2010-10-22T21:10:47.963 回答
12

这些不是相关的原始数据类型。它们只是 C# 中可用的简写。string别名System.Stringint别名System.Int32。调用int.MaxValue 调用Int32.MaxValue。C# 只允许您以类似于使用另一种类 C 语言时所键入的简写形式键入它。

于 2010-10-22T21:12:11.987 回答
8

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

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

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

在其他几个地方您必须使用别名;除此之外,它主要是风格。以下两条规则被普遍接受,也许第一条多于第二条:

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

它们是相同的。string和分别是和int的语法别名。StringInt32

于 2010-10-22T21:10:47.230 回答
3

string 不是原始类型,而只是 String 的别名。他们是一样的东西。

于 2010-10-22T21:10:57.030 回答
3

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

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

于 2010-10-22T21:13:06.243 回答
3

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

为了回答您问题的第二部分,这是一个意见问题,出于多种原因,我更喜欢int大写string

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

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

于 2010-10-22T21:46:20.333 回答
0

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

于 2020-02-13T14:02:43.147 回答