出于某种原因,(我是C#的新手并且知道java和c ++)当我想通过值传递时,C#会继续复制对象.我有一个Vector2类的arraylist ,每当我想增加一个值时,我必须这样做:
Vector2 d = (Vector2) myObjects[i];
d.Y++;
myObjects [i] = d;
Run Code Online (Sandbox Code Playgroud)
我希望能够这样做:
Vector2 d = (Vector2) myObjects[i];
d.Y++;
Run Code Online (Sandbox Code Playgroud)
并完成.我在网上搜索,令人惊讶的是没有答案.顺便说一句,矢量是一个结构.
Giu*_*nco 10
在C#中,classes的实例作为引用传递,而structs的实例通过复制传递(默认情况下).
答案就在那里应该是:http://msdn.microsoft.com/en-us/library/vstudio/ms173109.aspx
类是引用类型.创建类的对象时,为其分配对象的变量仅保留对该内存的引用.将对象引用分配给新变量时,新变量引用原始对象.通过一个变量进行的更改会反映在另一个变量中,因为它们都引用相同的数据.
结构是一种值类型.创建结构时,为其分配结构的变量保存结构的实际数据.将结构分配给新变量时,会复制该变量.因此,新变量和原始变量包含相同数据的两个单独副本.对一个副本所做的更改不会影响另一个副本.
| 归档时间: |
|
| 查看次数: |
854 次 |
| 最近记录: |