公共静态类控制器帮助器 { 公共静态void AddRuleViolations(此ModelStateDictionary modelState,IEnumerable错误) { foreach(错误中的规则违反问题) AddModelError(issue.PropertyName,issue.ErrorMessage); } },c#,extension-methods,language-features,C#,Extension Methods,Language Features" /> 公共静态类控制器帮助器 { 公共静态void AddRuleViolations(此ModelStateDictionary modelState,IEnumerable错误) { foreach(错误中的规则违反问题) AddModelError(issue.PropertyName,issue.ErrorMessage); } },c#,extension-methods,language-features,C#,Extension Methods,Language Features" />

C# 什么是;这";用作方法参数前缀时的平均值? 我确信答案是显而易见的,我有点尴尬,因为我已经不知道答案了,但考虑下面的代码样本,我在阅读“专业ASP.NET MVC 1”:< /P> 公共静态类控制器帮助器 { 公共静态void AddRuleViolations(此ModelStateDictionary modelState,IEnumerable错误) { foreach(错误中的规则违反问题) AddModelError(issue.PropertyName,issue.ErrorMessage); } }

C# 什么是;这";用作方法参数前缀时的平均值? 我确信答案是显而易见的,我有点尴尬,因为我已经不知道答案了,但考虑下面的代码样本,我在阅读“专业ASP.NET MVC 1”:< /P> 公共静态类控制器帮助器 { 公共静态void AddRuleViolations(此ModelStateDictionary modelState,IEnumerable错误) { foreach(错误中的规则违反问题) AddModelError(issue.PropertyName,issue.ErrorMessage); } },c#,extension-methods,language-features,C#,Extension Methods,Language Features,我理解这个静态方法在做什么,但我不理解的是“this”这个词在方法签名中的作用。有人能给我一些启发吗?这是一个新的C#3.0特性,名为 这意味着您向ModelStateDictionary对象添加了一个新方法。您可以像调用普通方法一样调用它: yourModelStateDictionary.AddRuleViolations( errors ); 请参见,跳过第一个参数(“this”-参数)。它仅将ModelStateDictionary指定为扩展方法的有效目标 线索是,您可以对任何类执行此

我理解这个静态方法在做什么,但我不理解的是“this”这个词在方法签名中的作用。有人能给我一些启发吗?

这是一个新的C#3.0特性,名为

这意味着您向ModelStateDictionary对象添加了一个新方法。您可以像调用普通方法一样调用它:

yourModelStateDictionary.AddRuleViolations( errors );
请参见,跳过第一个参数(“this”-参数)。它仅将ModelStateDictionary指定为扩展方法的有效目标


线索是,您可以对任何类执行此操作,即使是密封类或第三方类,如.Net framework类(例如对象或字符串)。

这意味着所讨论的方法是一个“扩展方法”,可以像调用类本身的方法一样进行调用。请参见此。

另请参见此处:

这是一个扩展方法签名,它意味着“AddRuleViolations”将被视为ModelStateDictionary的扩展方法

来自MSDN

扩展方法允许您“添加” 现有类型的方法 创建新的派生类型, 重新编译或以其他方式修改 原始类型。扩展方法 是一种特殊的静态方法, 但他们被称为好像他们是 扩展类型上的实例方法。 对于用C#和 VisualBasic中,没有明显的 调用 扩展方法和 实际上是在类型中定义的


它为ModelStateDictionary的所有实例添加了一个新的实例。

我自己也这么认为
yourModelStateDictionary.AddRuleViolations( errors );