为了账号安全,请及时绑定邮箱和手机立即绑定

C#中字符串和字符串有什么区别?

C#中字符串和字符串有什么区别?

撒科打诨 2019-05-28 17:45:40
C#中字符串和字符串有什么区别?示例(注意案例):string s = "Hello world!";String s = "Hello world!";每种使用的准则是什么?有什么区别?
查看完整描述

4 回答

?
达令说

TA贡献1821条经验 获得超6个赞

String代表System.String它,它是.NET Framework类型。string C#语言中 的别名System.String。它们都编译成System.StringIL(中间语言),所以没有区别。选择你喜欢的并使用它。如果您使用C#编写代码,我更喜欢string它,因为它是C#类型的别名,并且是C#程序员所熟知的。

我可以对intSystem.Int32等说同样的话。


查看完整回答
反对 回复 2019-05-28
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

我听说过在C#中使用提供的类型别名的最佳答案来自Jeffrey Richter在他的书“ CLR Via C#”中。以下是他的3个理由:

  • 我看到许多开发人员感到困惑,不知道是否在他们的代码中使用字符串字符串。因为在C#中,字符串(关键字)完全映射到System.String(一种FCL类型),所以没有区别,任何一种都可以使用。

  • 在C#中,映射到System.Int64,但是在不同的编程语言中,long可以映射到Int16Int32。事实上,C ++ / CLI确实将long视为Int32。如果某人使用一种语言阅读源代码,如果他或她习惯于使用不同的编程语言进行编程,则很容易误解代码的意图。事实上,大多数语言甚至不会将long视为关键字,也不会编译使用它的代码。

  • FCL有许多方法,它们将类型名称作为其方法名称的一部分。例如,BinaryReader类型提供诸如ReadBooleanReadInt32ReadSingle等方法,而System.Convert类型提供诸如ToBooleanToInt32ToSingle等方法。虽然编写下面的代码是合法的,但浮点线对我来说感觉非常不自然,并且线条不正确并不明显:

BinaryReader br = new BinaryReader(...);float val  = br.ReadSingle(); // OK, but feels unnaturalSingle val = br.ReadSingle(); // OK and feels good

所以你有它。我认为这些都是非常好的观点。但是,我发现自己在自己的代码中没有使用Jeffrey的建议。也许我太困在我的C#世界,但我最终试图使我的代码看起来像框架代码。


查看完整回答
反对 回复 2019-05-28
  • 4 回答
  • 0 关注
  • 1188 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信