填充从属性

时间:2017-03-15 22:11:14

标签: c# .net

我有一个Windows 10 UWP项目,但我相信这是一个简单的C#/ .Net问题。通常,我会使用string.Format来格式化带有变量的字符串。像这样:

string.Format("My Name is: {0}", myName);

我如何做类似的事情是我的字符串存储为属性?

public string Greeting { get; set; } = "My Name is: {0}";

当我检索此字符串是访问该属性时,我得到的格式与我在string.Format中使用的相同,但我无法弄清楚如何将{0}定义为myName?

谢谢!

4 个答案:

答案 0 :(得分:1)

假设您要设置属性但返回完全格式化的字符串,则需要执行以下操作:

private string _greeting;

public string Greeting 
{
    get
    {
        return $"My Name is: {_greeting}";
    }
    set
    {
        _greeting = value;
    } 
}

然而,我并不认为这会产生特别易读的代码。相反,我会有一个名称属性和只读问候语,如下所示:

public string Name { get; set; }
public string Greeting => $"My Name is: {Name}";

现在,您可以设置并获取Name属性,同时还可以生成问候语。

注意,我也在这里使用C#字符串插值而不是string.Format。它看起来很漂亮,更容易阅读。它还需要C#版本6或更高版本(换句话说,至少是Visual Studio 2015。)

答案 1 :(得分:0)

属性只是变量的getter和setter包装器。

你不应该打电话

您的构造函数中的

private static boolean[] res; public static boolean[] generate(int len) { res = new boolean[len]; generate(0, len, len / 2); return res; } private static void generate(int start, int len, int bits) { if (bits == len) for (int i = start; i < start + len; i++) res[i] = true; else if (bits > 0) { int l1 = len / 2, l2 = len - l1, b1 = (bits + 2) / 4, b2 = bits - b1; if (l2 < b2) { b2 = l2; b1 = bits - b2; } generate(start, l1, b1); generate(start + l1, l2, b2); } } 或您指定myName的位置?

答案 2 :(得分:0)

如果myName是您班级的字符串属性,那么您不需要问候语的设置者,您可以使用:

public string Greeting { get { return string.Format("My Name is: {0}", myName); } }

答案 3 :(得分:0)

我相信这就是你要找的东西:

    string myName = "Steve";
    this.textBox1.Text = string.Format( "{0}{1}", Test.Greeting, myName );

    public class Test
    {
        public static string Greeting { get; set; } = "My Name is: ";
    }