gpt4 book ai didi

c# - 开关语句 : "a constant value is expected"

转载 作者:行者123 更新时间:2023-11-30 18:51:49 25 4
gpt4 key购买 nike

目前我正在与“神奇的字符串”问题作斗争:

public class MyDataField
{
// class definition
}

// exuecuted method
public void SwitchMultipleDataFields()
{
var myField = new MyDataField();
switch(myField.GetType().ToString())
{
// only case, which works
case "MyDataField":
// case operations
break;

// other option:
case typeof(MyDataField).ToString():
// case operations
break;

// other cases of other FieldTypes
}
}

现在我收到了我在主题标题中写的错误消息。我认为问题是这个字符串在“非编译时”时不是常量。因此,询问 switch this 的唯一可能方法是通过显式确定该 case 字符串的值。我的问题只是,如果我重命名 MyDataField 类,我不会收到编译错误。所以这些类中的 90% 无论如何都是通用的。这些在 switch 语句的 default 中处理。除了显式确定 case 值的值之外,还有其他方法吗?

请不要争论这个方法的意义。我刚刚写的是为了以更简单的方式说明我的问题

最佳答案

只需使用一个if:

Type type = myField.GetType();
if (type == MyDataField.GetType())
{

}
else if (type.ToString() == "MyDataField")
{

}
else
{

}

您甚至不需要比较类型名称,而是直接比较 Type 对象(引用)。

关于c# - 开关语句 : "a constant value is expected",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9004811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com