.net框架筆記——屬性
一.無參屬性
通常被稱為屬性.
物件導向設計和程式設計的其中一個原則是資料封裝.
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--> 1public class Employee
2 {
3 private string _name;
4 private int _age;
5
6 public string Name
7 {
8 get
9 {
10 return _name;
11 }
12 set
13 {
14 this._name = value;
15 }
16 }
17 public int Age
18 {
19 get
20 {
21 return _age;
22 }
23 set
24 {
25 if (value < 0)
26 {
27 throw new ArgumentOutOfRangeException("年齡不可能為負數");
28 }
29 else
30 this._age = value;
31 }
32 }
33
34 }
如果不封裝,比如上面的年齡:就會有如下程式碼:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--> public int height;//體重
static void Main(string[] args)
{
Employee employee = new Employee();
employee.Age = 12;
employee.Name = "dreamersjun";
employee.height = -12;//體重不會出現負數
Console.WriteLine(employee.Age);
Console.WriteLine(employee.Name);
//employee.Age = -1;
}
所以儘可能的封裝欄位.
當定義一個屬性時,編譯器會在生成的託管模組中產生以下3項:
1.一個表示屬性的get訪問器的方法.只有在為屬性定義了get訪問器方法時,才有這一項.
2.一個表示屬性的set訪問器的方法,只有在為屬性定義了set訪問器方法時,才有這一項.
3.一個位於託管模組後設資料中的屬性定義,不管是隻讀,只寫,或者是讀寫屬性都有這一項.
屬性限制:
第一:屬性不定義儲存位置,所以不能以ref或out引數的形式傳遞給方法.
第二:屬性不能過載.
第三:當呼叫get訪問器時,屬性不應該再改變儲存變數的狀態.
二:含參屬性
在C#中稱為索引器.通過索引器訪問的每個元素都應該和索引器的基型別一致.引數index不必須是int型別,但因為索引器通常用於陣列索引,所以index通常為int.
set訪問器能接收隱含引數value,該引數包含賦給指定下標的元素的值.
使用索引器有兩個限制.第一,因為索引器沒有定義儲存位置,所以索引器產生的值不能作為 ref引數或out引數傳遞給方法.第二:索引器必須是類的例項成員,不能被宣告為static型別.
三:對訪問器使用訪問限定符
第一:只能改變set或get訪問器之一的訪問限定符,而不能是兩者.
第二:訪問限定符必須比屬性或索引器的訪問限制更嚴格.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-465883/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- CSS筆記——屬性選擇器CSS筆記
- 框架(frameset),全域性屬性框架
- Vue筆記三——計算屬性(computed)Vue筆記
- vue 基礎入門筆記 19:計算屬性和偵聽屬性Vue筆記
- Vue學習筆記(六):監視屬性Vue筆記
- JavaScript中的物件學習筆記(屬性操作)JavaScript物件筆記
- .Net Core 學習筆記1——包、元包、框架筆記框架
- Java程式設計筆記,springboot常用屬性彙總Java程式設計筆記Spring Boot
- C#學習筆記-欄位、屬性、索引器C#筆記索引
- flutter 屬性記錄Flutter
- PHP 手冊 (類與物件) 學習筆記二:屬性PHP物件筆記
- Vue 框架-04-計算屬性Vue框架
- echarts常用屬性記錄Echarts
- flutter 學習筆記【flutter 構造方法 TextField 屬性說明】Flutter筆記構造方法
- Mysql的read_only 只讀屬性說明 (運維筆記)MySql運維筆記
- 前端筆記 - vue2.x計算屬性computed初始化前端筆記Vue
- vue學習筆記(一)---- vue指令( v-bind 屬性繫結 )Vue筆記
- Matlab_GUI學習筆記(三)——常用物件的屬性之FigureMatlabGUI筆記物件
- 內嵌標籤frameset框架屬性及用法框架
- ssm框架整合筆記SSM框架筆記
- 【CSS簡介、基礎選擇器、字型屬性、文字屬性、引入方式】前端小抄(2) - Pink老師自學筆記CSS前端筆記
- React學習手記2-屬性校驗和預設屬性React
- 使用 Moq 測試.NET Core 應用 -- Mock 屬性Mock
- CMake 屬性之全域性屬性
- 機器學習框架ML.NET學習筆記【1】基本概念機器學習框架筆記
- 機器學習框架ML.NET學習筆記【3】文字特徵分析機器學習框架筆記特徵
- defer 屬性和 async 屬性
- 記一次 .NET 某市附屬醫院 Web程式 偶發性CPU爆高分析Web
- LearnVIORB程式碼框架筆記ORB框架筆記
- Bootstrap框架:學習筆記boot框架筆記
- 機器學習框架ML.NET學習筆記【9】自動學習機器學習框架筆記
- Asp-Net-Core開發筆記:EFCore統一實體和屬性命名風格筆記
- (JavaScript學習記錄):jQuery 屬性操作JavaScriptjQuery
- CSS 屬性篇(七):Display屬性CSS
- CMake 屬性之目錄屬性
- CMake 屬性之目標屬性
- 學習筆記:vue為什麼不能監聽陣列屬性的變化筆記Vue陣列
- vue學習筆記(八)---- vue中的例項屬性(wacth和computed的使用)Vue筆記
- JavaScript學習筆記023-物件方法0包裝物件0靜態屬性JavaScript筆記物件