考虑代码和输出:
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
Run Code Online (Sandbox Code Playgroud)
但是,我希望otherColor通过引用携带相同的值,这样输出就会变成
//100
//100
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我怎么能做到这一点?
Joh*_*ers 11
你至少不能直接做你想做的事.
该颜色类型是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();
}
Run Code Online (Sandbox Code Playgroud)