合并字符常量和字符串文字以创建另一个常量

时间:2016-05-17 19:04:51

标签: c# .net vb.net vb.net-to-c#

我现在主要在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#中做到这一点?

2 个答案:

答案 0 :(得分:49)

  

我有没有理由在C#中做到这一点?

是的,但你不会喜欢它。 char + string中涉及的字符串连接涉及在ToString()上隐式调用char。这不是你在常数表达中可以做的事情之一。

如果你把它们都串起来,那很好:

const string FileExtensionSeparator = ".";
const string BillingFileTypeExtension = FileExtensionSeparator + "BIL";

现在是string + string连接,在常量表达式中很好。

替代方法是仅使用static readonly字段:

const char FileExtensionSeparatorCharacter = '.';
static readonly string BillingFileTypeExtension = FileExtensionSeparatorCharacter + "BIL";

答案 1 :(得分:19)

我必须假设在字符串中添加字符不被视为编译时常量,而是一个运行时操作。如果将FileExtensionSeparatorCharacter的类型更改为string,则编译就可以了。

const string FileExtensionSeparatorCharacter = ".";
const string BillingFileTypeExtension = FileExtensionSeparatorCharacter + "BIL";