Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 分配和方法调用顺序_C#_C# 4.0_Call_Normalize - Fatal编程技术网

C# 分配和方法调用顺序

C# 分配和方法调用顺序,c#,c#-4.0,call,normalize,C#,C# 4.0,Call,Normalize,我为我的XNA游戏对象编写了这样一个表示方向的属性: 公共向量2方向 { 获取{返回方向;} 保护集 { 方向=值。规格化;//*** angle=MathHelper.WrapAnglefloatMath.Atandirection.X/方向.Y; } } set设置两个等效字段,分别以角度和规范化向量表示对象的方向 开始游戏失败,因为用***标记的线失败。它不规范化向量。 我将此行更改为: 方向=值; 方向:规范化; 而且效果很好。。。为什么? 我假设在***标记的行中,第一个操作是赋值,然

我为我的XNA游戏对象编写了这样一个表示方向的属性:

公共向量2方向 { 获取{返回方向;} 保护集 { 方向=值。规格化;//*** angle=MathHelper.WrapAnglefloatMath.Atandirection.X/方向.Y; } } set设置两个等效字段,分别以角度和规范化向量表示对象的方向

开始游戏失败,因为用***标记的线失败。它不规范化向量。 我将此行更改为:

方向=值; 方向:规范化; 而且效果很好。。。为什么? 我假设在***标记的行中,第一个操作是赋值,然后归一化方向。但这不是真的。 ___ ___ ____ Normalize是Vector2类中的方法

// //总结: //将当前向量转换为单位向量。结果是向量为一个单位 //在长度上指向与原始向量相同的方向。 公共空间规范化;
我假设Vector2是一个结构或值类型,这意味着它是通过值传递的,而不是通过引用传递的。将值指定给方向时,将方向设置为值的副本。此外,表达式direction=value返回的对象是一个副本,而不是direction中的同一个实例。您正在对一个从未存储在setter块之外的对象调用Normalize

出于同样的原因,您不能对从类的属性获取程序返回的结构调用方法或设置属性。例如,如果示例中的属性位于名为Monkey的类中,请注意:

Monkey m = new Monkey();
m.Direction = new Vector2(...);
m.Direction.X = 2; // This will not compile.
m.Direction.Normalize(); // This will not do what you expect.

我假设Vector2是一个结构或值类型,这意味着它是通过值传递的,而不是通过引用传递的。将值指定给方向时,将方向设置为值的副本。此外,表达式direction=value返回的对象是一个副本,而不是direction中的同一个实例。您正在对一个从未存储在setter块之外的对象调用Normalize

出于同样的原因,您不能对从类的属性获取程序返回的结构调用方法或设置属性。例如,如果示例中的属性位于名为Monkey的类中,请注意:

Monkey m = new Monkey();
m.Direction = new Vector2(...);
m.Direction.X = 2; // This will not compile.
m.Direction.Normalize(); // This will not do what you expect.

请为您正在谈论的语言添加标记。请包括引发的异常/导致游戏失败的错误消息。游戏失败意味着游戏逻辑未正确更新。请为您正在谈论的语言添加标记。请包括引发的异常/错误消息导致你的游戏失败。游戏失败意味着游戏的逻辑没有正确更新。