什么是“这个”关键字的方法参数是什么意思? [重复](What does 'this&#

2019-07-20 09:46发布

这个问题已经在这里有一个答案:

  • 什么是扩展方法? 10个回答
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方法的第一个参数的前面“这个”对象似乎不被接受作为参数。 看起来像真正的BeginForm方法的功能:

BeginForm(string actionName, string controllerName);

省略第一参数。 但它实际上收到第一个参数莫名其妙地在一个隐藏的方式。 能否请您给我解释一下这个结构是如何工作的。 其实我探索MVC 4互联网样品。 谢谢。

Answer 1:

这是扩展方法如何在C#。 扩展方法的功能,让你用自定义的方法扩展现有类型。 在this [TypeName]在方法的参数上下文关键字的type要与您的自定义方法扩展,在this作为前缀,你的情况, HtmlHelpertype扩展和BeginForm是应该的方法扩展它。

看看在这个简单的方法extention 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 Extention方法更具体的参考将是: 如何创建自定义MVC扩展方法



Answer 2:

扩展方法:

方式A“上螺栓”扩展现有类型。 它们允许你使用扩展新功能的现有类型,而无需子类或重新编译旧的类型。 例如,你可能想知道某个字符串是否是一个数字或没有。 或者你可能想在ASP.net的WebForms为控制显示()隐藏()功能。

例如:

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

当然,你可以在网上买的书或者你可以做一些研究,它的引擎盖下的所有作品如何使用谷歌。



文章来源: What does 'this' keyword mean in a method parameter? [duplicate]