0

可能重复:
为什么从扩展类中调用扩展方法需要“this”关键字

使用 Visual Studio 2012

System.Web.UI.MasterPageSitefinity 5.*在命名空间中定义了一些扩展方法Telerik.Sitefinity.Web.UI

如果我包含对该命名空间的引用,我可以使用一种特定的扩展方法来指示页面正在正常呈现,或者由内部搜索引擎呈现:

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;
            }
        }
    }
}

但是,如果我thisif(...)语句中删除,编译器将不再找到扩展方法。

是什么赋予了?this除了解决类成员和接口成员或参数之间的歧义之外,我以前从未见过有必要的情况。

4

1 回答 1

2

每个扩展方法都是某个类的扩展。
您需要该类的实例才能使用扩展。
在您的情况下,扩展名用于 MasterPage 的实例,并且您在 MasterPage 的派生实例中使用它。因此,您需要this

于 2012-11-15T12:07:39.563 回答