C# Module 3 建立與使用變數

C# Module 3 建立與使用變數

  • 關鍵字
  • 識別字
  • 程式結構
  • 資料型別
  • 資料型別轉換
  • 位元運算子
  • 移位運算子
  • 格式化輸出

 

  • 關鍵字 (Keywords)

    • 關鍵字在C#程式語言事先賦予的字元或字串,已經具有特別用途。
abstract do in protected true
as double int public typeof
base else interface readonly uint
bool enum internal ref ulong
break event is return unchecked
byte explicit lock sbyte unsafe
case extern long sealed ushort
catch false namespace short using
char finally new sizeof virtual
checked fixed null stackalloc volatile
class float object static void
const for operator string while
continue foreach out struct  
decimal goto override switch  
default if params this  
delegate implicit private throw  

 

  • 識別字 (Identifier)

    • 程式設計時我們必須為每一個變數、常數、方法、函式、程序、類別及物件等命名, 以上所有變數、常數、方法等名稱, 統稱為程式語言的識別字
    • 識別字必須以字母、@、底線_ 為開頭
    • 識別字的英文大小寫視為不同的字元或字串
    • 識別字是自己創建的,最好具有特別意義,有助於日後閱讀及維護
    • 不可以用一些奇怪的符號或數字當作開頭
    • 識別字的命名方法又可分為:
      • Pascal Casing (帕斯卡命名法) StuNumber
      • Camel Casing (駝峰命名法)
        • 大駝峰 (跟帕卡斯命名法一樣) StuNumber
        • 小駝峰 (跟匈牙利命名法一樣) stuNumber
      • Hungarian Notation (匈牙利命名法) stuNumber
        • (變數名稱使用匈牙利命名法,其餘命名空間名稱、類別名稱、方法名稱多以Pascal Casing命名法)
  • 程式結構

    • 命名空間
      • 類別(class, struct, enum, delegate, interface)
        • 方法(field, method, property, constant, event)
  • 宣告變數
    • 先寫資料型態,再寫變數名稱
    • 區域變數:寫在方法裡面,使用前要設定變數的值
    • 類別變數:寫在類別裡面(又稱做欄位),沒有宣告變數值也可以使用,因為有預設值
  • 資料型別

    • 因為不同性質的資料需要的記憶體空間均不同, 而 C# 為了有效地使用記憶體儲存資料, 於是規劃了以下的資料型別, 分別是數值型別的整數、浮點數、decimal、char、bool 及參照型別的 object 與 string。 這些型別又稱為預設的資料型別, 以便提昇資料處理效率, 也就是讓小東西用小箱子裝、大東西用大箱子裝的道理, 如此才能更有效率地管理記憶體。
    • 實質型別 (Value Type)
      • 內建型別 (如表一)
      • 結構 struct (結構型別&結構內的成員預設值為private)
      • 列舉 enum  (列舉型別&列舉內的成員預設值為public)
    • 參考型別 (Reference Type)
      • 類別 class (類別內的成員預設值為private)
      • 介面 interface (介面內的成員預設值為public)
      • 委派 delegate
      • 陣列 array
      • 物件 object
      • 字串 string

 

表一:

別名 .NET內建別名 所需記憶體(位元組byte) 值域&說明
sbyte System.Sbyte 1 負2的7次方 ~ 正2的7次方減1
byte System.Byte 1 0 ~ 2的8次方減1
short System.Int16 2 負2的15次方 ~ 正2的15次方減1
ushort System.UInt16 2 0 ~ 2的16次方減1
int System.Int32 4 負2的31次方 ~ 正2的31次方減1
uint System.UInt32 4 0 ~ 2的32次方減1
float System.Single 4 (有效位數7) check google
double System.Double 8 (有效位數15~16) check google
long System.Int64 8 負2的63次方 ~ 正2的63次方減1
ulong System.UInt64 8 0 ~ 正2的64次方減1
decimal System.Decimal 16 (有效位數28) 世界無敵大...check google
bool System.Boolean 1 判斷true/false
char System.Char 2 單一Unicode字元
object System.Object   物件型別,可存放任意型別的資料
string System.String   字串型別

 

  • 資料型別的轉換

    • 隱含轉換 Implicit Conversion - 自動轉換 數值小的轉成數值大的"OK" (short可直接轉換成int或long型別)
      • float a = 3.4f; int b = 200; a = b; Console.WriteLine(a); //結果為200
    • 明確轉換 Explicit Conversion - 強制轉換 數值大的轉成數值小的"不OK" (short不可直接轉換成int或long型別)
      • float a =3.4f; int b =200; b = (int)a; Console.WriteLine(b); //結果為3 (小數部分會被捨棄)

 

  • 位元運算子 (1=true, 0=false)

    • (A&B) And -有錯就錯!
    • (A|B) Or -有對就對!
    • (A^B) Either...Or -不可都對也不可都錯! (兩運算值相同則為0(false),相反則為1(true))
    • (~A) Not - 相反! (此為單一運算子,將1轉為0,0轉為1)
  • 移位運算子

    • ">>"右移運算子-從左邊開始補0計算 (看移幾位就補幾個0)
    • "<<"左移運算子-從右邊開始補0計算 (看移幾位就補幾個0)
  • 格式化輸出

    • 語法為 {index1,alignment:formatChar}
      • index1 表示第1比資料,依此類推
      • alignment 表示對齊的寬度(正號靠右對齊,負號靠左對齊)
      • formatChar 表示格式字元(如下表)
格式字元 功能說明
Cor c 以貨幣NT$方式顯示資料,預設小數兩位 Console.WriteLine("{0,0:C3}", 25); //顯示NT$25.000
D or d 以n位數顯示十進位資料,空白處補0  Console.WriteLine("{1,0:D5}", 25); //顯示00025
E or e 科學記號E為10的次方,預設取小數6位 Console.WriteLine("{2,0:E)", 250); //顯示2.500000E+002
F or f 以小數n位數來顯示資料,四捨五入 Console.WriteLine("{3,0:F3", 25.66666); //顯示25.667
N or n 使用千位符號,若N1表示保留小數第1位,預設為小數第二位 Console.WriteLine("{4,0:N3}", 2500); //顯示2,500.000
X or x 以十六進位制顯示資料 Console.WriteLine("{5,0:X}", 255); //顯示ff