標籤:style color 使用 for sp 代碼 on c new
變數範圍
變數名:變數名就像實驗室中容器的編號。{} 相當於實驗室。
變數的定義:
有嵌套關係的{}語句塊中只允許定義唯一的變數。
沒有嵌套關係的{}語句塊可以定義同名變數。
變數的有效範圍:
變數在其聲明的{}和它的嵌套子塊{}有效;
變數的提示:
變數盡量在用之前最近的位置聲明。盡量減少有效範圍。
從邏輯上講 for (int i = 0; i < 5; i++) { } if(){}else {} while(){ } 是一個整體
相當於 {for (int i = 0; i < 5; i++) { }} { if(){}else {} } {while(){ }}
基本概念
類是:具有相同屬性和行為對象的抽象
屬性值:在物件導向編程裡,欄位作為儲存屬性值的變數。欄位聲明時可以不賦值,會有預設的值。
屬性:使用特殊的“行為”來表現,一對get/set行為用來展現對象的屬性。get/set稱為屬性的“訪問器”,
方法:方法就是類能夠執行的動作。函數中定義的成員使用前必須賦值。
物件導向的三個特性:封裝、繼承、多態。
類中只能定義欄位、方法等不能包含其他代碼。
this:表示“當前執行個體/當前對象”,即哪一個對象正在操作屬性訪問器,this就表示哪個對象。
存取權限/存取權限
控制類或類成員在哪些地方可以被訪問,這樣達到物件導向中“封裝”的目的。
類成員預設為private
public 公開 對訪問成員沒有層級限制
private 私人 只能在類的內部訪問
protected 受保護的 只能由該類和該類的衍生類別訪問,不管該衍生類別和基類是否在同一程式集中
internal 內部的 訪問僅限於程式集中
類預設是internal
public 公開 對訪問成員沒有層級限制
internal 內部的 訪問僅限於程式集中
Person p1 = new Person();
p1.Age =20;//修p1所指向對象的Age欄位值
Person p2 = p1;//p2指向p1當前指向的對象
p2.Age = 99;
屬性 習慣用法:屬性開頭字母大寫,欄位開頭字母小寫
欄位設為private的原因。防止直接對欄位非法進行讀取或修改操作。
private int age;
//當進行讀取或修改操作時,確定不需要對操作進行限制時可以簡寫
public int Age { get; set; }
//當進行讀取或修改操作時,需要對讀取或修改操作進行限制時
public int Age{ get { return age; } set { age = value; } }
反編譯:
public void set_Age(int value) {
this.age = value;
}
public int get_Age() {
return this.age;
}
備忘:非簡寫的情況下:可以只用set或者只用get就可以定義唯讀或者唯寫屬性。
簡寫情況下:set和get必須同時存在。
建構函式:
建構函式中對對象進行初始化。是用來建立對象的特殊函數,函數名和類名一樣,沒有傳回值,連void都不用。
建構函式可以有參數,new對象的時候傳遞函數參數即可。可以重載,也就是有多個參數不同的建構函式。
如果不指定建構函式,則類有一個預設的無參建構函式。如果指定了建構函式,則不再有預設的無參建構函式,如果需要無參建構函式,則需要自己來寫。
建構函式的調用順序(父子)
常量
在類中定義的常量,對於類的任何執行個體都不變。沒有必要通過類的執行個體去調用。
class Program { public const double PI = 3.15; }
引用:在類外部,Program.PI; 類名.常量名 的形式引用
const常量。常量名所有字母全大寫。一定不會變化的值才能聲明為常量。
靜態成員
也可以理解為全域成員。如:中國人類 有成員 name,language 。name會因為不同的人而有不同的值。而language僅與中國人類有關。因為所有人都是漢語。
在類外部參考:類名.變數名 類名.方法名()
int a = Person.age; Person.SetName();
class Person{
//靜態成員不與類的任何執行個體相關聯。對於類只有這一份。起到全域的作用。
public string name = "王菲";
public static int age = 15;
//在類內部的靜態方法中,不能調用非靜態變數和方法。
public static void SetName() {
//string s = name;
//SetAge();
}
//在類內部的非靜態方法中,可以調用靜態變數和方法。
public void SetAge() {
int i = age;
SetName();
}
}
C# 類基礎知識