【问题标题】:Int32.Parse vs int.ParseInt32.Parse 与 int.Parse
【发布时间】:2012-04-26 15:07:42
【问题描述】:

通常的做法是使用 C# 类型别名而不是 CTS System.* 类型(int 而不是 Int32string 而不是 String)。但是,我不清楚在这种情况下使用什么来调用类型的静态方法:别名或系统类型。

Microsoft 似乎没有定义任何使用别名而不是系统类型的指南。但在 MSDN 中,别名用于变量,而 CTS 等效项用于静态调用。例如MSDN: Parsing Numeric Strings

int number;
Int32.TryParse(value, out number);

StyleCop 在SA1121 中定义相反的——总是使用别名。所以int.Parse 可以,而Int32.Parse 不行。

这个问题是风格问题(在我看来)。但我不明白为什么要使用 CTS 类型进行静态调用。

【问题讨论】:

  • 我会同意 StyleCop 的建议。

标签: c# coding-style


【解决方案1】:

我个人总是对静态方法调用使用完整的类名。这强调了这样一个事实,即它们实际上是包含代码片段的类,而不是别名所暗示的最简单的可能(原始)数据。

我总是为变量使用别名。

【讨论】:

  • 一直在修改我的问题,发现这不被接受。您的回答给出了做Int32.Something 的合理解释。虽然我更喜欢另一种方式:)
【解决方案2】:

绝对没有技术差异,只是编码风格。我个人主张int.Parse,但也有很多知名的experts 倾向于相反。

【讨论】:

  • 我更喜欢Int32.Parse,但我不是专家。 :)
  • @Default 不,你只是不知名。 :-)
  • 我很想知道使用别名背后的原因是什么。我知道使用全名背后的原因(请参阅我的回答),但我从未听说过使用别名的原因。
  • @Stilgar 使用别名背后的推理只是在任何地方都使用别名。此外,long var = Int64.Parse("1"); 不如 long var = long.Parse("1"); 直观
  • @Stilgar:我真的不会说 推理。恕我直言,您提供的理由没有真正的实质。我听说我可以同意的一个原因是,例如Int64 可以立即明确类型的宽度,而 long 则不会。如果您认为确实如此,请询问 C++ 开发人员他们的想法。
【解决方案3】:

我强烈建议使用int.Parse(...) 而不是int32。如果您想象某人 阅读您在 64 位机器上运行它的代码,他很可能不知道 int32int 只是 别名,这会使他做出错误的假设。

换句话说,即使从功能的角度来看没有任何区别,为了避免代码中的歧义(参考大概是 32 位代码)我建议使用int.Parse(..)

【讨论】:

  • 这与静态方法无关,因为数据的大小与变量有关,而不与方法调用有关。事实上你可以做 long i = int.Parse(...)。更重要的是,您将如何证明 String.IsNullOrEmpty 与 string.IsNullOrEmpty 的合理性?
  • @Stilgar:我不是在谈论任何形式的数据。我说的是名称:int32 与 int。变量、变量大小、访问器类型和所有其他内容与这篇文章无关。
猜你喜欢
  • 2019-03-15
  • 1970-01-01
  • 1970-01-01
  • 2022-11-14
  • 1970-01-01
  • 2013-03-31
  • 2010-10-12
  • 1970-01-01
  • 2015-09-20
相关资源
最近更新 更多