序號(hào) | 系列文章 |
---|---|
0 | 【C#基礎(chǔ)】初識(shí)編程語言C# |
1 | 【C#基礎(chǔ)】C# 程序通用結(jié)構(gòu) |
前言
?? 大家好,我是writer桑,前面一章已經(jīng)學(xué)習(xí)了C#的程序結(jié)構(gòu),那本章就開始學(xué)習(xí)C#程序中的基礎(chǔ)語法,希望看完大家能夠有所收獲,感謝支持!
基礎(chǔ)語法
首先 C# 作為一門面向?qū)ο蟮木幊陶Z言,有著許多區(qū)別于其他語言不同的地方,其中包括關(guān)鍵字的運(yùn)用、類成員、標(biāo)識(shí)符等等。本章從這幾個(gè)方面進(jìn)行學(xué)習(xí),以便對(duì)搭建 C# 程序有個(gè)初步的認(rèn)識(shí)。
首先以下面 Square 程序的實(shí)現(xiàn)做示例,以借此討論 C# 的基礎(chǔ)語法。
using System; // using 指令
namespace SquareApplication // namespace 命名空間
{
internal class Square
{
// 成員字段
private double length;
private double width;
// 成員方法
public void Acceptdetails()
{
length = 4.5;
width = 3.5;
}
public double GetArea()
{
return length * width;
}
public void Display()
{
Console.WriteLine("Length: {0}", length);
Console.WriteLine("Width: {0}", width);
Console.WriteLine("Area: {0}", GetArea());
}
}
class ExecuteSquare
{
// Main 方法的聲明
static void Main(string[] args)
{
Square s = new Square(); // 創(chuàng)建類型的新實(shí)例
s.Acceptdetails();
s.Display();
Console.ReadLine();
}
}
}
1. using 關(guān)鍵字
在 C# 程序中 using 關(guān)鍵字有導(dǎo)入命名空間、創(chuàng)建別名、釋放資源三種用法。
1,using 指令導(dǎo)入指定的命名空間
using System;
- using 指令允許使用在命名空間中定義的類型,而無需指定該類型的完全限定命名空間。using 指令以基本形式從單個(gè)命名空間導(dǎo)入所有類型。
- 程序中 using System 表示導(dǎo)入 System 命名空間, 同時(shí)一個(gè)程序允許有多個(gè) using 指令的存在 ,這種用法類似于 Python 中的 Import 語法。
2, using 別名指令為名稱空間或類型創(chuàng)建別名。
using systext = System.Text;
// using systext; // 編譯器錯(cuò)誤:未能找到類型或命名空間名"systext"
- 創(chuàng)建 using 別名指令,以便更易于將標(biāo)識(shí)符限定為命名空間或類型。 在任何 using 指令中,都必須使用完全限定的命名空間或類型,而無需考慮它之前的 using 指令。
- 注意,using 指令的聲明中不能使用 using 別名。否則會(huì)生成編譯器錯(cuò)誤;而且 using 別名指令的右側(cè)不能有開放式泛型類型。 例如,不能為 List<T> 創(chuàng)建 using 別名,但可以為 List<int> 創(chuàng)建 using 別名。
3, using 語句定義一個(gè)范圍,在此范圍的末尾將釋放對(duì)象。
// 注意 Square 類需要繼承 IDisposable 接口
using (Square s = new Square())
{
// use s..
// 離開這個(gè)代碼塊資源會(huì)自動(dòng)釋放
}
- 在程序編譯階段,編譯器會(huì)自動(dòng)將using語句生成為try-catch-finally語句,并在finally塊中調(diào)用對(duì)象的Dispose方法,來清理資源。
- using 語句提供可確保正確使用 IDisposable 對(duì)象的方便語法。 await using 語句可確保正確使用 IAsyncDisposable 對(duì)象。 C# 語言支持實(shí)現(xiàn) System.IAsyncDisposable 接口的異步可釋放類型。
2. namespace 關(guān)鍵字
在 C# 程序中 namespace 關(guān)鍵字用于聲明命名空間,在后來的版本中有新的用法。
1,namespace 關(guān)鍵字用于聲明包含一組相關(guān)對(duì)象的作用域??梢允褂妹臻g來組織代碼元素并創(chuàng)建全局唯一類型。
namespace SquareApplication
{
class Square
{
public void SquareMethod()
{
System.Console.WriteLine(
"SquareMethod inside SquareNamespace");
}
}
}
- 其他文件可以直接使用 using 指令引用 SquareApplication 命名空間。
- 命名空間的名稱必須是有效的 C# 標(biāo)識(shí)符名稱。
2,從 C# 10 開始,可以為該文件中定義的所有類型聲明一個(gè)命名空間,如以下示例所示:
namespace SquareApplication;
class Square
{
public void SquareMethod()
{
System.Console.WriteLine(
"SquareMethod inside SquareNamespace");
}
}
- 這種新語法的優(yōu)點(diǎn)是更簡單,這節(jié)省了水平空間且不必使用大括號(hào)。 提高了代碼的可讀性。
3. class 關(guān)鍵字
在 C# 程序中 class 關(guān)鍵字主要用于聲明類
類是可在一個(gè)單元中就將字段和方法及其他函數(shù)成員結(jié)合起來的數(shù)據(jù)結(jié)構(gòu),在 C# 程序中屬于最基本的類型。示例如下:
class Square
{
// Square details
}
class ExecuteSquare
{
// ExecuteSquare details
}
- 用 class 關(guān)鍵字聲明的類型為引用類型,方便其它代碼創(chuàng)建類實(shí)例對(duì)象。
- 使用 class 關(guān)鍵字聲明的類名稱必須是有效的 C# 標(biāo)識(shí)符名稱。
- class 關(guān)鍵字前面是訪問級(jí)別,默認(rèn)為 internal 類型, 即同一個(gè)程序集的對(duì)象可以訪問。
4. 成員字段
成員字段也就是在類范圍中聲明的變量
變量聲明語法: <data_type> <var_name>;在 Square 類中聲明了 width 和 length 兩個(gè)成員字段:
private double length;
private double width;
- 成員字段是在類范圍聲明的變量。 變量是類的屬性或數(shù)據(jù)成員,用于存儲(chǔ)數(shù)據(jù)。
- 變量的 data_type 聲明必須是有效的 C# 數(shù)據(jù)類型,var_name 名稱必須是有效的 C# 標(biāo)識(shí)符名稱。
- data_type 前面是變量的訪問級(jí)別,默認(rèn)為 private 類型,即對(duì)象本身在對(duì)象內(nèi)部可以訪問。
5. 成員方法
成員方法也即類中定義的可以執(zhí)行的函數(shù)
方法聲明語法:<Access Specifier> <Return Type> <Method Name>(Parameter List) { Method Body } ; Square 類包含了三個(gè)成員方法: AcceptDetails、GetArea 和 Display。
// 成員方法
public void Acceptdetails()
{
// Method Body
}
public double GetArea()
{
// Method Body
}
public void Display()
{
// Method Body
}
- 成員方法定義類執(zhí)行的操作。 方法可接受提供輸入數(shù)據(jù)的參數(shù),并可通過參數(shù)返回輸出數(shù)據(jù)。 方法還可以不使用參數(shù)而直接返回值。
- 在聲明語法中 Access Specifier、Return Type、Method Name 分別表示訪問說明、返回類型、方法名稱。其中返回類型和名稱必須聲明,訪問權(quán)限默認(rèn)為 private, 即對(duì)象本身在對(duì)象內(nèi)部可以訪問 。
6. Main 方法
在 C# 程序中 Main 方法是定義程序的入口點(diǎn)
在示例程序中,ExecuteSquare 類聲明了 Main 方法:
static void Main(string[] args)
{
// Main Method Body
}
- Main 方法是程序控制開始和結(jié)束的位置, 它決定著當(dāng)前類具體的行為。
- Main 在類或結(jié)構(gòu)中聲,Main 必須是 static,它不需要是 public。且封閉類或結(jié)構(gòu)不一定要是靜態(tài)的。
- Main 的返回類型可以是 void、int、Task 或 Task<int>。
- 在 C# 9 之前程序必須聲明 Main 方法,否則會(huì)報(bào)編譯器錯(cuò)誤, 而在 C# 9 之后(包含 C# 9)則可以使用頂級(jí)語句,無需應(yīng)用程序中顯式聲明 Main 方法。
7. new 關(guān)鍵字
在 C# 程序中可以使用 new 關(guān)鍵字創(chuàng)建實(shí)例、聲明修飾符、作為類型約束。
1,new 運(yùn)算符創(chuàng)建類型的新實(shí)例
// 創(chuàng)建類型的新實(shí)例
Square s = new Square()
{
// 在這設(shè)定初始值
};
- 使用 new 運(yùn)算符創(chuàng)建類型的新實(shí)例的同時(shí)會(huì)調(diào)用該類型的某個(gè)構(gòu)造函數(shù)
- 使用帶有new運(yùn)算符的對(duì)象或集合初始值設(shè)定項(xiàng)會(huì)實(shí)例化和初始化一個(gè)語句中的對(duì)象
2,new 關(guān)鍵字用作成員聲明修飾符
// 使用 DerivedC.Invoke 隱藏了 BaseC.Invoke。
// 字段 x 不受影響,因?yàn)槲词褂妙愃泼Q將其隱藏。
public class BaseC
{
public int x;
public void Invoke() { }
}
public class DerivedC : BaseC
{
new public void Invoke() { }
}
- new 修飾符可以顯式隱藏從基類繼承的成員
- 隱藏繼承的成員時(shí),該成員的派生版本將替換基類版本
3,new 關(guān)鍵字用作泛型類型約束
class ItemFactory<T> where T : new()
{
public T GetNewItem()
{
return new T();
}
}
- new 約束指定泛型類或方法聲明中的類型實(shí)參必須有公共的無參數(shù)構(gòu)造函數(shù)。
- 若要使用 new 約束,則該類型不能為抽象類型。
8. 標(biāo)識(shí)符
標(biāo)識(shí)符是分配給類型(類、接口、結(jié)構(gòu)、記錄、委托或枚舉)、成員、變量或命名空間的名稱。以下是 C# 標(biāo)識(shí)符命名規(guī)則和約定:
命名規(guī)則:
有效標(biāo)識(shí)符必須遵循以下規(guī)則:
- 標(biāo)識(shí)符必須以字母或下劃線 ( _ ) 開頭。
- 標(biāo)識(shí)符可以包含 Unicode 字母字符、十進(jìn)制數(shù)字字符、Unicode 連接字符、Unicode 組合字符或 Unicode 格式字符。
- 可以在標(biāo)識(shí)符上使用 @ 前綴來聲明與 C# 關(guān)鍵字匹配的標(biāo)識(shí)符。 @ 不是標(biāo)識(shí)符名稱的一部分。 例如,@if 聲明名為 if 的標(biāo)識(shí)符。 這些逐字標(biāo)識(shí)符主要用于與使用其他語言聲明的標(biāo)識(shí)符的互操作性。
命名約定:
除了規(guī)則之外,C # 程序的類型名稱、命名空間和所有公共成員也應(yīng)當(dāng)遵循PascalCase(變量命名方法)。 以下為常見的約定:
- 接口名稱以大寫字母 I 開頭。
- 屬性類型以單詞 Attribute 結(jié)尾。
- 枚舉類型對(duì)非標(biāo)記使用單數(shù)名詞,對(duì)標(biāo)記使用復(fù)數(shù)名詞。
- 標(biāo)識(shí)符不應(yīng)包含兩個(gè)連續(xù)的下劃線 ( _ ) 字符。 這些名稱保留給編譯器生成的標(biāo)識(shí)符。
9. 關(guān)鍵字
關(guān)鍵字是預(yù)定義的保留標(biāo)識(shí)符,對(duì)編譯器有特殊意義。 除非前面有 @ 前綴,否則不能在程序中用作標(biāo)識(shí)符。 例如,@if 是有效標(biāo)識(shí)符,而 if 則不是,因?yàn)?if 是關(guān)鍵字。
1,第一個(gè)表列出了是 C# 程序任意部分中的保留標(biāo)識(shí)符的關(guān)鍵字:
保留關(guān)鍵字 | ||||||
---|---|---|---|---|---|---|
abstract | as | base | bool | break | byte | case |
catch | char | checked | class | const | continue | decimal |
default | delegate | do | double | else | enum | event |
explicit | extern | false | finally | fixed | float | for |
foreach | goto | if | implicit | in | int | interface |
internal | is | lock | long | namespace | new | null |
object | operator | out | override | params | private | protected |
public | readonly | ref | return | sbyte | sealed | short |
sizeof | stackalloc | static | string | struct | switch | this |
throw | true | try | typeof | uint | ulong | unchecked |
unsafe | ushort | using | virtual | void | volatile | while |
2, 以下三個(gè)表列出了 C# 中的上下文關(guān)鍵字。 上下文關(guān)鍵字用于在代碼中提供特定含義,但它不是 C# 中的保留字。 一些上下文關(guān)鍵字(如 partial 和where)在兩個(gè)或多個(gè)上下文中有特殊含義。文章來源:http://www.zghlxwxcb.cn/news/detail-446536.html
上下文關(guān)鍵字 | ||||||
---|---|---|---|---|---|---|
add | and | alias | ascending | args | async | await |
by | descending | dynamic | equals | from | get | global |
group | init | into | join | let |
托管(函數(shù)指針調(diào)用約定) | ||||||
---|---|---|---|---|---|---|
nameof | nint | not | notnull | nuint | on | or |
orderby | partial(類型) | partial(方法) | record | remove | select | set |
非托管(函數(shù)指針調(diào)用約定) | |||
---|---|---|---|
unmanaged(泛型類型約) | value | var | when(篩選條件) |
where(泛型類型約束) | where(查詢子句) | with | yield |
- 上下文關(guān)鍵字僅在一部分程序上下文中有特殊含義,可以在相應(yīng)上下文范圍之外用作標(biāo)識(shí)符。
- 一般來說,C# 語言中新增的關(guān)鍵字會(huì)作為上下文關(guān)鍵字添加,以免破壞用舊版語言編寫的程序。
結(jié)語
?? 以上就是 C# 基礎(chǔ)語法的介紹,希望能夠?qū)Υ蠹矣兴鶐椭?。望大家多多支持,你們的支持就是筆者創(chuàng)作最大的動(dòng)力!文章來源地址http://www.zghlxwxcb.cn/news/detail-446536.html
到了這里,關(guān)于【C#基礎(chǔ)】C# 基礎(chǔ)語法解析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!