namespace TaskBarPlus {
public partial class Form2 : Form {
public Form2() {
InitializeComponent();
}
public class General {
public enum ProcessPriority { Low = 0, Normal = 1, High = 2 }; ProcessPriority _Priority;
[Category("Settings"), DisplayName("Application Priority")] public ProcessPriority Priority {
get { return _Priority; }
set {
_Priority = value;
switch (value) {
case 0: Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.Idle;
case 1: Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.Normal;
case 2: Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.High;
}
}
}
}
private void Form2_Load(object sender, EventArgs e) {
General general = new General();
propertyGrid1.SelectedObject = general;
}
}
}
错误无法将类型'int'隐式转换为 'Form2.General.ProcessPriority'。存在显式转换(是 你错过了一个演员?)
答案 0 :(得分:2)
为什么不在switch语句中使用实际的枚举值
public class General {
public enum ProcessPriority { Low = 0, Normal = 1, High = 2 };
ProcessPriority _Priority;
[Category("Settings"), DisplayName("Application Priority")]
public ProcessPriority Priority {
get { return _Priority; }
set {
_Priority = value;
switch (value) {
case ProcessPriority.Low:
Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.Idle;
break;
case ProcessPriority.Normal:
Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.Normal;
break;
case ProcessPriority.High:
Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.High;
break;
}
}
}
}
异常消息指出将整数隐式转换为ProcessPriority无效。这是有道理的,因为ProcessPriority priority = -423
在ProcessPriority的上下文中没有多大意义。由于您明确知道了这些值,因此可以选择强制转换整数
case (PriorityClass) 1:
或者
int priorityVal = (int) value;
switch (priorityVal) {
case 0:
....
}
答案 1 :(得分:0)
这是因为你的财产Priority
的类型为ProcessPriority
,如下所示
public ProcessPriority Priority {
value is ProcessPriority
和您Switch
中的case 0
0
Int32
属于switch(value)
{
case ProcessPriority.Idle:
....
}
类型。
你应该说像
UDP listener