c#多个类之间的共享结构
本文关键字:共享 结构 之间 | 更新日期: 2023-09-27 18:11:12
只是想得到一些关于什么是共享结构体的最佳实践的建议。
我有许多内部类,我想使用结构体的相同实例。而不是传递结构作为参数有一个替代方案?
我想你是在问如何创建一个结构体的引用或指针。在c#中,您只能对仅由内在值类型(int
, byte
, float
, double
, char
)组成的结构体进行此操作
public struct Data
{
public int id;
public double x;
}
unsafe class A
{
Data* data;
public A(Data* data)
{
this.data = data;
}
public int ID { get { return data->id; } set { data->id = value; } }
}
unsafe class B
{
Data* data;
public B(Data* data)
{
this.data = data;
}
public double X { get { return data->x; } set { data->x = value; } }
}
unsafe class Program
{
static void Main(string[] args)
{
Data store = new Data();
A a = new A(&store);
B b = new B(&store);
a.ID = 100;
b.X = 3.33;
Console.WriteLine("id={0} x={1}", store.id, store.x);
}
}
它将打印出"id=100 x=3.33"
,即使值类型变量store
从未被直接赋值。这两个类都包含对struct
的引用,并且可以操作其值。
想了解更多关于指向结构体的指针的知识,请参阅本文或MSDN文档。是的,以上是合法的c#代码,尽管有不安全关键字,但如果编码得当,它还是相当可靠和健壮的。哦,而且它的速度也非常快。
你应该考虑只使用结构体来定义看起来像字符串、int等基本类型的数据结构。
这些结构体被视为值类型,而类被视为引用类型。