什么是';这';方法参数中的关键字平均值

本文关键字:关键字 平均值 什么 方法 参数 | 更新日期: 2023-09-27 18:00:33

namespace System.Web.Mvc.Html
{
    // Summary:
    //     Represents support for HTML in an application.
    public static class FormExtensions
    {
        public static MvcForm BeginForm(this HtmlHelper htmlHelper, string actionName, string controllerName);
...
    }
}

我注意到BeginForm方法中第一个参数前面的"this"对象似乎不被接受为参数。看起来在实际的BeginForm方法中的功能如下:

BeginForm(string actionName, string controllerName);

省略第一参数。但它实际上以某种隐藏的方式接收到了第一个参数。你能给我解释一下这个结构是怎么工作的吗。我实际上在探索MVC 4互联网示例。非常感谢。

什么是';这';方法参数中的关键字平均值

这就是C#中扩展方法的工作方式。扩展方法功能允许您使用自定义方法扩展现有类型。方法参数上下文中的this [TypeName]关键字是要用自定义方法扩展的typethis用作前缀,在您的情况下,HtmlHelper是要扩展的typeBeginForm是应该扩展它的方法。

看看string类型的这个简单扩展方法:

public static bool BiggerThan(this string theString, int minChars)
{
  return (theString.Length > minChars);
}

您可以在string对象上轻松使用它:

var isBigger = "my string is bigger than 20 chars?".BiggerThan(20);

参考文献:

  • 有据可查的参考资料是:如何:实施和调用自定义扩展方法(C#编程指南(

  • 关于ASP.NET MVC中的扩展方法,更具体的参考是:如何创建自定义MVC扩展方法

扩展方法:

扩展现有类型的"螺栓连接"方式。它们允许您使用新功能扩展现有类型,而不必对旧类型进行子类或重新编译。例如,您可能想知道某个字符串是否是数字。或者,您可能希望在ASP.net WebForms中为控件提供Show((Hide((功能。

例如:

public static class MyExtensionMethods
{
    public static void Show(this Control subject)
    {
        subject.Visible = true;
    }
    public static bool IsNumeric(this string s)
    {
        float output;
        return float.TryParse(s, out output);
    }
}

编辑:有关更多信息,您可以在以下位置查看MSDN文档:http://msdn.microsoft.com/en-us/library/vstudio/bb383977.aspx@aush善意地将其联系起来。

我喜欢阅读关于扩展方法的"C#深度"。这里有一段摘录:http://my.safaribooksonline.com/book/programming/csharp/9781935182474/extension-methods/ch10lev1sec3

你当然可以在网上购买这本书,也可以使用谷歌来研究这本书是如何运作的。