我有一个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?
谢谢!
答案 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: ";
}