小编Ogg*_*ggy的帖子

C#委托给struct方法

我正在尝试为特定实例的struct方法创建委托.但是,事实证明,创建了一个新的struct实例,当我调用该委托时,它会在新创建的实例而不是原始实例上执行该方法.


static void Main(string[] args)
{
Point A = new Point() { x = 0 };
Action move = A.MoveRight;
move();
//A.x is still zero!
}

struct Point { public int x, y; public void MoveRight() { x++; } }
Run Code Online (Sandbox Code Playgroud)

实际上,在这个例子中发生的是在委托创建者上创建一个新的struct Point实例,并且在通过delagate调用时对该方法执行该方法.

如果我使用类而不是结构,问题就解决了,但我想使用结构.我也知道有一个解决方案,创建一个开放的委托,并将结构作为第一个参数传递给委托,但这个解决方案似乎相当沉重.这个问题有什么简单的解决方案吗?

c# delegates struct

4
推荐指数
2
解决办法
2731
查看次数

标签 统计

c# ×1

delegates ×1

struct ×1