C#中的扩展方法如何将值分配给父变量,即“ this”变量

鹰航普拉萨德K

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

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修饰符,然后为其分配:

using System;

public static class Int32Extensions
{
    public static void Add(ref this int x, int y)
    {
        x = x + y;
    }

}

class Test
{
    static void Main()
    {
        int i = 9;
        i.Add(2);
        Console.WriteLine(i); // 11
    }
}

i.Add(2)调用是隐式的:

Int32Extensions.Add(ref i, 2);

如果您尝试在不是变量的对象上调用它,它将失败。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将CTE值分配给变量

如何将Angular Material自动完成中的值分配给组件中的变量?

如何将BIML变量分配给BIMLScript变量?

如何将数据分配给组件中的变量?

如何将动态创建的输入字段中的值分配给Python中的各个变量

如何将AppleScript脚本的返回列表中的值分配给Automator中的变量?

如何将列表中的项目分配给变量

在dart中,如何将const Map中的值分配给const变量?

如何将SQL Server数据中的值分配给SSIS中的变量

如何将php变量分配给JS变量

如何将php变量分配给javascript变量

如何将选择结果分配给变量C#

如何将文本框中的时间值分配给变量?

c#如何将Console.WriteLine分配给变量

如何将矩阵的值分配给bash中的变量

当值中包含$字符时如何将值分配给变量

如何将。*作为值分配给bash中的变量

如何将值从vardump输出分配给php中的变量?

在构建方法期间,如何将值分配给Java类的ArrayList成员变量?

如何将列表中的值、用户输入的代码中的值分配给变量

如何将变量分配给 Python 字典中的值?

如何将值分配给角度 2 中的参考变量?

如何将列值分配给 mySQL 脚本中的变量?

如何将插入查询返回的值分配给 PL/pgSQL 中的变量

如何将值分配给 angular 7 中的变量

如何将 .xml 值分配给 C# 变量?

如何将 API 调用中的值分配给 Flutter 中的变量

如何将方法数组中的新值分配给变量?

如何将列表中的对象分配给变量?