C# 使用子变量(或属性)定义变量
目标是拥有一个具有Unit属性的变量,可通过以下方式访问:C# 使用子变量(或属性)定义变量,c#,inheritance,properties,declaration,C#,Inheritance,Properties,Declaration,目标是拥有一个具有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 I
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 = "";
}
}
如何声明Diae变量?以下是预期声明的准代码片段:
namespace SomeCode
{
internal class Params
{
double diae;
internal class Diae:IParameter
{
get { return diae; }
set { diae = value; }
}
}
}
您将[不希望]能够将double分配给
Diae
,同时仍允许它具有属性单元
。(你可以通过隐式转换或类似的方式来解决这个问题,但我不鼓励你这么做。)
最好的选择是创建一个类,例如Measurement
,该类将同时具有值
和单位
属性:
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";
Params MyParams = new Params();
MyParams.Diae.Value = 100.0;
MyParams.Diae.Unit = "kg";
您不能完全按照自己的意愿执行操作——您不能向现有类型(如
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";
Params MyParams = new Params();
MyParams.Diae.Value = 100.0;
MyParams.Diae.Unit = "kg";
我不明白,你到底想要什么?包含
双值
和字符串单元
的类?您的最终目标是什么?这将增加复杂性(您将需要两个类),而没有任何明显的好处。声明为对象字符串的变量可能有一个值。并且可以通过追加变量的.length来访问变量的长度。我的目标是类似的东西。访问变量的值比访问它的单位更频繁,因此所需的实现对内在的Double对象进行扩展怎么样。这会是“干净的”吗?@Jansk83正如我在回答中所说,这是可能的,但不可取。