MessageBox.show()C#问题

时间:2011-09-23 09:09:48

标签: c#

请参阅此代码:

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数组的即时容器。 你能帮助我吗?

7 个答案:

答案 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指出的那样,在这种情况下这不起作用,因为GrClint32[],它没有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()));