---
# System prepended metadata

title: '[112]天方科技 ASP.net core 教育訓練 1120309(VS專案建置、C#基礎結構)'

---

# [112]天方科技 ASP.net core 教育訓練 1120309(VS專案建置、C#基礎結構)

## 使用Visual Studio建置專案
### 點擊上方工具列 檔案→新增→專案。
![](https://i.imgur.com/vjI2zf6.png)

### 我們要使用的是 .NET Core Web API，可在上方搜尋列輸入關鍵字，或者使用下拉式選單做條件過濾。
![](https://i.imgur.com/d2G86GT.png)

### 建立的專案名稱會與解決方案名稱一樣，除非有修改過解決方案名稱，否則兩者名稱同步，可選擇專案位置。
解決方案：可用來管理多個不同專案。
![](https://i.imgur.com/rAHoOPP.png)

### 通常會將下方選項勾選，將解決方案以及專案放在同個位置。
![](https://i.imgur.com/gDYFmY0.png)

### 架構使用 .NET6.0以上版本(目前都使用最新版本7.0)，設定部分注意最下方三個選項。
**使用控制器**：會有預設Controllers建置，初次接觸建議勾選。
**啟用OpenAPI支援**：會建置swagger功能，可測試API功能，以及產生API說明文件。
**不要使用最上層陳述式**：Programs.cs檔案是專案開啟時的核心檔案，勾選此選項，會將Programs.cs裡的C#簡寫，初次接觸建議勾選，以了解C#原始結構。
![](https://i.imgur.com/8sTRhak.png)
### 建置完成
![](https://i.imgur.com/ucFKk8H.png)
### 執行專案
![](https://i.imgur.com/xaR05Sr.png)
### 執行後進入Swagger頁面
![](https://i.imgur.com/6iBciCi.png)







## C#結構、型別簡介

使用Program.cs當作範例。
![](https://i.imgur.com/Ae4Sk0F.png)

`public static void Main(string[] args)`
**Main()** 為進入點 .NET執行時先進入此方法，一般來說只有一個Main()

### 關鍵字
namespace：命名空間，所有C#程式基本包在namespace裡，用來區分class名稱，如不使用也可以，但容易出現class名稱重複的error

public：為存取修飾詞，public是公用存取層級，常用的有private、protected

static：為宣告修飾詞，static用來宣告靜態成員，常用的有readonly 、override

void：為方法的回傳型別，void指方法不會回傳值，也可使用int、string

型別系統可透過C#關鍵字介紹多加了解

參考：
[**C# 關鍵字**](https://learn.microsoft.com/zh-tw/dotnet/csharp/language-reference/keywords/)


### value type：可直接讀取值
1.Struct：結構型別，可定義變數、屬性、方法，**無法被繼承**，記憶體儲存為stack區，速度快，容量小
2.Enum：列舉型別，資料可被列舉，有被限制個數的型別
此圖a變數要賦予列舉型別WeekDay，只能從被設定的7個值選
![](https://i.imgur.com/1APSYNs.png)



### reference type：讀取值所在的參考位址
1.Class：類別型別，最常用型別，可定義變數、屬性、方法，**可被繼承**，記憶體儲存為Heap區，容量大
"："為繼承標誌，後面放置Class或者Interface則會繼承，須注意Class只能單一繼承，Interface可以多重繼承
![](https://i.imgur.com/vMWiCIu.png)

2.Interface：**本身無法實作**，需透過Class、Strcut繼承並實作，用來定義型別需要有的資料成員或方法成員，變數命名習慣以I開頭，例ITest(){}，
使用Struct繼承Interface，實作void xx()
![](https://i.imgur.com/kODswwu.png)

3.Delegate：委派型別，只定義一個**方法**的回傳型別、參數型別，只要方法所需的參數型別符合Delegate的設定，都可以被Delegate呼叫，例如Click事件，當我們寫好方法與Click事件繫結，就是將此方法委派給Click事件
![](https://i.imgur.com/P3ZLem0.png)

最後可簡寫成Lambda運算式
![](https://i.imgur.com/4nu3n4n.png)









