具有子类和继承的C#类:在继承的类中设置值
我对C#还比较陌生,所以要温柔。具有子类和继承的C#类:在继承的类中设置值,c#,inheritance,overriding,C#,Inheritance,Overriding,我对C#还比较陌生,所以要温柔。 我的最终目标是有几种不同类型的类用于继承(下面的示例:Level)。这些继承的类做两件事:根据类的不同,具有具有不同setter的.Value属性;以及对于每个实例都是唯一的.Action方法,因此它是一个重写。 问题:如何从类的方法设置.Value属性。这是下面示例中不起作用的代码行(第27行)。我不明白为什么 Potentiometer.Value = Convert.ToDouble(data); 您需要创建电位计的实例 为级别提供一个受保护的抽象
我的最终目标是有几种不同类型的类用于继承(下面的示例:Level)。这些继承的类做两件事:根据类的不同,具有具有不同setter的.Value属性;以及对于每个实例都是唯一的.Action方法,因此它是一个重写。
问题:如何从类的方法设置.Value属性。这是下面示例中不起作用的代码行(第27行)。我不明白为什么
Potentiometer.Value = Convert.ToDouble(data);
您需要创建电位计的实例 为
级别提供一个受保护的抽象方法OnSetValue
,强制每个子类重写它。现在,Value
的setter可以在设置值之前调用OnSetValue
:
public class Level {
private double val;
public double Value {
get {
return val;
}
set {
OnSetValue(value);
val = value;
}
}
protected abstract void OnSetValue(double val);
...
}
public class Potentiometer : Level {
protected void OnSetValue(double val) {
...
}
}
您试图设置类字段的值,这是不可能的,而不是对象字段的值。您必须在设备
中创建电位计
的实例,如果您想这样做,您可以创建方法或更改代码逻辑。为什么在设备
中声明电位计
类?
public class Level {
private double val;
public double Value {
get {
return val;
}
set {
OnSetValue(value);
val = value;
}
}
protected abstract void OnSetValue(double val);
...
}
public class Potentiometer : Level {
protected void OnSetValue(double val) {
...
}
}