C#函数定义中`this`关键字的作用解析:.NET 3.5扩展方法疑问
解析.NET 3.5中带
this的静态函数签名 你看到的这个不是默认参数,而是C# 3.0(对应.NET 3.5)引入的扩展方法,下面给你拆解清楚:
- 核心特性:
this关键字在这里是扩展方法的标记,作用是把这个静态方法“挂载”到Form类型上,让你可以像调用Form的实例方法一样使用它 - 语法要求:
- 扩展方法必须放在静态类里(你的代码里没显示,但这个方法肯定属于某个静态类)
- 第一个参数必须加
this修饰符,指定要扩展的类型(这里是Form)
- 调用逻辑:
你之所以觉得它像GetFocusedControl(Form parentForm=this),是因为当你用某个Form实例.GetFocusedControl()这种方式调用时,C#会自动把这个Form实例作为参数传入parent_form,等价于调用静态类名.GetFocusedControl(某个Form实例)——这和默认参数完全是两回事,.NET 3.5确实不支持默认参数(默认参数要到C# 4.0才引入) - 完整场景示例:
// 假设方法所在的静态类 public static class FormHelper { public static Control GetFocusedControl(this Form parent_form) { // 方法实现逻辑 } } // 调用方式1(实例方法风格,推荐) var currentForm = new Form(); Control focusedCtrl = currentForm.GetFocusedControl(); // 调用方式2(静态方法原始风格) Control focusedCtrl = FormHelper.GetFocusedControl(currentForm);
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

