在C#中连接变量值

时间:2012-09-27 00:31:23

标签: c#

如何在标签名称和其他变量中连接变量的内容?

//labels: lbl_01_temp, lbl_02_temp, lbl_03_temp
string XX;
double id_01_temp, id_02_temp, id_03_temp;
lbl_XX_temp.Text= "The Device " +XX+ "has" +id_XX_temp+" ℃";  

3 个答案:

答案 0 :(得分:5)

<击> 连接值的简洁方法是使用String.Format

lbl_XX_temp.Text= String.Format("The Device {0} has {1} ℃", XX, id_XX_temp);

<强> See MSDN Doc: String.Format()

<击> 也许,我误解了这个问题。我认为OP希望将string转换为有效的control权利吗?

网络:

string lblSelected = String.Format("lbl_{0}_temp", XX); 
Label lbl = (Label)this.FindControl(lblSelected);
lbl.Text = String.Format("The Device {0} has {1} ℃", XX, id_XX_temp);

的WinForms:

string lblSelected = String.Format("lbl_{0}_temp", XX);
Control[] ctrl = this.Controls.Find(lblSelected, true);
Label lbl = ctrl[0] as Label;
lbl.Text = String.Format("The Device {0} has {1} ℃", XX, id_XX_temp);

答案 1 :(得分:0)

String.Format实际上比你的问题提出的直接字符串连接表现更差。这可能是一个滴答和纳秒的问题,但String.Format涉及的开销比仅仅用+ b + c进行字符串连接需要更多的开销。

就个人而言,String.Format对我来说看起来更干净,但它并不快。

答案 2 :(得分:0)

我会使用一对数组或字典(将它们设置为读者的谚语):

labels[index].Text = "Device " + (index + 1) + " has temperature "
    + temperatures[index].ToString(formatString) + " ℃";

修改

从评论中的代码中,您似乎想要按名称标识标签,并且您将从整数变量中派生名称,如下所示:

for (int i=1; i<=6; i++)
{
    Label label = GetLabelForIndex(i);
    //do something with the label here
} 

所以问题是,如何你会获得给定索引的标签?换句话说,GetLabelForIndex(int)的实施是什么?这个问题的答案取决于我们所谈论的Label类型。它来自哪个图书馆?是WinForms吗? Silverlight的? WPF?如果是WinForms,请参阅Get a Windows Forms control by name in C#。如果是WPF或Silverlight,请参阅Find WPF control by Name。这里接受的答案还建议使用带字符串键的字典,这与我上面的建议类似。

除非您每秒数千次这样做,否则使用字典的性能优势可能微不足道,在这种情况下,您应该直接使用FindFindName