覆盖asp.net c#中的ToString(),基础知识。行不通

时间:2010-01-29 12:54:23

标签: c# asp.net override tostring

嗨,我有默认的aspx。 我想测试覆盖默认方法,如ToString()。 每当我使用ToString()时,我想用下面的代码就必须添加“我的文字”;?为什么不呢?

public partial class test : System.Web.UI.Page
{

    public override string ToString()
    {
        return base.ToString() + "my text"; 
    }


    protected void Page_Load(object sender, EventArgs e)
    {

        object test = 3333;
        Response.Write( test.ToString());
    }
}

4 个答案:

答案 0 :(得分:6)

你想打电话

this.ToString();

或只是

ToString();

您所创建的object名称为test,而不是test类型,并且称为ToString的默认object(嗯, int,在这种情况下)。

或者,如果您要创建另一个类型为test的页面:

test newPage = new test();
test.ToString();

答案 1 :(得分:5)

正如大家所说,你压倒错误的方法。如果我正确理解您要完成的任务,那么可能更适合使用扩展方法:

public static class ObjectExtensions
{
    public static string ToCustomString(this object instance)
    {
        return instance.ToString() + "whatever";
    }
}

public partial class test : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        object test = 3333;
        Response.Write(test.ToCustomString());
    }
}

答案 2 :(得分:1)

对象test不是你的类,它只是一个对象。

答案 3 :(得分:0)

我希望您在

中重写代码
protected void TestWrite(object sender, EventArgs e)
{
    test test = new test();

    System.Diagnostics.Trace.Write(test.ToString());
}

然后写

protected void TestWrite(object sender, EventArgs e)
{
    test test = new test();

    object testObject = test;

    System.Diagnostics.Trace.Write(testObject.ToString());
}

你将永远调用覆盖的tostring方法。

我们称之为面向对象编程中的“动态绑定”。如果您想了解计算机科学中对象的真正含义,请对此主题充满信心。

而且......正如Unsliced所说:

  

“对象测试不是你的班级,   它只是一个对象。“

祝你好运