【发布时间】:2016-09-14 00:55:47
【问题描述】:
这些天我主要使用 C# 编写代码,但多年来我一直使用 VB.NET 编写代码。在 VB 中,我可以将一个字符常量和一个字符串文字组合起来创建其他常量,这非常方便:
Const FileExtensionSeparatorCharacter As Char = "."c
Const BillingFileTypeExtension As String = FileExtensionSeparatorCharacter & "BIL"
现在我想在 C# 中做同样的事情:
const char FileExtensionSeparatorCharacter = '.';
const string BillingFileTypeExtension = FileExtensionSeparatorCharacter + "BIL";
但这会给我一个编译器错误:
分配给“BillingFileTypeExtension”的表达式必须是 常数
我在 C# 中不能这样做有什么原因吗?
【问题讨论】:
-
FileExtensionSeparatorCharacter是一个糟糕的变量名。为什么不FileExtensionSeparator,或者最好的FileExtSep? -
不确定我对 Visual Studio 的体验是否是典型的,但我只在声明期间输入完整的变量名称。每隔一次,我只是将键盘和我想到的变量混合在一起,神奇地自动完成。
-
不错的投反对票神秘客人先生。尽管问题的原因是一个简单的开发人员错误,但这仍然是一个合理的问题。如果开发人员习惯于 VB.NET,这是一种通常更“悠闲”的语言,可能会出现这样的问题。
-
我认为人们经常混淆投票的目的。人们认为“愚蠢”的问题——例如。这个人非常缺乏经验,并且提出的问题对于更有经验的人来说是显而易见的答案 - 通常在不应该发生的情况下被否决。在这种情况下,我敢打赌,投反对票的选民读了这个问题,不知道答案,读了答案,然后就像“哦,是的......呃,这有道理......多么愚蠢的问题”和投了反对票。
-
@cat 因为第一个前者的歧义为零。很难混淆冗长的标识符,因为它很容易阅读,因为我们是英语读者,首先是代码阅读者。 FileExtSep 是仅次于“FES”的第二差。
标签: c# .net vb.net vb.net-to-c#