如何创建值类型“”的实例;通过引用“;

本文关键字:实例 引用 类型 何创建 创建 | 更新日期: 2023-09-27 18:30:10

考虑代码和输出:

    using Microsoft.Xna.Framework;
    //Where color is from ^ that
    static Color color = new Color(0, 0, 0, 0);
    static void Main(string[] args)
    {
        Color otherColor = color;
        color.B = 100;
        Console.WriteLine(otherColor.B);
        Console.WriteLine(color.B);
        Console.ReadLine();
    }
    //output
    //0   <-- otherColor
    //100 <-- color

然而,我希望otherColor通过引用携带相同的值,这样输出就会变成

//100
//100

如果可能的话,我该如何做到这一点?

如何创建值类型“”的实例;通过引用“;

你不能做你想做的事,至少不能直接做。

颜色类型为struct。这是一种值类型。Color的每个实例都是该值的一个单独副本。两个Color实例引用同一对象是不可能的,就像两个int实例引用相同对象一样。

现在,您可以通过在自己的类中包含Color来破解某些内容。以下内容尚未测试:

public class ColorByReference
{
    Color TheColor {get;set;}
}
static ColorByReference color = new ColorByReference {Color = new Color(0,0,0,0)};
static void Main(string[] args)
{
    ColorByReference otherColor = color;
    color.TheColor.B = 100;
    Console.WriteLine(otherColor.TheColor.B);
    Console.WriteLine(color.TheColor.B);
    Console.ReadLine();
}