好吧,这可能是一个愚蠢的问题,但我还没有找到任何关于它的信息。
是字符串。空和字符串。空的一样吗?我总是发现自己倾向于使用大写版本(String.Empty),因为我更喜欢IDE中的颜色和外观,而不是小写版本(String.Empty)……
是否有一种"正确"的方式来使用这些不同的或完全取决于个人偏好?这是我的假设,他们都是一样的,但说实话,我从来没有想过这一点,直到今天,不管出于什么原因,我想"如果他们都存在,他们一定都有存在的理由"。
有谁知道其中的原因吗?如果有,是什么?有人能告诉我吗?
附注:"完全相同的复制品"只回答了问题的一半——"哪个是对的?",而不是"他们为什么都存在?"
完全复制:c#中的String和String之间有什么区别?
完全复制:c#中的字符串与字符串
- 被问了好几次。在提交新问题之前,可能希望搜索常见的、可能被问到的问题。
- 我已经查过了之前问过的问题的清单,但都没有提出来。谢谢你指出这些。非常有用的。
- 附注:那些"完全相同的副本"只回答了我问题的一半——"哪条路是正确的?"我的问题的另一半是"为什么它们都存在?"这两个答案都不是"完全相同的"。
- 我还发现使用谷歌作为Stackoverflow的搜索引擎要比在这个站点上实现的SQL全文本搜索好得多。表示"c#站点中的字符串和字符串之间的区别:stackoverflow.com"。我发现谷歌有更好的效果
- 好建议,我从没想过…
- 我也不想打断你的问题。我只是想尽量减少重复,尽可能让它们都指向现有的帖子。
- 我同意把各种各样的问题联系起来是件好事。它使跨相似主题的研究变得容易得多。
- 因为没有人提到它,所以我犹豫了一下,但我也认为它们是别名(就像已经指出的那样),int是Int32的别名……现在。在未来,别名可以重定向到Int64,例如,所有的int将不需要更新,但所有的Int32将需要更新到Int64,如果这是想要的。
在c#中,小写类型名是System.xxx类型名的别名,例如string = System.String和int = System.Int32。
为了保持一致性,最好将这些语言别名用于类型名称,而不是用于它们的框架等效名称。所以你做错了。:-)
由于它们都存在的原因,. net类型的存在是因为它们是在一个称为CTS(公共类型系统)的. net库的独立于语言的标准中定义的。为什么c#会定义这些别名,我无法理解(VB也做了类似的事情)。我想有两个原因
习惯。通过为一些基本类型提供相同的类型名,让所有这些C和Java程序员都使用c#。惰性:您不需要导入
System名称空间来使用它们。
编辑,因为很多人似乎更喜欢另一种表示法,让我指出,这绝不是不合理的。实际上,使用CTS类型名而不是c#的关键字是一个很好的例子,其他答案中提供了一些表面上很好的参数。从纯粹/风格的角度来看,我可能会同意。
不过,请考虑是否值得打破有助于跨项目统一代码的良好约定。
- 不,他"倾向于使用大写版本(String.Empty)",因此按照你的说法做错了……
- 您的意思是说不使用这些别名是最佳实践吗?
- 此外,我宁愿不键入Int32而不是int。
- 我倾向于在声明类型时使用别名,在调用静态成员时使用实际名称。int foo, String。空和Int32。对我来说解析。
- 该死,我看错问题的这一部分了。是的,实际上,通常的做法规定使用小写变体。
- 微软还推荐编程实践使用别名版本的数据类型。
- 嗯,我不知道。我使用类名是因为我喜欢这种颜色,因为int看起来不像一个类,而且我们正在调用一个静态方法。
它在概念上类似于这样的东西:
- 嗯,看起来我太慢了:)
- 因此,如果恰好需要32位,根据您正在做的操作,您可能希望使用Int32而不是int。我认为int可能不能保证它总是32位的,否则就没有理由使用关键字。
- 不,是的。来自c#规范:?int类型表示带符号的32位整数,其值介于-2147483648和2147483647之间。int是Int32的别名。
string被映射到string类AFAIK,所以它们是相同的。
对于int和Int32也是如此。
就我个人而言,我更喜欢使用String,因为String和Object都是引用,而所有其他基类型都是值类型。在我的脑海里,那是最清晰的分离。
- 这不是真的。字符串和系统。字符串是一样的:msdn.microsoft.com/en- us/library/ms228366 .aspx
- 埃文听不懂沙尔曼内斯说的话……这个答案并不是说它们不一样,只是字符串(和字符串)是引用,而不是值类型。
- 为了避免传播错误信息,需要说明的是:String在内部实现为引用类型,但在使用时它表现为值类型(因此应该使用与int、bool等相同的命名约定)。有关示例,请参见链接。
- 就我个人而言,我更喜欢小写字符串,但这个答案给出了一个很好的观点。string是引用类型,也是不可变的,所以使用与值类型相同的约定有点奇怪。
它们都是一样的。
就我个人而言,我更喜欢使用小写字符串"blue one",使用c#关键字而不是. net类名,原因与我使用int而不是Int32相同。此外,小写的不需要包含系统名称空间……