變數 型態 運算子

C#第一支程式

第一次使用C#撰寫程式, 可以使用主控台應用程式進行練習. 請由 檔案/新增/專案,選取Visual C#/主控台應用程式(.NetFramework). 然後選定資料夾, 並設定專案名稱.   “為方案建立目錄” 可以不用打勾, 這是給大型專案用的

gamepassword

底下代碼黑色部份為系統自動列出的, 藍色部份請手動輸入

using System;
namespace ConsoleApplication1
{
     class Program ç可自行修改名稱
     {
          static void Main(string[] args)
          {
               Console.WriteLine(“歡迎光臨”);
          }
     }
}

幾個注意事項如下

using System 是要引用System套件, 這套件由.netFramework提供, 包含了Console 等常用的物件.

namespace ConsoleApplication1 為定義此專案之命名空間(Name Space), 在Java 稱為 package, 說明白了, 就是說明這是位於那一個目錄的專案.

二個// 表示後面的文字為註解, 稱為單行註解.  /*…… */ 則為多行註解

static void Main(string[] args) 此為程式執行的進入點, 一個類別只允許一個Main()方法. 而後面的大括弧 “{}”必需成對出現. 最後, 每行程式碼結尾, 皆需 加上 “;”

 F5為執行並偵錯. 在Console模式下, 最後若沒有 Console.ReadLine, 則Console視窗會立即關閉.

Ctrl +F5 亦為執行但不偵錯, 程式執行到最後, 會自動要求使用者按任何鍵, 才會關閉視窗

變數(Variable)

變數(Variable), 是記憶体某一處的空間, 此空間使用一個變數名稱來稱呼它. 每次要使用變數, 都必需宣告, 告知系統變數的資料型態及其值. 型態分為基本資料型態及自訂資料型態(類別)

下列為常用的宣告方式

int var1, var2;
int var1=0, var2=0;
char c1= ‘M’; 直接使用字元
char c2= ‘\x0061′; 以 ‘a’ 字元的ASCII表示
char c3=’\u0061’; 以 ‘a’ 字元的UniCode表示
char c4=(char)97; 將int強制轉換成char
string str1 = “這是一個字串”;可使用 “+” 進行字串連接

變數命名規則

每個變數的名稱, 必需遵守如下命名規則

1. 使用匈牙利命名法 : 首字小寫, 第二單字開始, 首字大寫. 如 mScore, thisIsABook. 這是 Java的慣用法
2. 中間不可使+-*/@#…..等特殊符號, 也不可以使用空格
3. 中間可以使用底線 “_”, 如this_is_a_book, 這是C 語言的慣用法
4. 首字可以為底線, 如 _score, 但不建議, 因為這是系統級的變數
5. 首字不可以為數字, 如 58score
6. 類別名稱, 首字大寫

以上, 為一般程式的變數命名規則,  一定要熟記, 否則日後會大小寫不分.

另外, C# 的方法名稱, 採用首字大寫, 如Console.WriteLine, Console為物件, 所以首字大寫. WriteLine為方法名稱, 也是首字大寫. 

常見的關鍵字 :

abstract, as, bool, break, byte, case, catch, char, checked, class, const, continue, decimal, default, do, double, else, enum, event, false, finally, float, for, foreach, goto, if, in, int, interface, is, long, namespace, new, null, object, out, override, private, protected, public, return, short, sizeof, static, string, struct, switch, this, throw, true, try, typeof, using, virtual, void, while.

常數

常數是指其值於執行期間永遠不能變動, 宣告語法為 : const double PI=3.14159

基本型別(Value Type)

基本資料型別(primitive data type), 資料存於堆疊區(Stack),於執行開始即產生,於生命周期結束即自動移除

C#的基本資料型別如下, 可使用sizeof查大小

型別 大小 範圍 Remark
bool 1Byte true, false
byte 1Byte 0-255
sbyte 1Byte -128~127
char 2Byte 0-65535
short 2Byte -32768~32767
ushort 2Byte 0-65535
int 4Byte -21億~21億
uint 4Byte 0-42億
long 8Byte -263~263-1
ulong 8Byte 0~263-1
float 4Byte 精準到小數第7位
double 8Byte 精準到小數15位
decimal 16Byte 有效位數28
string Object

參考型別(Reference Type)

資料存於堆積區(Heap), 需使用new指令,於執行期中,動態產生。
Car a=new Car();
當方法結束,a即消失。但Car()物件尚存在Heap中,待Garbage collection啟動才刪除

C#運算子

算術運算子 : +  –  *  /  %
關係運算子 : ==  !=  >  <  >=  <=
邏輯運算子 : &&  ||  !
位元運算子 : &  |  ^  ~
位移運算子 : >>  <<
複合運算子 : +=  -=  *=  /=  %=  ^=  &=  |=  <<=  >>=
遞增遞減運算子 : ++  —
運算子優先順序 : ++è!~+-è*/% è+- è<<>>, 使用()改變順序

主控台應用程式

新增專案
執行
關閉專案
開啟專案
Exe輸出檔 : ConsoleApplication1\ConsoleApplication1\bin\Debug(Release)

主控台應用程式格式化輸入/輸出

string name;
int price;
Console.Write(“請輸入產品名 : “);
name=Console.ReadLine();
Console.Write(“請輸入單價 : “);
price = int.Parse(Console.ReadLine());
Console.WriteLine(“品名 : {0}  單價 : {1}”, name, price);

格式化輸出 : c(貨幣),Dn(n位數,不足補0), Fn(小數n位數), X(16進位)
Console.WriteLine(“{0:D10} {1:D3}”, a, 20);
Console.Write(“{0:X2} “, a); 以16進位顯示,每個數皆為2個數字. 若使用x, 就用小寫

自訂數值格式

int a = 65;
Console.WriteLine(“a=” + a.ToString(“000000  “));向右對齊,左邊補零
Console.WriteLine(“a=” + a.ToString(“######  “)); 向左對齊,右邊補空格
Console.WriteLine(b.ToString(“0000.00″));2位小數
Console.WriteLine(b.ToString(“0.000%”)); 將數字乘100再加%
: 0 # . ,
跳脫字元 : \’ \” \\ \a \b \n \r \t

資料型別轉換

隱含轉換 : 小轉大,自動轉換,int 可自動轉float
明確轉換 : 大轉小,強迫轉換,需程式設計師明確不會造成精度問題
short s=(short)int

列舉資料型別

常數的集合,只可使用於命名空間,類別,結構之內,不可宣告於Main()之內

public enum WeekDays : int
{
    Monday = 1,
    Tuesday = 2,
    Wednesday = 3,
    Thursday = 4,
    Friday = 5,
    Saturday = 6,
    Sunday = 7,
};

使用 : Console.WriteLine((int)WeekDays.Monday);

結構資料型別

    struct Product {
        public string no, name;
        public int price;
    }

    Product cpu;
    cpu.no = “001″;
    cpu.name = “處理器";
    cpu.price = 9000;

不可宣告於Main()內
欄位需使用public才可為外部使用

發佈留言