我有我创建的字符串:
string label = Name + " " + Number;
whereName
和Number
是属性。我希望这个标签字符串在Name
orNumber
更新时改变。我尝试使用ref
关键字,但 C# 告诉我不能ref
用于属性。有没有办法做到这一点?
将其创建为另一个属性,只有一个get
方法:
public string Label { get { return Name + " " + Number; }}
这样,每次调用该属性时,它都会根据Name
and的当前值创建返回值Number
。
但是,这需要在类级别定义,并且Label
可能也不是合适的名称。
当然,现在的问题是,为什么Label
首先调用它?
如果您使用此值来设置 WinForms 样式标签控件,并且想要动态更新它,那么您将需要一种不同的方法。您可以修改您当前的属性,Name
并Number
在设置器中做一些“额外的工作”。
例如:
private string _name
public string Name
{
get { return _name; }
set { _name = value; DoChange(); }
}
private string _number
public string Number
{
get { return _number; }
set { _number = value; DoChange(); }
}
public string Label { get { return Name + " " + Number; }}
private void DoChange()
{
MyLabel.Text = Label;
}
对于这个问题,这可能有点矫枉过正,但只是需要考虑的事情。
您可以Label
在提供Name
and的类中实现一个属性,Number
如下所示:
public string Label
{
get
{
return Name + " " + Number;
}
}
即使是引用类型a 的string
行为也像值类型,所以每次你给它赋值时,它都会保留一个新的值副本。
但即使它不会那样做,这也不会解决您的问题,因为您的label
值是基于其他 2 个值的组合值。
您需要以某种方式构建您的代码,即:
(只是一个例子)其中一个属性被更改(Name
或Number
),引发事件,因此标签重新计算其值。