Здравствуйте, _FRED_, Вы писали:
_FR>Рискну предполдожить, что у топикстартера есть разные типы структур, которые хочется (или нужно) менять в одном единственном методе и передавать эти структуры соответственно приходится унифицированно через "object".
_FR>Тогда мог бы подойти свой "Variant" c ref-ссылками разного типа.
Да, нужна будет ref struct и ref scoped параметр такого метода.
Но это всё выглядит крайне странно. Например, если бы мне потребовалось, скажем, унифицированно менять поле x в структурах разных типов, то очевидным решением является вот такое:
public interface IXSettable
{
public int X{get;set;}
}
public struct Point: IXSettable
{
int x;
int y;
int X {get => x; set => x = value; }
}
public struct IntWrapper: IXSettable
{
public IntWrapper(int v) => x = v;
private int x;
public int X {get => x; set => x = value; }
}
public static void MoveX<T>(ref T t)
where T: IXSettable, struct
=> t.X += 1;
public static void Main()
{
var p = new Point(); (p.x, p.y) = (17, 42);
MoveX(ref p);
var w = IntWrapper(x);
MoveX(ref w);
}
_FR>P.S.
_FR>Это очевидно опечатка и unsafe выше не нужен.
Да, конечно, правил по месту.