<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                面向對象:封裝、繼承、多態。 類有:屬性+方法 # 1、字段 ## 變量、常量 # 2、類 類中有屬性、對象以及方法。 > 如下,在類中創建了屬性以后比如 enum 屬性GG(屬性的識別符號是get、set),需要再創建一個對象Program pro = new Program(); 然后對象就可以直接pro.GG 直接調用其中的值。 > c#會將類中的變量初始化值,默認為0,但不會自動將main()方法(或其他方法)局部變量初始化值: ``` class Program { static int i; //這里的static 必須寫 static void Main() { console.writeline(i); // 輸出的結果為0 console.readline(); } } ``` ![](https://ws4.sinaimg.cn/large/006tKfTcly1frhvkqruf8j30aa05lglu.jpg) 但下述代碼則會提示錯誤: ``` class Program { static void Main() { int i; console.writeline(i); // 提示錯誤 } } ``` CS0165 C# Use of unassigned local variable 'i' ![](https://ws2.sinaimg.cn/large/006tKfTcly1frhvluxv4vj30gg0akt9t.jpg) ## 枚舉 限定用戶權限的時候一般可以用枚舉。 `enum` [enum 參考](https://docs.microsoft.com/zh-tw/dotnet/csharp/language-reference/keywords/enum) 它用于聲明一組命名的常數,當一個變量有幾種可能的取值時,可以將它定義為枚舉類型。??? 有點類似于數據驗證,防止我們在寫代碼的時候輸入錯誤。 ``` public enum MM { cs = 1, //用逗號,不是分號 c = 2, java = 3 //最后一個不用加分號 } ``` 則我們在寫后續的定義的時候,會自動跳出讓我們輸入相關項,以防輸入錯誤。 ![](https://ws3.sinaimg.cn/large/006tKfTcgy1frhvyw1bbpj30dm093t96.jpg) 此時輸出的是字段名。如果要輸出值,則可以在前面加(int)強制類型轉換。 ![](https://ws4.sinaimg.cn/large/006tKfTcgy1frhw1gqobwj309i089jrn.jpg) ``` public enum MM { cs = 1, //用逗號隔開 c = 2, java = 3 } static void Main() { console.writeline((int)MM.c); } ``` > 如果不對cs c java這三個變量賦初始值,則默認從0開始遞增1。也就是,如果我們輸入public enum MM{c, cs, java} 那么consolewriteline(MM.java)的時候,將輸出2。 # 2、屬性——可用于控制非法數據的輸入 ## 基本用法 有時候需要對數據進行保護,則需要用到屬性。 用 get+set 實現邏輯驗證。 比如如果定義public int age, 用戶在其他 class 中調用 age 并賦值為-2,是沒問題的,但與我們的設想不同,因為年齡無負數。這時候用類的屬性來。 **等于說,是在私有的 對象age 跟實際對象 stu中,用一個 Age 屬性過渡,stu先調用的是 Age 屬性,再通過 Age 對 age 進行最終賦值。所以應該寫為stu.Age,而不是stu.age** 一般寫法 ``` get { return age;} set { age = value;} ``` ``` class Student() private int age; //先私有化,以防止被變更。 public int Age //再公開,與上面相同類型,可對其進行調用。 { get { return age; } set { if (value > 0 && value <100) //value 為隱含變量,意思就是用戶輸入的這個數 { age = value; } else { age = 18; } } } class Program() static void Main() { stu.Age = -2; //注意這里是大寫的屬性。此時如果再寫-2,那么會顯示18。 console.writeline(stu.age); } ``` ![](https://ws3.sinaimg.cn/large/006tKfTcgy1frhx9tho4nj30gp080t9h.jpg) ## 屬性特點 - 封裝字段,將類中的字段與屬性綁定; - 避免非法數據的訪問,如年齡age = -2; - 保證數據完整性。 ![](https://ws3.sinaimg.cn/large/006tKfTcgy1frhx9ymjr9j30hc06zgm3.jpg) ### 屬性常用錯誤 1. 與枚舉結合:需要寫成枚舉的形式,而不能直接寫成字符串形式。 ![](https://ws1.sinaimg.cn/large/006tKfTcgy1frhxqmldxoj30dz06o0tm.jpg) ![](https://ws2.sinaimg.cn/large/006tKfTcgy1frhxy3bmjbj30g206xt9j.jpg) # 3、構造函數 默認與類名相同的名稱 ## 有參構造函數 可以初始化變量值。需要先定義相關的屬性以后,再定義有參構造函數。 ``` class student { //對屬性進行初始化(get; set) private name; public Name { get { return name; } set { name = value; } } private age; public Age { get { return age; } set { age = value; } } //構造函數對變量值進行初始化(構造函數名稱默認與類名相同) public Student(string name, int age) { Name = name; Age = age; } } Student st1 = new Student("old wang", 21); //這時候就可以直接用有參構造函數來對其進行初始化。 console.writeline(st1.Name); ``` > 注意,如果上述已經使用了有參構造函數,則Student st1 = new Student(); 會提示錯誤,因為需要在括號里面直接初始化。 > CS7036 C# There is no argument given that corresponds to the required formal parameter 'name' of 或者也可以寫成: ``` string name, int age; public Student(string name, int age) { this.name = name; //因為事先定義了 name 和 age 兩個變量,所以這里直接用 this 來調用類中的變量即可 this.age = age; } ``` ![](https://ws3.sinaimg.cn/large/006tKfTcgy1frhz6a6hixj30h00c0myk.jpg) 此時可以在有參構造函數前面多寫一句 public student(){} 即可。 ![](https://ws3.sinaimg.cn/large/006tKfTcgy1frhz8sdebij30fh04djrp.jpg) ## 私有構造函數 ![](https://ws2.sinaimg.cn/large/006tKfTcgy1frhzegtoj4j30io0910tu.jpg) ``` private Student(){} //靜態方法 public static Student Create() //公共靜態方法:student下面的create方法 { return new Student(); } public Student(string name, int age) //上一個例子 { Name = name; Age = age; } //在其他class中調用時: Student st 2 = Student.Create; //就可以直接調用了。 ``` ## 靜態構造函數 加static即可。 - 靜態構造函數只執行一次;避免重復執行。 - 前面不能加public 之類的訪問修飾符; - 不能帶任何參數,一個類只能有一個靜態構造函數,只能訪問類的靜態成員(加static的成員),不能訪問實例成員(不加static的成員)。 比如:要判斷今天是星期幾,如果是工作日,則控制臺背景色為紅色,如果是周末,則控制臺背景色為綠色:只在引用類之前執行一次,不需要再多執行。 ``` class UI { static UI() { DateTime date = DateTime.Now;//先獲取當前星期 if (date.DayOfWeek == DayOfWeek.Saturday || date.DayOfWeek == DayOfWeek.Sunday) { Console.BackgroundColor = ConsoleColor.Green; } else { Console.BackgroundColor = ConsoleColor.Red; } } } class Program { static void Main() { UI ui = new UI(); Console.ReadLine(); } } ``` 輸入時就顯示背景為綠色。 ![](https://ws4.sinaimg.cn/large/006tKfTcgy1frhzyd8cq4j308605ogls.jpg) ## 析構函數 ![](https://ws1.sinaimg.cn/large/006tKfTcgy1fri0c0yxddj30fo06mq3d.jpg) # 4、訪問權限 public; private; protected; internal # 5、類的靜態成員 不同類中對同一個變量進行操作 c#(二)課時 12 如果是 Student中的 static 靜態變量 Name,則在其他類中,直接用`Student.Name`調用即可。 > 靜態類或者靜態變量可以理解為全局變量,也就是所有其他類可以直接共用的變量,就把它設置為靜態變量。 ![](https://box.kancloud.cn/d18c983e06ab290c7fbda05224eaf577_709x381.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看