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名前でを作成し、デフォルトの(この場合はの)と呼びました。testtestToStringobjectint

または、次のタイプの別のページを作成する場合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

オブジェクトtestはクラスではなく、単なるオブジェクトです。

于 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 に答える