如何在C#中定义ASCII 127的字符或字符串常量?

4

如何创建一个包含ASCII 127单个字符的char或string常量?

// Normal printing character - no problems
const char VPIPE = '|';
//error "The expression being assigned to 'DEL' must be constant"
const char DEL = new string(127, 1); 

如果常量是字符串而不是字符,也可以:

const string VPIPE = "|";
const string DEL = "???";

我知道ASCII 127不是你可以在键盘上“输入”的内容,但一定有方法可以从中创建字符串或字符常量(或使用我尚未找到的内置常量)。


我相信你可以在构造函数中初始化一个常量。 - Chris Laplante
4个回答

12

我个人会使用“\u”转义序列:

const char Delete = '\u007f';
我不太喜欢其他地方提到的"\x"转义序列 - 它在字符字面量中不太糟糕(其中多个字符=>编译器错误),但对于字符串字面量来说可能会很麻烦:
// Tab the output
Console.WriteLine("\x9Good line");
Console.WriteLine("\x9Bad line");

如果您能在这里看到错误,那么您有多么确定自己在进行“快速更改”时会避免它?

考虑到我正在避免使用字符串文字,我认为保持一致并且只是在想要转义十六进制值的地方使用 "\u" 是有意义的。


很好的回答,Jon,我同意(我确实看到了9G和9B之间的错误。我讨厌这样的隐藏错误)。顺便说一句,天啊!那是你真实的分数吗?!?你是这个网站的创始人之一吗,还是从1972年就在这里了?哈哈。 - Flipster
@FlipScript:别忘了这是一个Unicode的世界...后者实际上会使用Unicode U+9BAD :) 那是我的真实得分,而我甚至不在测试版中。虽然我确实发布了“相当多”的帖子 :) - Jon Skeet

9

'\x7F'可以实现这一点(如果需要,它也可以嵌入到字符串中)。


1
避免使用\x转义序列的原因请参阅我的答案。 - Jon Skeet

7

试试这个

 const char s = ((char)127);

谢谢Exoas。在看到你的回复之前我已经搞定了。谢谢! - Flipster
抱歉,接受晚了。我以为在发布评论时已经接受了... - Flipster

2

没关系。我有点过于急躁了。

const char DEL = (char)127;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接