无法从自定义类转换为字符串

Dav*_*ngs 1 c# overriding tostring

看来这应该是世界上最简单的事情,但是我离开C#已有一段时间了。我正在尝试启动一个新项目,而我那满是灰尘的老脑子使我为此感到痛苦。

我已经创建了一个简单的类,并且试图覆盖ToString()方法。我发现的是,在创建控制台应用程序时,编译器将对象转换为字符串没有问题,但是当我切换到Windows窗体时,编译器不通过,并迫使我显式调用.ToString()我在做什么错误?

预先感谢
大卫

public class TestClass1
{
  private Int32 value;

  public TestClass1()
  { value = 0;}

  public override string ToString()
  { return value.ToString(); }
}

public partial class MainForm : Form
{
  public MainForm()
  { InitializeComponent(); }

  private void Button1_Click(object sender, EventArgs e)
  {
    TestClass1 test = new TestClass1();
    MessageBox.Show(test.ToString()); // this compiles
    MessageBox.Show(test); // this doesn't
    // Argument 1: Cannot convert TestClass1 to string
  }
}
Run Code Online (Sandbox Code Playgroud)

Swe*_*per 5

Console.WriteLine()方法具有将as作为参数的重载object,使您可以将几乎所有内容直接传递给它。大概然后,它将为您调用ToString参数。

但是,所有MessageBox.Show以a String重载的消息,因此您不能直接将自己的类传递给方法。