C# c中的扩展方法“如何为父变量赋值,即;这";变量

C# c中的扩展方法“如何为父变量赋值,即;这";变量,c#,winforms,C#,Winforms,我有一个扩展方法的代码,它看起来像一行 parent class { int i = 9; // the value was i was 9; i = i.Add(2); // here 9 + 2 Console.WriteLine(i); // it is printing 11 } extension class { public static int Add(this int firstInteger, int secondInteger) {

我有一个扩展方法的代码,它看起来像一行

parent class
{
   int i = 9; // the value was i was 9;
   i = i.Add(2); // here 9 + 2
   Console.WriteLine(i); // it is printing 11
}

extension class
{
   public static int Add(this int firstInteger, int secondInteger)
   {
      return (firstInteger + secondInteger);
   }
}
这是我的扩展类,但我需要的是

parent class
{
   int i = 9;              // the value was i was 9;
   i.Add(2);              // here 9 + 2
   Console.WriteLine(i); // it has to print 11
}

我找不到解决方法,请推荐解决方案。

首先,我强烈建议您不要这样做。这很违反直觉

但从C#7.2开始,使用
ref
扩展方法,这是可能的-仅适用于值类型。只需将第一个参数更改为具有
ref
修饰符,并为其指定:

使用系统;
公共静态类Int32Extensions
{
公共静态无效添加(参考此整数x,整数y)
{
x=x+y;
}
}
课堂测试
{
静态void Main()
{
int i=9;
i、 增加(2);
Console.WriteLine(i);//11
}
}
i.Add(2)
调用隐式地:

Int32Extensions.Add(ref i, 2);
如果你试图调用一个非变量的函数,它就会失败


但是对于许多C#开发者来说,这将是非常令人惊讶的行为,因为
ref
是隐式的。它对引用类型也无效。

首先,我强烈建议您不要这样做。这很违反直觉

但从C#7.2开始,使用
ref
扩展方法,这是可能的-仅适用于值类型。只需将第一个参数更改为具有
ref
修饰符,并为其指定:

使用系统;
公共静态类Int32Extensions
{
公共静态无效添加(参考此整数x,整数y)
{
x=x+y;
}
}
课堂测试
{
静态void Main()
{
int i=9;
i、 增加(2);
Console.WriteLine(i);//11
}
}
i.Add(2)
调用隐式地:

Int32Extensions.Add(ref i, 2);
如果你试图调用一个非变量的函数,它就会失败


但是对于许多C#开发者来说,这将是非常令人惊讶的行为,因为
ref
是隐式的。它对引用类型也无效。

ref
modifier?该死的,你们真快。为什么要重新发明轮子?仅使用i+=2<代码>参考修改器?该死的,你们真快。为什么要重新发明轮子?仅使用i+=2*参数修饰符'ref'不能与'this'*@GarudaPrasadK一起使用:这表明您没有使用C#7.2。首先确保您使用的是最新版本的VisualStudio(或用于构建的任何版本);然后确保选择了C#7.2或更高版本。*参数修饰符“ref”不能与“this”*@GarudaPrasadK一起使用:这表明您没有使用C#7.2。首先确保您使用的是最新版本的VisualStudio(或用于构建的任何版本);然后确保选择了C#7.2或更高版本。