B. *_*non 11 .net c# switch-statement
使用此代码:
public partial class Form1 : Form
{
private static readonly int TABCONTROL_BASICINFO = 0;
private static readonly int TABCONTROL_CONFIDENTIALINFO = 1;
private static readonly int TABCONTROL_ROLESANDSECURITY = 2;
private static readonly int TABCONTROL_INACTIVEINFO = 3;
. . .
int ActiveTabPage = tabControlWorker.SelectedIndex;
switch (ActiveTabPage) {
case TABCONTROL_BASICINFO:
if (currentNode == "NodeBuckingham") {
} else if (currentNode == "NodeNamath") {
} else if (currentNode == "NodeParsons") {
} else {
}
break;
Run Code Online (Sandbox Code Playgroud)
...我必须用"0"替换"TABCONTROL_BASICINFO",或者我得到"预期值为常数"
天堂到Murgatroyd!不能查看并看到TABCONTROL_BASICINFO为0?
Jon*_*eet 21
如果要在编译器方面使其成为常量表达式,请将其声明为const:
// Note that static readonly is implied here
private const int TABCONTROL_BASICINFO = 0;
Run Code Online (Sandbox Code Playgroud)
或者遵循.NET命名约定......
private const int TabControlBasicInfo = 0;
Run Code Online (Sandbox Code Playgroud)
或者使用枚举,因为你基本上得到了一组固定的值:
private enum TabControlType
{
// Could ditch the explicit values here if you want
BasicInfo = 0,
ConfidentialInfo = 1,
...
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,你也可以在C#中打开字符串,所以这个:
if (currentNode == "NodeBuckingham") {
} else if (currentNode == "NodeNamath") {
} else if (currentNode == "NodeParsons") {
} else {
}
Run Code Online (Sandbox Code Playgroud)
可以变成:
switch (currentNode) {
case "NodeBuckingham":
...
break;
case "NodeNamath":
...
break;
case "NodeParsons":
...
break;
default:
...
break;
}
Run Code Online (Sandbox Code Playgroud)
Eri*_* J. 13
甲readonly变量不是一个常数.该值在编译时是未知的,而是可以在声明中(如您所做)或在类构造函数(在本例中为您的类的静态构造函数)中初始化.
欲了解更多
http://msdn.microsoft.com/en-us/library/acdd6hb7(v=vs.71).aspx
您可以将其更改为:
private const int TABCONTROL_BASICINFO = 0;
Run Code Online (Sandbox Code Playgroud)
除非您需要计算某些内容来初始化变量,否则请将其声明为const.它会稍微高效一点.
这不是一个常数; 它是一个只读变量.如果您希望它是常量,则将其标记为常量.
private const int TabControlBasicInfo = 0;
Run Code Online (Sandbox Code Playgroud)
甚至更好:
private enum TabControl
{
BasicInfo,
...
}
...
switch(whatever)
{
case TabControl.BasicInfo:
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9975 次 |
| 最近记录: |