如何修改list中的值?

本文关键字:list 何修改 修改 | 更新日期: 2023-09-27 18:03:07

    class SomeClass
    {
        private struct PhraseInfo
        {
            public int Start;
            public int Length;
        }
...
        private void SomeMethod(...)
        {
            List<PhraseInfo> posesBracket = new List<PhraseInfo>();
            posesBracket.Add(new PhraseInfo());
            posesBracket[0].Start = 10;
        }

of cause, posesBracket[0].start=10;编译错误CS1612: "不能修改'expression'的返回值,因为它不是变量"

如何修改列表中的值?

如何修改list<t>中的值?

问题是PhraseInfo是一个值类型,因此this[]方法将返回一个值,而不是引用,要解决它,请这样做:

PhraseInfo pi = posesBracket[0];
pi.Start = 10;
posesBracket[0] = pi;
var temp = posesBracket[0];
temp.Start = 10;
posesBracket[0] = temp;

不能将结构体定义为方法。正如他们所说,你需要引用来改变值。它是这样的

class SomeClass
    {
        private struct PhraseInfo
        {
            public int Start;
            public int Length;
        }
        private void somemethod()
        {
            List<PhraseInfo> posesBracket = new List<PhraseInfo>();
            posesBracket.Add(new PhraseInfo());
            PhraseInfo pi = posesBracket[0];
            pi.Start = 10;
            posesBracket[0] = pi;
        }
    }