簡體   English   中英

我該如何修改列表中的值 <t> ?

[英]how can i modify a value in list<t>?

    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:“無法修改'表達式'的返回值,因為它不是變量”

我怎樣才能修改列表中的值?

問題是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;
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM