如果我有:C#屬性是如何工作的?
class Test
{
private Vector2 v;
public Vector2 Velocity
{
get { return v; }
set { v = value; }
}
}
然後:
Test t = new Test();
t.Velocity = new Vector2(2, 2);
t.Velocity.Normalize();
Console.WriteLine(t.Velocity); // here not normalized
Vector2 tmp = t.Velocity;
tmp.Normalize();
t.Velocity = tmp;
Console.WriteLine(t.Velocity); // here normalized
Console.Read();
爲什麼,如果我直接嘗試調用規範化的財產速度是不歸 並用TMP Vector2它是什麼?
P.S. Vector2是一個結構:
public struct Vector2 : IEquatable<Vector2>
{
public float X;
public float Y;
...
public void Normalize() {...}
}
Vector2似乎是一個值類型。你應該閱讀[C#概念:值與參考類型](http://www.albahari.com/valuevsreftypes.aspx) –
@ noah1989那麼'tmp'將如何歸一化,因爲'tmp.Normalize()'是不是重新分配給'tmp'? –
其實我們需要更多的代碼。如何定義'Test'和'Vector2'? –