---
# System prepended metadata

title: 基礎語法

---

# 基礎語法
## 環境設定
使用的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 %}