更改列表中的字符串值

时间:2014-11-02 09:05:02

标签: c# pointers

也许是一个菜鸟问题,但我需要更改List内的字符串值。

public string TopU1_N;
private List<string> TopScores;

void Start()
{
    TopScores = new List<string>();

    TopScores.Add(TopU1_N);
    TopScores.Add(TopU2_N);

    TopScores[0]="100";
    TopScores[1]="200";

    print("Top1: " + TopU1_N);
    print("Top2: " + TopU2_N);
}

我需要打印这样的结果:100,200。 这是为了统一而写的

2 个答案:

答案 0 :(得分:2)

在.NET中,字符串是不可变类型。这意味着即使您更改TopScores[0]的值,也不会影响您之前分配的TopU1_N的值。

为了实现这一目标,您需要使用List<SomeType>

例如:

public class SomeType
{
    public string Value { get; set; }
}

然后:

SomeType myType = new SomeType();
myType.Value = "OLD VALUE";

List<SomeType> list = new List<SomeType>();
list.Add(myType);
list[0].Value = "NEW VALUE";

Console.WriteLine(myType.Value); // prints NEW VALUE

答案 1 :(得分:-1)

您需要使用不安全的代码来执行您想要的操作。 我认为这可能有用。

    public string TopU1_N;
    public string TopU2_N;
    private object TopScores;

    void Start()
    {

       unsafe
       { 

        TopScores = new List<string *>();   

        TopScores.Add(&TopU1_N);
        TopScores.Add(&TopU2_N);

        *(TopScores[0])="100";
        *(TopScores[1])="200";

        print("Top1: " + TopU1_N);
        print("Top2: " + TopU2_N);
    }
}

请尝试编译。