请参阅此代码:
ChooseGrade ChGrade = new ChooseGrade();
string GrCl = ChGrade.getGrCl().ToString(); // function getGrCl gets "public int[] grad_class=new int[2];" in ChooseGrade Class
MessageBox.Show(GrCl);
但我在Messagebox中看到了这个" System.Int32 []" grade_class数组的即时容器。 你能帮助我吗?
答案 0 :(得分:4)
枚举整数并将它们添加到一个字符串中,然后可以在MessageBox中显示:
string message = "";
int myArray[] = ChGrade.getGrCl();
foreach(var num in myArray)
message += String.Format("{0} ", num);
MseeageBox.Show(message);
答案 1 :(得分:2)
在尝试将数组打印出来之前,您需要将数组转换为字符串。
一种方法可以是:
var GrCl=ChGrade.getGrCl();
string output=string.Join(",", GrCl.Select(x => x.ToString()).ToArray());
MessageBox.Show(output);
编辑:
正如@spender指出的那样,在这种情况下这不起作用,因为GrCl
是int32[]
,它没有Select
方法。
正如其他答案在此期间所示,一种解决方法是手动迭代数组并转换并将每个元素追加到output
。
foreach (var x in GrCl){
output+=x.ToString();
}
答案 2 :(得分:2)
默认ToString()
- 实现返回类型。由于getGrCl()
的返回值是一个整数数组,因此ToString() - 方法只返回此值。
答案 3 :(得分:2)
您获得的是getGrCl()方法返回的对象的类型名称。如果您没有覆盖ToString()方法,那就是预期的行为。
正如我所看到的,返回的对象是一个整数数组,所以你不能改变它的ToString()方法,默认情况下它只给你类型名称。如果要获取包含此数组中的值的字符串,请遍历返回的数组并使用StringBuilder构建字符串,或在类中创建单独的方法来处理此问题。
希望这会对你有所帮助。如果你还有疑问,请问!
答案 4 :(得分:1)
这是因为您要转换为String的int是一个Array。您需要遍历数组,或选择要打印的特定索引。
ChooseGrade ChGrade = new ChooseGrade();
string GrCl = ChGrade.grad_class[0].ToString();
MessageBox.Show(GrCl);
你需要做这样的事情:
grad_class[0].ToString()
答案 5 :(得分:1)
var x = ChGrade.getGrCl();
var messageString = string.Join(",", x.Select(i => i.ToString()))
MessageBox.Show(messageString);
答案 6 :(得分:1)
Show()中的GrCl转换为String调用ToString()方法。由于这个int []方法返回字符串“System.Int32”,你会看到它。你可以这样做:
public string IntArrToString (int [] arr)
{
string intArrStr = "";
foreach (int number in arr)
intArrStr += number.ToString() + " ";
return intArrStr;
}
但最好在这种情况下使用StringBuilder :) 然后你可以这样调用Show:
MessageBox.Show (IntArrToString (ChGrade.getGrCl()));