屬性(property)是類(class)、結構(structure)和介面(inte***ce)的命名(named)成員。類或結構中的成員變數或方法稱為域(field)。屬性(property)是域(field)的擴充套件,且可使用相同的語法來訪問。它們使用訪問器(accessors)讓私有域的值可被讀寫或操作。
屬性(property)不會確定儲存位置。相反,它們具有可讀寫或計算它們值的訪問器(accessors)。
例如,有乙個名為 student 的類,帶有 age、name 和 code 的私有域。我們不能在類的範圍以外直接訪問這些域,但是我們可以擁有訪問這些私有域的屬性。
屬性(property)的訪問器(accessor)包含有助於獲取(讀取或計算)或設定(寫入)屬性的可執行語句。訪問器(accessor)宣告可包含乙個 get 訪問器、乙個 set 訪問器,或者同時包含二者。例如:
// 宣告型別為 string 的 code 屬性
public string code
set}
// 宣告型別為 string 的 name 屬性
public string name
set}
// 宣告型別為 int 的 age 屬性
public int age
set}
下面的例項演示了屬性(property)的用法:
using system;
namespace tutorialspoint
set}
// 宣告型別為 string 的 name 屬性
public string name
set}
// 宣告型別為 int 的 age 屬性
public int age
set}
public override string tostring()
}class exampledemo
", s);
// 增加年齡
s.age += 1;
console.writeline("student info: ", s);
console.readkey();}}
}
當上面的**被編譯和執行時,它會產生下列結果:
student info: code = 001, name = zara, age = 9
student info: code = 001, name = zara, age = 10
抽象類可擁有抽象屬性,這些屬性應在派生類中被實現。下面的程式說明了這點:
using system;
namespace tutorialspoint
public abstract int age
}class student : person
set}
// 宣告型別為 string 的 name 屬性
public override string name
set}
// 宣告型別為 int 的 age 屬性
public override int age
set}
public override string tostring()
}class exampledemo
", s);
// 增加年齡
s.age += 1;
console.writeline("student info:- ", s);
console.readkey();}}
}
當上面的**被編譯和執行時,它會產生下列結果:
student info: code = 001, name = zara, age = 9
student info: code = 001, name = zara, age = 10
C 中使用屬性 property
在c 中也可以使用像c 中的屬性。在某些特定的環境我們可以使用這一方法,雖然在效率上會比直接訪問要來得慢。但是這點效率基本可以忽略的。大致如下 我們使用 declspec property get put 來定義某個成員的get和set方法。我們在呼叫這個成員的時候,便會自動呼叫set或get方法,...
C 中使用屬性 property
在c 中也可以使用像c 中的屬性。在某些特定的環境我們可以使用這一方法,雖然在效率上會比直接訪問要來得慢。但是這點效率基本可以忽略的。大致如下 include using namespace std class test void set int value declspec property ge...
property屬性引數
1.讀寫屬性 預設是readwrite,會生成getter和setter方法 如果是readonly表示只會生成getter方法 2.setter處理 預設是assign 賦值 因此基本資料型別不需要加這個引數。因為在setter方法裡,我們經常要將乙個物件賦值給類的成員屬性,這個時候根據記憶體管理...