看来这应该是世界上最简单的事情,但是我离开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
}
}
最佳答案
Console.WriteLine()
方法的this overload带有object
作为参数,使您可以将几乎所有内容直接传递给它。据推测,它随后为您调用参数上的ToString
。
但是,all overloads of MessageBox.Show
将String
作为消息,因此您不能直接将自己的类传递给方法。
关于c# - 无法从自定义类转换为字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57541005/