C#struct by-ref

Bar*_*uch 1 .net c# struct ref

有没有办法在C#中能够做到这一点:

map.player.x = 5;
Run Code Online (Sandbox Code Playgroud)

保持player类型Point(或静默可转换为一个)并仍然能够在执行任务时检查值的正确性?

更清楚:

  • Point 是由C#/ .net标准库定义的结构,并按值传递.
  • 创建一个包装类并将所有Point方法实现为call-throughs Point是漫长而乏味的.
  • 拥有一个只包含隐式转换的包装类Point将不允许上述内容.它必须写成(Point)(map.player).x,这是笨拙的.

Hen*_*man 6

如果我理解正确,您似乎希望通过定义类型转换来获得一些灵活性.这不会走得太远.

避免使用可变结构(值类型).struct Point从旧的Win32 API是一个不幸的遗留物.

所以瞄准 map.player = new Point(5, map.player.y);

  • @baruch:一切:)严重的是,搜索"邪恶的可变结构",你会发现许多意见,赞成和反对.大多数情况下,你最终会遇到这种尴尬的情况,以及其他情况下的意外行为. (3认同)