1

嗨,我有默认 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

4 回答 4

6

你想打电话

this.ToString();

或者干脆

ToString();

您所做的是object使用 nametest而不是 type创建一个test,并称为默认值ToStringof object(好吧,int在这种情况下是 of )。

或者,如果您想使用以下类型创建另一个页面test

test newPage = new test();
test.ToString();
于 2010-01-29T12:56:04.813 回答
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());
    }
}
于 2010-01-29T13:00:32.463 回答
1

The object test is not your class, it's just an object.

于 2010-01-29T12:57:02.747 回答
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 所说:

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

祝你好运

于 2010-01-29T13:51:59.270 回答