我有我创建的字符串:
string label = Name + " " + Number;
Run Code Online (Sandbox Code Playgroud)
在哪里Name和Number是属性.我想要在更新Name或Number更新时更改此标签字符串.我试图使用ref关键字,但C#告诉我,我不能ref用于属性.有没有办法实现这个目标?
创建它作为另一个属性,只有一个get方法:
public string Label { get { return Name + " " + Number; }}
Run Code Online (Sandbox Code Playgroud)
这样一来,你每次调用属性时,将创建一个基于当前值的返回值Name和Number.
这需要在类级别定义,并且Label可能也不是合适的名称.
当然,现在的问题是,为什么要首先调用它Label?
如果您使用此值来设置WinForms样式标签控件,并且您想要动态更新它,那么您将需要一种不同的方法.你可以修改你当前的属性,Name并Number在setter中做一点"额外的工作".
例如:
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;
}
Run Code Online (Sandbox Code Playgroud)
对于这个问题,这可能有些过分,但只需考虑一下.