首页 > 解决方案 > 无法从自定义类转换为字符串

问题描述

这似乎应该是世界上最简单的事情,但我已经离开 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
  }
}

标签: c#overridingtostring

解决方案


Console.WriteLine()方法有一个带有as 参数的重载object,允许您直接将几乎任何东西传递给它。大概,然后它会为您ToString调用参数。

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


推荐阅读