C#在多个类之间共享struct

时间:2011-10-12 02:11:59

标签: c# class struct

只想获得一些关于共享结构的最佳实践的建议。

我有许多内部类,我想使用相同的结构实例。而不是将struct作为参数传递是否有另一种选择?

提前致谢。

2 个答案:

答案 0 :(得分:2)

我认为您在询问如何创建引用或指向结构的指针。在C#中,您只能使用仅由内在值类型构成的结构(intbytefloatdoublechar

采用以下示例并使用 unsafe 选项

进行编译
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的引用,并且可以操纵它的值。

想要了解有关结构指针的更多信息,请查看this文章或this MSDN文档。是的,上面是合法的C#代码,尽管不正确的关键字在正确编码时相当可靠和健壮。哦,这也是邪恶的。

答案 1 :(得分:1)

您应该考虑仅使用结构来定义看起来像字符串,int等基本类型的数据结构。

这些结构被视为与被视为引用类型的类相对立的值类型。

相关问题