如何创建值类型“”的实例;通过引用“;
本文关键字:实例 引用 类型 何创建 创建 | 更新日期: 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();
}