如何在C#中为类定义Console.WriteLine行为?

lin*_*ida 2 c# string tostring

我有一节课:

class Rect{
    int x;
    int y;
    public Rect(int x, int y){
        this.x = x;
        this.y = y;
    }

}
Run Code Online (Sandbox Code Playgroud)

我希望这种情况发生:

Console.WriteLine(new Rect(12,12));
>>> <Rect with x=12, y=12>
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?

Ela*_*fer 7

你可以覆盖ToString()方法:

class Rect{
    int x;
    int y;
    public Rect(int x, int y){
        this.x = x;
        this.y = y;
    }

    public override string ToString()
    {
        return "("+x.ToString()+","+y.ToString()+")";
    }

}
Run Code Online (Sandbox Code Playgroud)

  • C#不是Java.`ToString`是PascalCase. (2认同)
  • 此外,这里不需要显式调用int变量的`.ToString()`.C#编译器在看到带有字符串操作数的加法运算符时会自动插入该调用("string"+ object) (2认同)