之前沒怎麼用過c#開發,由於工作原因開始學習c#。今天發現建立了乙個list集合(裡面的元素是結構體型別),後面再想給它修改和賦值就出現錯誤了。
**大致是這樣的:
//這裡定義了乙個學生結構體
public
struct stu
//建立乙個列表
list list =
newlist
<
stu>()
;//中間省略初始化過程
//然後我開始修改內容
foreach
(var u in list)
}
上面我一開始用的是迭代器去遍歷查詢,提示錯誤u只是乙個迭代器變數不能進行賦值。
後面採用for迴圈的方法,通過下標索引去選擇。
for
(int i =
0; i < list.count; i++
)}
出現錯誤提示,無法對list[i]進行修改,得知list[i]只是乙個拷貝值,不是乙個變數。
試了很多個方法,在不修改元素型別的情況下有乙個不是很方便的方法,就是建立乙個結構體變數,以結構體為單位進行賦值,具體**如下:
//建立結構體變數
stu stu;
//在for迴圈中進行修改賦值
for(
int i =
0; i < list.count; i++
)}
程式成功通過編譯。
由於此方法是以結構體為單位賦值,所以不管你是修改哪個成員,都要給結構體所有成員進行賦值,造成了很多不必要的操作。
List中的值型別無法修改的原因詳解
c sharp view plain copy public struct aa public class test 我們假設有這樣的乙個結構體。因為結構體是值型別的,在沒有修飾的情況下,我們的方法中,傳入,傳出都是傳遞的值,每次傳遞都進行了一次值的拷貝。所以,我們這樣操作是不可行的。datas 1...
List中的值型別無法修改的原因詳解
c sharp view plain copy public struct aa public class test 我們假設有這樣的乙個結構體。因為結構體是值型別的,在沒有修飾的情況下,我們的方法中,傳入,傳出都是傳遞的值,每次傳遞都進行了一次值的拷貝。所以,我們這樣操作是不可行的。datas 1...
List中的值型別無法修改的原因詳解
public struct aa public class test 我們假設有這樣的乙個結構體。因為結構體是值型別的,在沒有修飾的情況下,我們的方法中,傳入,傳出都是傳遞的值,每次傳遞都進行了一次值的拷貝。所以,我們這樣操作是不可行的。datas 1 value 10 為什麼呢,因為datas 1...