用子变量(或属性)定义变量
本文关键字:变量 定义 属性 | 更新日期: 2023-09-27 18:12:15
目标是有一个具有Unit属性的变量,可以通过以下方式访问:
Params MyParams;
MyParams.Diae = 100.0;
MyParams.Diae.Unit = "kg";
理想情况下,变量Diae是类Params的成员,应该从类IParameter继承Unit属性:
internal class IParameter
{
string unit;
internal string Unit { get; set; }
internal IParameter()
{
unit = "";
}
}
如何声明变量?下面是预期声明的准代码片段:
namespace SomeCode
{
internal class Params
{
double diae;
internal class Diae:IParameter
{
get { return diae; }
set { diae = value; }
}
}
}
你不能做你想做的——你不能添加额外的属性到现有的类型,如double
,所以你必须使Diae
返回一个单独的类。像这样:
internal class ParamWithUnit
{
public string Unit { get; set; }
public double Value { get; set; }
}
internal class Params
{
private ParamWithUnit diae = new ParamWithUnit();
public ParamWithUnit Diae
{
get { return this.diae; }
}
}
那么你可以这样做:
Params MyParams = new Params();
MyParams.Diae.Value = 100.0;
MyParams.Diae.Unit = "kg";
你不会[想要]能够分配一个double到Diae
,同时仍然允许它有一个属性Unit
。(您可以通过隐式转换或类似的方法来解决这个问题,但我不建议您这样做。)
最好的选择是创建一个类,如Measurement
,它将同时具有Value
和Unit
属性:
public class Measurement
{
public double Value {get;set;}
public string Unit {get;set;}
}
则Diae
可以为该类型:
internal class Params
{
public Measurement Diae {get;private set}
public Params()
{
Diae = new Measurement();
}
}
现在你可以这样做:
Params MyParams = new Params();
MyParams.Diae.Value = 100.0;
MyParams.Diae.Unit = "kg";