在C#中创建一个动态字符串
本文关键字:一个 动态 字符串 创建 | 更新日期: 2023-09-27 18:00:00
我有一个字符串,我创建的字符串如下:
string label = Name + " " + Number;
其中CCD_ 1和CCD_。我希望每当Name
或Number
更新时,此标签字符串都会更改。我尝试使用ref
关键字,但C#告诉我不能将ref
用于属性。有办法做到这一点吗?
将其创建为另一个属性,只使用get
方法:
public string Label { get { return Name + " " + Number; }}
这样,每次调用属性时,它都会根据Name
和Number
的当前值创建返回值。
不过,这需要在类级别进行定义,Name
0可能也不是一个合适的名称。
当然,现在的问题是,为什么一开始就称它为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;
}
对于这个问题来说,这可能有些过头了,但这只是需要思考的问题。
您可以在提供Name
和Number
的类中实现Label
属性,如下所示:
public string Label
{
get
{
return Name + " " + Number;
}
}
即使是引用类型,string
的行为也类似于值类型副本。
但是,即使它不会这样做,这也不会解决您的问题,因为您的label
值是基于其他2个值的组合值。
您需要以某种方式构建代码,当:
(仅举一个例子)其中一个属性发生了更改(Name
或Number
0),引发了事件,因此标签会重新计算的值。