【Unity|C#】C#基礎總結

【學習資料】html

        > 在線文檔數組

            官方文檔:https://docs.microsoft.com/zh-cn/dotnet/csharp/ide

            菜鳥教程:https://www.runoob.com/csharp/csharp-tutorial.html函數

        > 視頻教程學習

            騰訊學院、Siki學院ui

 


 

【筆記】spa

  • 基礎語法

    根據學習資料,自學學習。3d

 

  • 標識符命名指針

    • 標識符必須以 字母下劃線(_) 或 @ 開頭,後面能夠跟一系列的 字母、數字(0-9)、下劃線(_)、@。code

    • 不能使用C#保留的關鍵字,如 if,但能夠爲 @if

 

  • 值類型及取值範圍

    • 常量前綴指定基數

      • 十進制:沒有前綴

      • 十六進制:0x 或 0X 。如:0x10 表示 十進制 16

      • 八進制:0 。如:010 表示 十進制 8

      • 二進制:0b 。如:0b10 表示 十進制 2

    • 常量後綴指定精度(U 和 L 分別表示unsigned和long)

      • u 或 U : 10U    表示 uint

      • l 或 L   : 10L    表示 long

      • LU組合: 10LU 表示 ulong

 

  • 特殊運算符

 

  • 對象類型(object)

    • 全部類型的最終基類(包括值類型、struct、class)都是object。

    • 裝箱:將 值類型 轉爲 object        

    • 拆箱:將 objec t轉爲 值類型

    • 箱/拆箱會產生必定的消耗,儘可能少用。

 

  • 訪問修飾符

public 全部對象
private 只有本類的內部函數
protected 本類及子類內部函數
internal 同一程序集(dll)
protected internal 同一程序集(dll),或 其餘程序集的子類內部函數

 

  • 可空類型(Nullable、?、??)
    • int? i = 3 等同於 Nullable<int> i = new Nullable<int>(3)

    • int i;   // 默認值爲0

    • int? i; // 默認值爲null

    • 合併運算符(??):num3 = num1 ?? 5.34;  // num1 若是爲空值則返回 5.34

 

  • 數組(Array)

    • 一維數組:int[] numbers = new int[10];

      • 初始化:= new int[]  {1, 2, 3, 4, 5};

      • 初始化:= {1, 2, 3, 4, 5};

    • 二維數組:string[,] names = new string[5, 4];

      • 每行個數固定相同(都是4)

      • 初始化:= { {"a", "b", "c", "d"} , {"e", "f", "g", "h"} };

    • 交錯數組:byte[][] scores = new byte[5][]

      • scores[i] = new byte[i + 3]

      • 每行個數能夠不一樣

      • 初始化:= {new int[]{1,2,3} , new int[]{1,2,3,4} };

 

  • 類(class)

    • base : 表示父類對象

    • 父類初始化:在初始化列表裏進行

    • C#不支持類的多繼承,但能夠繼承多個接口(interface)

    • sealed:密封類,不能被繼承

    • 靜態多態性

      • 函數重載(不一樣參數)

      • public Tabletop(double l, double w) : base(l, w)
        { }
      • 運算符重載

      • public static Box operator +(Box b, Box c)
        { }

    • 動態多態性
      • 抽象類:abstract ,子類中重寫函數 override

      • 虛函數:virtual    ,子類中重寫函數 override

 


 

【擴展知識】

  • 值類型 、引用類型 、ref

    • 值類型:當形參值改變時,實參值不變;至關於 形參是實參的拷貝,是不一樣的對象

    • 引用類型:當形參值改變時,實參值也會改變;至關於 形參和實參,指向同一個對象,但形參和實參不是一個變量(相似指針變量)

    • 引用傳遞ref與「引用類型」區別在於,形參與實參是同一個變量(至關於取個別名)

    • class C    
      {
          public int value = 0;
      }
      // 實參和形參是2個變量,但指向同一個對象
      void changeC1(C c)
      {
          c.value = 10;
          c = new C();
          c.value = 30;
      }
      // ref : 形參是實參的引用,是同一個變量
      void changeC2(ref C c)
      {
          c.value = 10;
          c = new C();
          c.value = 30;
      }
      
      // 調用
      C m_c1 = new C();   //
      C m_c2 = new C();   //
      changeC1(m_c1);     // 結果爲 10
      changeC2(ref m_c2); // 結果爲 30

 

  • struct 、class

    • 類 是 引用類型,結構體 是 值類型

    • 所以結構體不能=null,也不須要使用new

    • 結構體 不支持繼承

    • 結構體 不能聲明 默認(無參)構造函數,不能聲明 析構函數

    • 結構體成員 不能指定爲 abstract、virtual 或 protected

 

  • 抽象函數(abstract) 、虛函數(virtual)

    • abstract:父類只聲明沒有具體實現,子類必須重寫實現父類中的抽象函數

    • virtual:子類能夠不重寫父類的虛函數

 

  • 抽象類(abstract) 、接口(interface)

    • 抽象類:依然是一個類,不能被實例化,它仍然包含類的函數

    • 接口:至關因而個規則,裏面只能有方法、屬性、索引、事件

    • 抽象類:有抽象的方法,也有不抽象的方法。子類必須實現父類的抽象方法

    • 接口:繼承了接口後,全部的接口方法都必須實現

    • 一個類只能繼承一個父類,可是能夠實現多個接口

 

  • 二進制表示

      resize,m_lfit,w_600,h_800,limit_1

 

  • 位運算(& | ^ ~ << >>)

    • & 、| 、^ 、~ :符號位參與運算

      • 1 & -1 = 1

      • 1 | -1 = -1

      • 1 ^ -1 = -2

      • -1 ^ -8 = 7 

      • ~1 = -2

      • ~-1 = 0

      • ~-8 = 7

    • << :符號位參與運算;高位丟棄,低位補0

      • -2147483646 << 1 = 4

      • -2147483646 << 29 = 1073741824

      • -2147483646 << 30 = -2147483648

      • -2147483646 << 31 = 0

      • -2147483646 << 32 = -2147483646

      • -2147483646 << 33 = 4

    • >>

      • 有符號:

        • C#   :補符號位(算術右移)

        • C++:各編譯器處理方法不同,有的補符號位(算術右移),有的補0(邏輯右移)

      • 無符號:高位補0

      • -1 >> 1 = -1

      • -1 >> 2 = -1

      • -127 >> 1 = -64

      • -127 >> 6 = -2

      • -127 >> 7 = -1

      • -127 >> 8 = -1

      • -127 >> 31 = -1

      • -127 >> 32 = -127

      • -127 >> 33 = -64

相關文章
相關標籤/搜索