在C#中创建动态字符串

Cem*_*mre 1 c# string ref

我有我创建的字符串:

string label = Name + " " + Number;
Run Code Online (Sandbox Code Playgroud)

在哪里NameNumber是属性.我想要在更新NameNumber更新时更改此标签字符串.我试图使用ref关键字,但C#告诉我,我不能ref用于属性.有没有办法实现这个目标?

mus*_*fan 6

创建它作为另一个属性,只有一个get方法:

public string Label { get { return Name + " " + Number; }}
Run Code Online (Sandbox Code Playgroud)

这样一来,你每次调用属性时,将创建一个基于当前值的返回值NameNumber.

这需要在类级别定义,并且Label可能也不是合适的名称.


当然,现在的问题是,为什么要首先调用它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;
}
Run Code Online (Sandbox Code Playgroud)

对于这个问题,这可能有些过分,但只需考虑一下.