0

重複の可能性:
拡張クラス内から拡張メソッドを呼び出すために「this」キーワードが必要なのはなぜですか

VisualStudio2012の使用

Sitefinity 5. *はSystem.Web.UI.MasterPage、名前空間でのいくつかの拡張メソッドを定義しますTelerik.Sitefinity.Web.UI

その名前空間への参照を含めると、ページが正常にレンダリングされていること、または内部検索エンジンによってレンダリングされていることを示す1つの特定の拡張メソッドを使用できます。

using Telerik.Sitefinity.Web.UI;

namespace MyWebApp
{
    public partial class MyMasterPage : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            /// hide common page elements.
            /// GetIndexRenderMode() returns "Normal" if the page is being rendered
            /// normally, but not if the search engine is indexing the page.
            if (this.GetIndexRenderMode() != IndexRenderModes.Normal)
            {
                headerPlaceholder.Visible = false;
                footerPlaceholder.Visible = false;
                navigationPlaceholder.Visible = false;
            }
        }
    }
}

thisただし、ステートメントから削除するif(...)と、コンパイラは拡張メソッドを検出しなくなります。

何が得られますか?thisクラスメンバーとインターフェイスメンバーまたはパラメータの間のあいまいさを解決することを除いて、必要なケースを見たことがありません。

4

1 に答える 1

2

すべての拡張メソッドは、何らかのクラスの拡張です。
拡張機能を使用するには、そのクラスのインスタンスが必要です。
あなたの場合、拡張子は MasterPage のインスタンス用であり、MasterPage の派生インスタンス内で使用します。したがって、this

于 2012-11-15T12:07:39.563 に答える