在C#中,我們定義一個屬性如下:C#,通過屬性獲得的價值使用++運算符(獲得)
// m_age is a private int in the class Employee
public int Age
{
get {return m_age;}
set {m_age = value;}
}
現在,當我做
static void Main()
{
Employee e = new Employee(age: 28); // Create new Employee
System.Console.WriteLine("Age: {0}", e.Age); // Prints 28
// Now increase age by 1
++e.Age;
System.Console.WriteLine("Age: {0}", e.Age); // Prints 29
}
爲什麼會出現
++e.Age;
工作嗎?我做了一些搜索,發現Properties - by value or by reference?
這篇文章有一個答案:
從技術上講它總是值,但你必須明白的是傳遞什麼。由於它是一個引用類型,所以你傳遞了一個引用(但是通過值)。
希望是有道理的。您總是將結果傳回給值,但如果類型是引用,則您將引用通過值傳遞回來,這意味着您可以更改該對象,但不能更改該引用的對象。
(我的確瞭解了值類型和引用類型,因此我很困惑)。
現在,如果確實
e.Age
返回m_age的副本(int是值類型),會不會我們運用增量++的副本?
或...下列是真的嗎?
++e.Age;
是完全一樣的/被轉換到
e.Age = e.Age + 1
僅
該
++e.Age;
返回一個值,而
(e.Age它已遞增後的值)e.Age = e.Age + 1
是一個n賦值並且不返回一個值(就像C++會做的那樣)。
看來我錯了e.Age = e.Age + 1沒有返回一個值,它確實在返回後返回e.Age的值。 – jensa