# 基礎語法 ## 環境設定 使用的IDE為Visual Studio,詳細步驟==暫略== ## 基礎架構 c#檔案的副檔名為`*.cs` 一開始會從其他語言的角度類化理解,直到習慣 ```csharp= //C#長得非常像Java,這是它的單行註解 /* 多行註解長得像C語言 */ using System;//using跟import一樣是在做導包的動作 namespace SampleNamespace //可以注意的是 { //class的部分也跟Java沒什麼差異 public class Program:要繼承的父類別 //繼承使用冒號-不需要寫extents { public static void Main() //方法也非常像,此為C#的Main函數 { Console.WriteLine("Hello World"); } void ABC(){ //其他方法(不帶修飾子的寫法) } } } ``` C# class的上層為命名空間,似於Java的package,詳參[官方說明](https://docs.microsoft.com/zh-tw/dotnet/csharp/language-reference/keywords/namespace) ## 從宣告變數看資料型態與參考型態 ```csharp= /* 1.以下比較特別的才額外說明,不然僅列出 * 2.先列資料型態,再列參考型態 * 3.以下變數直接都做初始化(C#變數要初始化才能用喔!) */ /*---布林---*/ bool b = true; //布林字比Java更簡短 /*---整數---*/ byte x = 254; //無號8位元整數,範圍為0~255 Byte x1 = 254; sbyte y = 12; //帶號8位元整數,範圍為-127~128 SByte y1 = 12; short z = 15; Int16 z1 = 15; ushort z2 = 15; int a = 23; Int32 a1=23; int m, o, p = 1; //我可以同時給多個變數賦值 long l=20; Int64 l1=20L; ulong l2 = 20U; ulong l3 = 20UL; //L、UL、U視情況決定是否寫 /*---浮點---*/ float f=3.5F; Single f1 = 3.5F; double d=20.0D; Double d1=20.0; decimal money=1000.0M; //貨幣型別 Decimal money1 = 1000.0M; //暫時略過科學記號 /*---字元---*/ //以下都是字母a喔~ char c ='a'; char c1 = '\x0061'; char c2 = (char)97; char c3 = '\u9710'; /*---字串---*/ string s ="Hello world!"; string path = "http://localhost:8080/abc/" + c; //即 http://localhost:8080/abc/a string msg = String.Format("說{0}次{1}",a,s); //即 說23次Hello world! string msg1 = $"說{a}次{s}"; //這樣也是 說23次Hello world! //格式化字串先略過 /*---物件---*/ Object obj=null; ``` ## 格式化字串 對應書目2-14頁內容 ```csharp= //待填坑 ``` ### 跳脫字元/算數、比較、邏輯、遞增遞減運算子 跟其他語言大相逕庭,暫時略過 ## 複合指定運算子 加強一下觀念 ```csharp= int i=0; i=i+5; //可以寫成 i+=5 ``` 其他複合指定運算子還有: |符號|含意涵義| |---|---| |-=|略| |*=|略| |/=|略| |%=|略| |^=|XOR運算後再賦值| |&=|略| |<<=|左移指定運算| |>>=|右移指定運算| 以及`|=`(由於與Markdown語法衝突,另外撰寫) [怎麼理解「運算子'+='不能應用於型別'decimal'和'double'的運算元」的錯誤](/s7sMrYFBT6e388J_M_Vvxw) ## 運算子的優先順序 對應書目2-23頁內容 ```csharp= //待填坑 ``` ## 型態轉換 明確轉型略過 ### 自動轉型 複習下自動轉型 ```csharp= int i; double d; i=d; //整數於賦值或運算後可以變成浮點數 int i1; double d1; d1=(int)i1; //但反之則不行,另外轉換會造成資料遺失 ``` ### Parse ```csharp= //我有一個文數字 int i2=int.Parse("2000"); ``` ### ToString ```csharp= //除了常見的xxx.toString還可以這樣用: string str=Convert.toString(200.0); ``` {%hackmd @themes/dracula %}