我正在将一个Delphi应用程序移植到C#.在其中一个单位中有一个这样的声明:
const IdentChars = ['a'..'z','A'..'Z','_'];
我没有找到类似C#的声明语法.
这是我能想到的最好的:
char[] identFirstChars; // = ['a'..'z','_']; int size = (int)'z' - (int)'a' + 1 + (int)'Z' - (int)'A' + 1 + 1; identFirstChars = new char[size]; int index = 0; for(char ch = 'a'; ch <= 'z'; ch = (char)((int)(ch) + 1)) { identFirstChars[index] = ch; index++; } for (char ch = 'A'; ch <= 'Z'; ch = (char)((int)(ch) + 1)) { identFirstChars[index] = ch; index++; } identFirstChars[index] = '_';
必须有一种更有效的方式.
解决方法
那这个呢?
char[] identFirstChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_".tocharArray();
当然,你可以在你的代码中生成一个数组(这可能可以用更少的行使用Enumerable.Range完成),但我认为在你的情况下它不值得.