为什么不能通过表达式引用类型
本文关键字:表达式 引用类型 不能 为什么 | 更新日期: 2023-09-27 18:14:01
下面的代码似乎是不可能编译无论我多么努力地试图cast它:p可以有人告诉我我做错了什么?
public class LUOverVoltage
{
public string Name { get; set; }
public enum OVType { OVLH, OVLL }
public List<string> PinGroups = new List<string>();
public void Add(string name, OVType type, string Grp)
{
this.Name = name;
this.OVType = type; //Why cannot reference a type through an expression?
PinGroups.Add(Grp);
}
}
您混淆了枚举类型的字段和枚举类型本身。你的代码和说string="bla"
一样有用。
public enum OVType { OVLH, OVLL }
public class LUOverVoltage
{
public string Name { get; set; }
public OVType OVType { get; set; }
声明了一个名为OVType
的类型和一个同名的属性。现在你的代码应该可以工作了。
作为旁注,你的类型名和属性名都违反了。net的命名准则。
我将枚举类型命名为OverVoltKind
,属性命名为Kind
。
您不是在设置属性,而是在尝试设置enum。
添加public OVType ovType
,使用this.ovType = type
。
public class LUOverVoltage
{
public enum OVType { OVLH, OVLL }
public string Name { get; set; }
public OVType ovType;
public List<string> PinGroups = new List<string>();
public void Add(string name, OVType type, string Grp)
{
this.Name = name;
this.ovType = type;
PinGroups.Add(Grp);
}
}
您已经在类中定义了一个Enum
。您没有做的是声明一个变量来保存该enum的实例。
public enum OVType { OVLH, OVLL }
public class LUOverVoltage
{
public string Name { get; set; }
public OVType OVType { get; set; }
public List<string> PinGroups = new List<string>();
public void Add(string name, OVType type, string Grp)
{
this.Name = name;
this.OVType = type; // setting the property, not the enum definition
PinGroups.Add(Grp);
}
}
OVType -不是一个字段,它是一个类型
试试这个
public class LUOverVoltage
{
public string Name { get; set; }
public OVType Type {get; set;}
public enum OVType { OVLH, OVLL }
public List<string> PinGroups = new List<string>();
public void Add(string name, OVType type, string Grp)
{
this.Name = name;
this.Type = type;
PinGroups.Add(Grp);
}
}
OVType
是变量的类型。您已经将其设置为enum,这是用于声明新枚举类型的关键字。您需要将OVType声明为enum类型,然后将其用作属性类型。
public enum OVType { OVLH, OVLL }
public class LUOverVoltage
{
public string Name { get; set; }
public OVType OVType { get; set; }
public List<string> PinGroups = new List<string>();
public void Add(string name, OVType type, string Grp)
{
this.Name = name;
this.OVType = type;
PinGroups.Add(Grp);
}
}