小编nov*_*vog的帖子

C#7.0中的泛型函数和ref返回

是否可以在C#7.0中使用ref returns功能定义一个泛型函数,它可以在Object的两个实例中同时进行字段的比较和更新?我想象的是这样的:

void UpdateIfChanged<TClass, TField>(TClass c1, TClass c2, Func<TClass, TField> getter)
{
    if (!getter(c1).Equals(getter(c2))
    {
        getter(c1) = getter(c2);
    }
}
Run Code Online (Sandbox Code Playgroud)

用途示例:

Thing thing1 = new Thing(field1: 0, field2: "foo");
Thing thing2 = new Thing(field1: -5, field2: "foo");
UpdateIfChanged(thing1, thing2, (Thing t) => ref t.field1);
UpdateIfChanged(thing1, thing2, (Thing t) => ref t.field2);
Run Code Online (Sandbox Code Playgroud)

有没有办法指定一个Func类型或任何类型的泛型类型限制,通过要求getter返回引用来使其有效?我试过Func<TClass, ref TField>,但它似乎不是有效的语法.

c# generics pass-by-reference c#-7.0

6
推荐指数
2
解决办法
375
查看次数

标签 统计

c# ×1

c#-7.0 ×1

generics ×1

pass-by-reference ×1