我在C#中使用了以下代碼,使用了foreach
。在一個循環中,我正在修改List<T>
,而在另一個循環中修改了string
陣列。在C#中爲迭代變量賦值?
我們不能直接爲迭代變量賦值或空值,但我們可以修改它的屬性,並且修改最終反映在List
中。
所以這基本上意味着迭代變量是對列表中元素的引用,那麼爲什麼我們不能直接給它賦值呢?
class Program
{
public static void Main(string[] args)
{
List<Student> lstStudents = Student.GetStudents();
foreach (Student st in lstStudents)
{
// st is modified and the modification shows in the lstStudents
st.RollNo = st.RollNo + 1;
// not allowed
st = null;
}
string[] names = new string[] { "me", "you", "us" };
foreach (string str in names)
{
// modifying str is not allowed
str = str + "abc";
}
}
}
學生類:
class Student
{
public int RollNo { get; set; }
public string Name { get; set; }
public static List<Student> GetStudents()
{
List<Student> lstStudents = new List<Student>();
lstStudents.Add(new Student() { RollNo = 1, Name = "Me" });
lstStudents.Add(new Student() { RollNo = 2, Name = "You" });
lstStudents.Add(new Student() { RollNo = 3, Name = "Us" });
return lstStudents;
}
}
「不允許」是什麼意思? – 2013-03-26 09:03:40
「不允許」表示編譯錯誤。 – Brij 2013-03-26 09:04:34