无法从自定义 class 转换为字符串
Can't convert to string from custom class
这似乎应该是世界上最简单的事情了,但我已经离开 C# 一段时间了。我正在尝试开始一个新项目,而我满是尘土的旧脑袋让我为此感到痛苦。
我创建了一个简单的 class 并且我正在尝试重写 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
作为消息,所以你不能直接将自己的class传递给方法。
这似乎应该是世界上最简单的事情了,但我已经离开 C# 一段时间了。我正在尝试开始一个新项目,而我满是尘土的旧脑袋让我为此感到痛苦。
我创建了一个简单的 class 并且我正在尝试重写 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
作为消息,所以你不能直接将自己的class传递给方法。