C# 基本語法

      在〈C# 基本語法〉中尚無留言

專案開啟

對於初學者, C# 開啟新專案大約是三種, Console mode, Windows Form, 及WPF

Console Mode

由檔案/新增/專案, 然後選取Visual C#,選取「主控台應用程式」,「將解決方案與專案置於相同目錄中」打勾,下一步的架構選「.Net10.0(長期支援)」,勾選「不要使用最上層陳述式」,這樣才會呈現最完整的程式碼。另外請不要選取 (.Net Framework),這是舊版的 4.8 版。

console

Windows Form

若要開發視窗程式的話, 則選擇Windows Form App(.Net Framework), 這是傳統的設計方式, 較為直覺, 也比較好學. 但很難使用.

Windows Form有個缺點, 就是在win10上執行時, 畫面會跑掉, 字体也會變模糊

form

開啟後的畫面如下

form1

WPF

Windows Presentation Foundation, 使用XML描述視窗介面, 較難學, 但在使用上比Windows Form好用很多, 且在Win10上執行沒有任何問題. 日後的專案, 應該全面改用WPF, 所以建議千萬不要再使用 Windows Form了。

開啟專案時, 請選擇「WPF 應用程式」。請注意,不要選「WPF應用程式(.Net Framework)」。

wpf

開啟後的畫面如下

wpf1

變數、型態、運算子

C#第一支程式

第一次使用 C# 撰寫程式,可以使用主控台應用程式進行練習。

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

using System;
namespace ConsoleApp1
{
     internal 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 亦為執行但不偵錯, 程式執行到最後, 會自動要求使用者按任何鍵, 才會關閉視窗。

執行後會在ConsoleApp1\ConsoleApplication1\bin\Debug(Release)\net10.0下產生 .exe 檔。

變數(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為方法名稱, 也是首字大寫. 

常數

常數是指其值於執行期間永遠不能變動, 宣告語法為 : 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#運算子

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

Console.Write 格式化輸入/輸出

格式化輸出如下。{}內第一個數為欄位數,後面加入「位數:格式」。

short a = 10;
Console.WriteLine("{0:D3}",a);//3位,不足補0
Console.WriteLine("{0,3:d}", a);//3位,靠右
Console.WriteLine("{0,-3}", a);//3位,靠左
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才可為外部使用

[/member_only]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *