什么是';这';方法参数中的关键字平均值
本文关键字:关键字 平均值 什么 方法 参数 | 更新日期: 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]
关键字是要用自定义方法扩展的type
,this
用作前缀,在您的情况下,HtmlHelper
是要扩展的type
,BeginForm
是应该扩展它的方法。
看看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
你当然可以在网上购买这本书,也可以使用谷歌来研究这本书是如何运作的。