在C#中创建一个动态字符串

本文关键字:一个 动态 字符串 创建 | 更新日期: 2023-09-27 18:00:00

我有一个字符串,我创建的字符串如下:

string label = Name + " " + Number;

其中CCD_ 1和CCD_。我希望每当NameNumber更新时,此标签字符串都会更改。我尝试使用ref关键字,但C#告诉我不能将ref用于属性。有办法做到这一点吗?

在C#中创建一个动态字符串

将其创建为另一个属性,只使用get方法:

public string Label { get { return Name + " " + Number; }}

这样,每次调用属性时,它都会根据NameNumber的当前值创建返回值。

不过,这需要在类级别进行定义,Name0可能也不是一个合适的名称。


当然,现在的问题是,为什么一开始就称它为Label

如果您使用此值来设置WinForms样式标签控件,并且希望动态更新该控件,则需要不同的方法。您可以修改NameNumber的当前属性,以便在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;
}

对于这个问题来说,这可能有些过头了,但这只是需要思考的问题。

您可以在提供NameNumber的类中实现Label属性,如下所示:

public string Label 
{
    get
    {
        return Name + " " + Number;
    }
}

即使是引用类型string的行为也类似于值类型副本。

但是,即使它不会这样做,这也不会解决您的问题,因为您的label值是基于其他2个值的组合值。

您需要以某种方式构建代码,当:

(仅举一个例子)其中一个属性发生了更改(NameNumber0),引发了事件,因此标签会重新计算的值。