我试图将一组字符显示为数组中的一个字符串,但每次运行该程序时,它都会显示一个数字或零。 http://imgur.com/1m77YnX 右边的值集和数字是我用来从多个表单中获取信息的类,左边的代码和值集用于结果表单。 http://imgur.com/8X8S67u 字符来自多种形式,都存储在chr(〜)值中。
如果您需要更多信息,请随时提出。
public static string result = (chrExt + chrAgr + chrCon + chrNeu + chrOpen).ToString();
public static string[] names = new string[20];
public static string[] results = new string[20];
和
string name = Data.name;
string result = Data.result;
private void label2_Click(object sender, EventArgs e)
{
}
private void button4_Click(object sender, EventArgs e)
{
Main frm = new Main();
this.Hide();
frm.Show();
}
private void btnDisplay_Click(object sender, EventArgs e)
{
Data.names[Data.i] = name;
Data.results[Data.i] = result;
Data.i = Data.i + 1;
lstNames.Items.Clear();
lstResults.Items.Clear();
for (int i = 0; i < Data.index; i++)
{
lstNames.Items.Add(Data.names[i]);
lstResults.Items.Add(Data.results[i]);
}
}
修改
我更改了代码
public static int chrExt, chrAgr, chrCon, chrNeu, chrOpen;
到
public static char chrExt, chrAgr, chrCon, chrNeu, chrOpen;
然后我改变了
public static string result = (chrExt + chrAgr + chrCon + chrNeu + chrOpen).ToString();
到
public static string result
{
get { return string.Concat(chrExt, chrAgr, chrCon, chrNeu, chrOpen); }
}
谢谢大家!
答案 0 :(得分:1)
字符是数字(确切地说是Int16
),因此添加数字您有数字。然后使用String.Concat
:
String test1 = ('a' + 'b').ToString(); // 195 == 97 + 98
String test2 = String.Concat('a', 'b'); // "ab" == "a" + "b"
在你的情况下
String result = String.Concat(chrExt, chrAgr, chrCon, chrNeu, chrOpen);
修改:我可以看到您声明的屏幕截图
public static int chrExt, chrAgr, chrCon, chrNeu, chrOpen;
更好的选择是将char
声明为char
,而不是int
:
public static char chrExt, chrAgr, chrCon, chrNeu, chrOpen;
如果您坚持使用int
,请转换为char
内的Concat
:
String result = String.Concat(
(char)chrExt, (char)chrAgr, (char)chrCon, (char)chrNeu, (char)chrOpen);
答案 1 :(得分:1)
您的chr*
变量属于int
类型。所以这一行
public static string result = (chrExt + chrAgr + chrCon + chrNeu + chrOpen).ToString();
首先汇总整数并将结果转换为string
。您可以将其更改为
public static string result = string.Empty + chrExt + chrAgr + chrCon + chrNeu + chrOpen;
或使用string.Concat
:
public static string result = string.Concat(chrExt, chrAgr, chrCon, chrNeu, chrOpen);
但这当然还没有做你想要的。您声明static
成员并仅初始化一次。目前,您的所有chr*
变量仍为0
。
从您的代码中,我无法确定何时将这些变量设置为所需的值。但是之后必须计算result
。
一种方法是将其声明为属性:
public static string Result
{
get { return string.Concat(chrExt, chrAgr, chrCon, chrNeu, chrOpen); }
}
或使用C#6作为表达身体的成员:
public static string Result => string.Concat(chrExt, chrAgr, chrCon, chrNeu, chrOpen);