保存对数组中字符串变量的引用
本文关键字:变量 引用 字符串 数组 保存 | 更新日期: 2023-09-27 17:49:35
我想在数组中保存对字符串的引用。例如:
string x = "x", y="y", z="z";
string array[];
我希望数组保存对x,y,z的引用。因此,如果我将数组[0]更改为"xx"那么x将包含"xx"
谢谢澳国内
c#中的字符串变量是不可变的。但是StringBuilder变量是可变的。
StringBuilder sb_x = new StringBuilder("x");
StringBuilder sb_y = new StringBuilder("y");
StringBuilder sb_z = new StringBuilder("z");
StringBuilder[] array = { sb_x, sb_y, sb_z };
array[0].Append("x");
现在array[0] = "xx"并且sb_x也是"xx"!
在c#类型系统中有两种类型"值类型"answers"引用类型"
值类型按值复制。当你复制一个对象时,你会得到一个全新的对象。
引用类型通过引用复制。当你复制一个时,你实际上是在复制一个对某个存储位置的引用。
String是一个值类型,但是你试图使它表现得像一个引用类型。
你可以创建一个带有String属性的类,然后使用该类的数组:
public class StringWrapper
{
public String Value {get; set;}
}
那么你可以这样使用:
public class SomeOtherClass
{
public void SomeMethod()
{
StringWrapper[] array = new StringWrapper[3];
var x = new StringWrapper() { Value="X"; }
var y = new StringWrapper() { Value="y"; }
var z = new StringWrapper() { Value="z"; }
array[0] = x;
array[1] = y;
array[2] = z;
array[0].Value = "xx";
}
}
如果你改变x值,那么数组[0]。
不行。c#中的字符串是不可变的,这意味着你根本不能改变它们,你只能改变字符串引用。而且你不能创建字符串引用数组(除非你使用不安全的代码——不要这样做)。
您需要使用其他结构来保存数据。有人认为,Dictionary<string, string>
是一种可能性。或者,您也可以通过数组访问字符串。
不妨试试
Dictionary<string,string>
:
http://www.dotnetperls.com/dictionary通过阅读评论,我达到了目标:)
备份敌人最后知道的位置…实际上我是这样做的。如果你有更好的解决方案,请展示出来^_^
if (EnemyLKP != EnemyLKPBackup[2])
{
EnemyLKPBackup[1] = EnemyLKPBackup[2];
EnemyLKPBackup[0] = EnemyLKPBackup[1];
EnemyLKPBackup[2] = EnemyLKP;
}