C#第一支程式
第一次使用C#撰寫程式, 可以使用主控台應用程式進行練習. 請由 檔案/新增/專案,選取Visual C#/主控台應用程式(.NetFramework). 然後選定資料夾, 並設定專案名稱. “為方案建立目錄” 可以不用打勾, 這是給大型專案用的
底下代碼黑色部份為系統自動列出的, 藍色部份請手動輸入
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才可為外部使用