c#學習記錄(js相比較)

幾個重要的問題:

  1. c#強調封裝,在程序中,只有一個一個類,沒有像js一樣類似于主執行語句的那些東西。主執行的那些東西靠的是main函數來實現的。(所以js才有(function(){})這種立即執行的語法規則)

  2. c#中字段設置的意義:字段為了保持私有性,能不給的盡量不給,防止出錯,所以字段只能內部使用,外部要通過屬性的設置來對字段的數值進行訪問,修改和計算。一般的字段都是private來修飾的。

  3. static的講解:來設置全局的屬性方法等。static修飾的構造函數只能執行一次,一般是給靜態字段(全局變量)賦值

  4. 對類成員(字段,屬性,方法)的訪問:類內部訪問自身this.成員名或者直接成員名;類外部訪問其他類的成員對象.成員名(必須先實例化為對象才可以進行訪問);static的比較特殊,不能實例化,直接類名.成員名

  5. 抽象類出現的意義:c#是單一繼承模式,能不給的盡量不給,抽象類的存在就是為了解決這個問題,抽象類里只放入基類想要派生的東西,然后繼承給子類,很好的保護了基類成員的私有性。

  6. 接口是:c#語言的多態性,又一個基類可以派生好多實現不同功能的類,這些功能可以近似的稱之為接口吧。

  7. Mac編寫c#程序我的配置是:mono環境下VScode編寫,需要手動進行編譯,然后運行編譯:mcs hello.cs 運行:mono hello.exe 然后才會輸出Hello Mono World.完成了!!!

     //WTF!!!C#最大的特色是不允許直接操作內存,去掉了指針操作。
     // 建立一個student的公有類,里面有字段stuNumber和stuName,公有屬性StuNumber,構造函數Student傳入這兩個參數
     using System;
    
     public class Student{ //類名首字母看情況大寫,不大寫也不會報錯。
         public static string school; //盡量不要定義全局變量,不是必須的話,會浪費資源,通常情況下作為工具類需要定義全部變量
         private string stuNumber; //定義字段一般使用private,之后通過屬性,方法等訪問內容,保持私有性,比較安全的做法
         private string stuName;  //stuName這個字段是多余的,因為在Main函數中并沒有被用到,然而c#又是通過各種類進行對數據的操作,stuName是私有的,別的類,尤其是Main并沒有辦法訪問,所以他的存在只是在浪費資源,  
    
         public string StuNumber{   //最好大寫首字母,完成對私有類屬性的訪問修改
             get { return stuNumber; } //只讀屬性
             set { stuNumber = value; } //只寫屬性
         }
         public Student(string num, string name ){ 
             //構造函數不能有返回值類型,甚至連void都不能有,并且構造函數名必須和類名保持完全一致
             //參數有幾種:1.值類型(沒有多余修飾符)2.引用類型(ref修飾)3.輸出類型(out修飾)4.數組類型
             stuName = name;     // this帶不帶均可。
             this.stuNumber = num;   
         }
         static Student(){ //另一種構造函數模式:靜態構造函數,在整個程序中只能執行一次,一般是給靜態字段(全局變量)賦值。)
             school = "tjut";//不能加上this,因為static是一個全局變量,不屬于某一個類,沒有static的是實例方法,有static的是靜態方法。加上static的成員被類的所有的實例對象共享,便于對象之間的互相通信
         }
     }
     //同一個類中的其他方法調用:『方法名』類外部的其他方法調用:『對象名.方法名』
     //static聲明的靜態方,直接『類名.方法名』,不需要實例對象就可以使用
     class Program{
         static void Main(string[] args){ //Main函數是可執行程序的唯一入口點,程序在Main中開始,也在Main中結束,
             Student newStu = new Student("2014","msk");
             Console.WriteLine(Student.school);
             Console.WriteLine(newStu.StuNumber);
         }
     }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,915評論 18 139
  • C++文件 例:從文件income. in中讀入收入直到文件結束,并將收入和稅金輸出到文件tax. out。 檢查...
    SeanC52111閱讀 2,847評論 0 3
  • DJX_f6cf閱讀 171評論 0 0
  • 便簽:第13拆 輔導導師:牛慧芳 R《你為什么總焦慮》第119-120頁 我們每個人都有四個心理享受點,它們分別是...
    虹語閱讀 169評論 0 0