You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 20:12:46