C# 在C中连接变量值#

C# 在C中连接变量值#,c#,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+" ℃"; 连接值的干净方法是使用String.Format lbl_XX_temp.Text= String.Format("Th

如何将标签名称中的变量内容与其他变量连接起来

//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+" ℃";  
连接值的干净方法是使用
String.Format

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

也许,我误解了这个问题。我认为OP想要将
字符串
转换为有效的
控件
对吗

网站:

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);

String.Format
的性能实际上不如像您的问题那样的直接字符串连接。这可能是一个滴答声和纳秒的问题,但是
String.Format
所涉及的开销要比仅仅用a+b+c来连接字符串要大得多


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

我会使用一对数组或字典(设置它们是留给读者的一个众所周知的练习):

编辑

根据注释中的代码,您似乎希望通过名称标识标签,并且您将从整数变量派生名称,如下所示:

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

for(int i=1;存在double何时具有.Text属性?答案似乎表明您只是试图格式化文本,但我相信真正的问题是如何访问正确的对象?@itsme86他引用的标签在这里没有明确定义(lbl_XX_temp).与上面声明的double的名称非常相似。我正在查看输入的答案,并认为可能我误解了您的问题。您是在询问其他连接方式(下面的答案足以回答哪些问题),还是在询问如何通过字符串指定变量名?例如,如果XX为“02”,您想要lbl_02_temp.Text=“设备”+02+“具有”+id_02_temp+“℃”;?是的,“如果XX是“02”,您想要lbl_02_temp.Text=“设备”+02+“具有”+id_02_temp+“℃”;“该设备不解决如何访问对象的问题。该对象不称为“lbl_XX_temp”.XX应该被一个零填充的2位数字替换,似乎。是的,我也是这样。在这种情况下,OP,你有多少标签?如果这是一个本地化问题,你只有五个标签,一个好的ole开关语句可以快速简单地实现。如果你有几百个标签,你可以试试pu将所有控件放入一个列表并使用索引,这样列表[Convert.ToInt32(XX)]将为您提供id_XX_temp.Cool。该解决方案比我的好。@itsme86是的,您是对的,我完全误解了这个问题。我刚刚更新了答案。我们已经成功地将labe.string lbl_02=string.Format(“lbl”)的名称连接起来_{0}temp,XX);string lbl_07=string.Format(“lbl_{0}temp”,XX);string lbl_10=string.Format(“lbl_{0}temp”,XX);现在,我需要获取这个标签中的内容。lbl_02_temp=“31,6”;XX=02;string lbl_02=string.Format(“lbl_{0}temp”,XX);double temp_02=ConvertTo.double(lbl_02);//我需要lbl_02_temp或Double 31.6中的值,这种连接方式非常聪明!这个问题的原因是:获取连接名称的标签中的值。请参见上文。@user1635148请参见上文。我感觉我还没有完全回答您的问题,但我不明白为什么。也许是这样因为我不明白XX是从哪里来的。如果你能发布一个完整的方法,并解释为什么它不能满足你的要求,你的问题可能会更清楚。请原谅我解释得不好。在这个应用中,我需要获得标签。循环中的文本。例如(int i=1;i@user1635148我编辑了答案以回应您的评论。谢谢phoog,我将示例代码上传到此链接:是的,我也是,我认为phoog有一种更快、更聪明的连接方式。
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
}