保存对数组中字符串变量的引用

本文关键字:变量 引用 字符串 数组 保存 | 更新日期: 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;
        }