嗨,我有默认的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());
}
}
答案 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所说:
“对象测试不是你的班级, 它只是一个对象。“
祝你好运