標籤:
筆試中遇到的一些C#文法方面的問題,由於平時很少用到,筆試的時候模稜兩可,現在做一個筆記。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace Leetcode 8 { 9 10 /*靜態建構函式舉例*/11 class Person12 {13 /*靜態建構函式不允許出現存取修飾詞*/14 static Person()15 {16 Console.WriteLine("我是靜態建構函式!!!");17 }18 19 20 /*21 在使用靜態建構函式的時候應該注意幾點:22 23 1、靜態建構函式既沒有存取修飾詞,也沒有參數。因為是.NET調用的,所以像public和private等修飾符就沒有意義了。24 25 2、是在建立第一個類執行個體或任何靜態成員被引用時,.NET將自動調用靜態建構函式來初始化類,也就是說我們無法直接調用靜態建構函式,也就無法控制什麼時候執行靜態建構函式了。26 27 3、一個類只能有一個靜態建構函式。28 29 4、無參數的建構函式可以與靜態建構函式共存。儘管參數列表相同,但一個屬於類,一個屬於執行個體,所以不會衝突。30 31 5、最多隻運行一次。32 33 6、靜態建構函式不可以被繼承。34 35 7、如果沒有寫靜態建構函式,而類中包含帶有初始值設定的靜態成員,那麼編譯器會自動產生預設的靜態建構函式。36 */37 }38 39 40 41 /*readonly初始化舉例*/42 class Sample43 {44 //readonly修飾的在初始化的時候可以多次賦值45 public readonly int readonlyValue = 100;/*第一次賦值*/46 public Sample(int value)47 {48 this.readonlyValue = value;/*第二次賦值*/49 }50 }51 52 53 /*static readonly和const*/54 class Fruit 55 {56 public const int color = 9;//通過類名直接進行訪問57 public static readonly string type = "西瓜";58 /*s59 public Fruit()60 {61 type = "香蕉";//不能在普通的建構函式中賦值62 }*/63 64 static Fruit()//可以在靜態建構函式中賦值65 {66 type = "蘋果";67 }68 }69 /*70 const和static readonly的確非常像:通過類名而不是對象名進行訪問,在程式中唯讀等等。在多數情況下能混用。71 二者本質的差別在於,const的值是在編譯期間確定的,因此只能在聲明時通過常量運算式指定其值。72 */73 }
C#文法需要注意的地方