在上篇文章中,你跟著我寫了一個HelloWorld,本篇中,我們來談談一些C#程式中的小概念 1、C# 程式結構 一個 C# 程式主要包括以下部分: 命名空間聲明(Namespace declaration) 一個類(class) Class 方法 Class 屬性 一個 Main(主)方法 語句( ...
在上篇文章中,你跟著我寫了一個HelloWorld,本篇中,我們來談談一些C#程式中的小概念
一個 C# 程式主要包括以下部分:
- 命名空間聲明(Namespace declaration)
- 一個類(class)
- Class 方法
- Class 屬性
- 一個 Main(主)方法
- 語句(Statements)& 表達式(Expressions)
- 註釋
我們把上一篇的代碼添出來
1 using System; 2 3 namespace HelloWorld 4 { 5 class Program 6 { 7 static void Main(string[] args) 8 { 9 Console.Write("HelloWorld"); 10 Console.Read(); 11 } 12 } 13 }
程式的第1行 using System; - using 關鍵字用於在程式中包含 System 命名空間。 一個程式一般有多個 using 語句
下一行namespace HelloWorld - namespace關鍵字用於申明命名空間,一個命名空間里有多個類。本代碼中,表示一個為HelloWorld的命名空間
下一行class Program - class關鍵字用於申明一個類,類 Program 包含了程式使用的數據和方法聲明。類一般包含多個方法。方法定義了類的行為。在這裡,Program 類只有一個 Main 方法。
下一行定義了 Main 方法,是所有 C# 程式的 入口點。Main 方法說明當執行時 類將做什麼動作。
註釋是用於解釋代碼。編譯器會忽略註釋的條目。在 C# 程式中,多行註釋以 /* 開始,並以字元 */ 終止,如下所示:
/* 這是C#中 的多行註釋的 演示 */
單行註釋是用 '//' 符號表示。例如:
//這是C#中的單行註釋的演示
標識符是用來識別類、變數、函數或任何其它用戶定義的項目。在 C# 中,類的命名必須遵循如下基本規則:
- 標識符必須以字母、下劃線或 @ 開頭,後面可以跟一系列的字母、數字( 0 - 9 )、下劃線( _ )、@。
- 標識符中的第一個字元不能是數字。
- 標識符必須不包含任何嵌入的空格或符號,比如 ? - +! # % ^ & * ( ) [ ] { } . ; : " ' / \。
- 標識符不能是 C# 關鍵字。除非它們有一個 @ 首碼。 例如,@if 是有效的標識符,但 if 不是,因為 if 是關鍵字。
- 標識符必須區分大小寫。大寫字母和小寫字母被認為是不同的字母。
- 不能與C#的類庫名稱相同。
關鍵字是 C# 編譯器預定義的保留字。這些關鍵字不能用作標識符,但是,如果您想使用這些關鍵字作為標識符,可以在關鍵字前面加上 @ 字元作為首碼。
在 C# 中,有些標識符在代碼的上下文中有特殊的意義,如 get 和 set,這些被稱為上下文關鍵字(contextual keywords)。
下表列出了 C# 中的保留關鍵字(Reserved Keywords)和上下文關鍵字(Contextual Keywords):
保留關鍵字
上下文關鍵字
詳見:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/
在 C# 中,變數分為以下幾種類型:
- 值類型(Value types)
- 引用類型(Reference types)
- 指針類型(Pointer types)
詳見:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/types
後面我們也會有單獨的章節去講,這裡你不必太糾結,心裡有這些概念就行了。
一個變數只不過是一個供程式操作的存儲區的名字。在 C# 中,每個變數都有一個特定的類型,類型決定了變數的記憶體大小和佈局。範圍內的值可以存儲在記憶體中,可以對變數進行一系列操作。
C# 中變數定義的語法:
<data_type> <variable_list>;
在這裡,data_type 必須是一個有效的 C# 數據類型,可以是 char、int、float、double 或其他用戶自定義的數據類型。variable_list 可以由一個或多個用逗號分隔的標識符名稱組成。
定義變數示例:
int i,j; char c; string mrbug;
變數通過在等號後跟一個常量表達式進行初始化(又叫賦值)。初始化的一般形式為:
<data_type> <variable_name> = value;
一些示例:
int i = 0 , j = 100; //初始化 i 和 j string myname = "mrbug" ; //初始化myname
定義變數時就為這個變數賦一個初始值,是一個良好的編碼習慣
顧名思意常量是固定值,程式執行期間不會改變。常量可以是任何基本數據類型,比如整數常量、浮點常量、字元常量或者字元串常量,還有枚舉常量。
常量可以被當作常規的變數,只是它們的值在定義後不能被修改。在C#中,常量以下麵的形式定義:
const <data_type> <constant_name> = value;
定義常量示例:
const double pi = 3.1415926; // 常量聲明
詳見:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/constants
C# 中的兩種表達式:
- lvalue:lvalue 表達式可以出現在賦值語句的左邊或右邊。
- rvalue:rvalue 表達式可以出現在賦值語句的右邊,不能出現在賦值語句的左邊。
左值(lvalue)是指在單個表達式的外部保留的對象。 可以將左值視為具有名稱的對象。 所有變數(包括不能更改的 (const
) 變數)都是左值。 左值是一個不在使用它的表達式的外部保留的臨時值。
數值是 rvalue 的,因此不能被賦值,不能出現在賦值語句的左邊。下麵是一個有效的語句:
int x = 3 + 4;
在此示例中,x 是左值,因為它在定義它的表達式的外部保留。 表達式 3 + 4 是為一個右值,因為其計算結果為不在定義它的表達式的外部保留的臨時值。
命名空間的設計目的是提供一種讓一組名稱與其他名稱分隔開的方式。在一個命名空間中聲明的類的名稱與另一個命名空間中聲明的相同的類的名稱不衝突。
命名空間的定義是以關鍵字 namespace 開始,後跟命名空間的名稱,如下所示:
namespace namespace_name { // 代碼聲明 }
using 關鍵字表明程式使用的是給定命名空間中的名稱。例如,我們在程式中使用 System 命名空間,其中定義了類 Console。我們可以只寫:
Console.WriteLine ("Hello world");
我們可以寫完全限定名稱,如下:
System.Console.WriteLine("Hello world");
在C#中,命名空間可以被嵌套,即您可以在一個命名空間內定義另一個命名空間,如下所示:
namespace namespace_name1 { // 代碼聲明 namespace namespace_name2 { // 代碼聲明
int age = 18 ;
} }
在C#中,你可以使用點(.)運算符訪問嵌套的命名空間的成員,例如上例中你可以這樣使用:
namespace_name1.namespace_name2.age = 30 ;
詳見:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/namespace