所以,这里我有一些像这样初始化的变量。
var center = Vector2.Zero; // For sample purpose, the real one gain the value dynamically.
var size = 1F;
var sizeHalf = size / 2; // The `size` variable will be like readonly after initialization in my project.
var angle = 30F;
var anCos = Mathf.Cos(angle);
var anSin = Mathf.Sin(angle);
For the detail,
Vector2
is astruct
and NOT aclass
.
我有四个像这样初始化的 Vector2
变量。
var b = new Vector2 (center.x , center.y - sizeHalf);
var t = new Vector2 (center.x , center.y + sizeHalf);
var l = new Vector2 (center.x - sizeHalf , center.y);
var r = new Vector2 (center.x + sizeHalf , center.y);
// Re-assign to get the adjusted values
b = new Vector2 (b.x , (b.x * anCos) + (b.y * anSin));
t = new Vector2 (t.x , (t.x * anCos) + (t.y * anSin));
l = new Vector2 ((l.x * anCos) - (l.y * anSin) , l.y);
r = new Vector2 ((r.x * anCos) - (r.y * anSin) , r.y);
所以,回到我的问题,
- 是否对变量
初始化不止一次重新赋值这样的好方法好吗? 如果不是,我应该做这样的事情吗?
// Temporary variable to store most used calculated variable var pB = center.y - sizeHalf; var pT = center.y + sizeHalf; var pL = center.x - sizeHalf; var pR = center.x + sizeHalf; var b = new Vector2 (center.x, (center.x * anCos) + (pB * anSin)); var t = new Vector2 (center.x, (center.x * anCos) + (pT * anSin)); var l = new Vector2 ((pL * anCos) - (center.y * anSin), center.y); var r = new Vector2 ((pR * anCos) - (center.y * anSin), center.y);
或者有没有比我上面提到的更好的方法?
谢谢。
编辑:
在这里,在我的代码中我使用了 var
而不是它们真正的 TypeName
,那是因为我把这段代码写在一个函数中并且只在那个范围内使用,甚至更小的范围(在那个函数,我有一些 if
并且它只在那个 if
中使用)并且为了简单和更快的变量编写,它是一个简单的函数所以我认为使用 var
足够了。
最佳答案
Is doing a variable initialization more than once ...
首先,让我们正确使用单词。当你初始化某个东西两次时,问会发生什么是不连贯的,因为根据定义,初始值是在变量的初始时间分配的已分配。也就是说,第一次。
到第二次赋值时,变量已经初始化;第二个赋值不会再次初始化它; 它已经有了初始值。
但是你的意思是说“已分配”,我明白了。
Is doing a variable assignment more than once like that good approach and okay in terms of memory and performance?
我觉得还好。
您是否遇到内存或性能问题?
如果您是,这不是我首先要看的地方之一。 我会使用分析器来检查我的内存和性能特征。
由于性能几乎肯定是无关紧要的,所以您应该问的问题是:
Is the second technique, using single assignment form, better in some other way?
是的。 您应该使用单一赋值形式,如果可能的话,每个变量都赋值一次。
原因与内存或性能无关。原因是因为变量不经常更改的代码更容易阅读、理解、调试和维护。一个在初始化时只改变一次的变量是理想的。你永远不需要想知道它曾经有什么值(value),你永远不需要想知道它已经变异了多少次,你可以给你的变量描述性的名称,其含义不会随着你的方法的控制进展而改变。
关于c# - 可以多次重新分配结构变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49353188/