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

如何在fun()方法中获取与参数同名的全局变量i

问题:方法参数与类成员同名时,如何在方法内获取类成员变量?

以下是相关代码:

class sample
{
    public int i; //类成员变量
    public int[] arr = new int[10];
    public void fun(int i, int val)
    {
        Console.WriteLine(this.i); //注释写输出为11,但实际执行应输出1
        arr[i] = val;
        Console.WriteLine(arr[i]);
    }
}

class Program
{
    static void Main(string[] args)
    {
        sample s = new sample();
        s.i = 1;
        s.fun(1, 7);
        Console.ReadLine();
    }
}

此处方法参数的名称与类成员变量的名称相同。


解决方案

在C#中,当方法参数和类成员变量同名时,有两种实用方式获取类成员:

  1. 使用this关键字:this代表当前类的实例,通过this.i可以明确指向类的成员变量,而非方法的参数。你代码里已经用到了这个方式,但注释里的输出描述有误——按照Main方法中的赋值逻辑,this.i的实际输出应该是1,不是11。
  2. 修改成员变量命名规范:给类成员变量添加统一前缀(比如_),将i改为_i,这样参数和成员变量名称不再冲突,直接写_i就能访问,同时也能提升代码的可读性,示例如下:
class sample
{
    public int _i; //类成员变量
    public int[] arr = new int[10];
    public void fun(int i, int val)
    {
        Console.WriteLine(_i); //直接访问,无需this
        arr[i] = val;
        Console.WriteLine(arr[i]);
    }
}

class Program
{
    static void Main(string[] args)
    {
        sample s = new sample();
        s._i = 1;
        s.fun(1, 7);
        Console.ReadLine();
    }
}

内容的提问来源于stack exchange,提问作者Prakash sekar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 16:55:24