C# 程序結構
Hello World 實例
一個 C# 程序主要包括以下部分:
- 命名空間聲明(Namespace declaration)
- 一個 class
- Class 方法
- Class 屬性
- 一個 Main 方法
- 語句(Statements)& 表達式(Expressions)
- 注釋
"Hello World" 的簡單的代碼:
實例
using System; namespace HelloWorldApplication { class HelloWorld { static void Main(string[] args) { /* 我的第一個 C# 程序*/ Console.WriteLine("Hello World"); Console.ReadKey(); } } }
結果:Hello World
讓我們看一下上面程序的各個部分:
- 程序的第一行 using System; - using 關鍵字用於在程序中包含 System 命名空間。 一個程序一般有多個 using 語句。
- 下一行是 namespace 聲明。一個 namespace 里包含了一系列的類。HelloWorldApplication 命名空間包含了類 HelloWorld。
- 下一行是 class 聲明。類 HelloWorld 包含了程序使用的數據和方法聲明。類一般包含多個方法。方法定義了類的行為。在這里,HelloWorld類只有一個 Main 方法。
- 下一行定義了 Main 方法,是所有 C# 程序的 入口點。Main 方法說明當執行時 類將做什么動作。
- 下一行 /*...*/ 將會被編譯器忽略,且它會在程序中添加額外的 注釋。
- Main 方法通過語句 Console.WriteLine("Hello World"); 指定了它的行為。
WriteLine 是一個定義在 System 命名空間中的 Console 類的一個方法。該語句會在屏幕上顯示消息 "Hello, World!"。
- 最后一行 Console.ReadKey(); 是針對 VS.NET 用戶的。這使得程序會等待一個按鍵的動作,防止程序從 Visual Studio .NET 啟動時屏幕會快速運行並關閉。
注意:
- C# 是大小寫敏感的。
- 所有的語句和表達式必須以分號(;)結尾。
- 程序的執行從 Main 方法開始。
- 與 Java 不同的是,文件名可以不同於類的名稱。
編譯 & 執行 C# 程序
使用 Visual Studio.Net 編譯和執行 C# 序,請按下面的步驟進行:
- 啟動 Visual Studio。
- 在菜單欄上,選擇 File -> New -> Project。
- 從模板中選擇 Visual C#,然后選擇 Windows。
- 選擇 Console Application。
- 為您的項目制定一個名稱,然后點擊 OK 按鈕。
- 新項目會出現在解決方案資源管理器(Solution Explorer)中。
- 在代碼編輯器(Code Editor)中編寫代碼。
- 點擊 Run 按鈕或者按下 F5 鍵來運行程序。會出現一個命令提示符窗口(Command Prompt window),顯示 Hello World。
C# 基本語法
C# 是一種面向對象的編程語言。在面向對象的程序設計方法中,程序由各種相互交互的對象組成。相同種類的對象通常具有相同的類型,或者說,是在相同的 class 中。
例如,以 Rectangle(矩形)對象為例。它具有 length 和 width 屬性。根據設計,它可能需要接受這些屬性值、計算面積和顯示細節。
Rectangle(矩形)類的實現,並借此討論 C# 的基本語法:
實例
using System; namespace RectangleApplication{ class Rectangle { // 成員變量 double length;//聲明一個double類型的變量length double width;//聲明一個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()); //打印GetArea方法的計算結果 } } class ExecuteRectangle { static void Main(string[] args) //程序入口方法,創建實例,調用相應的方法 { Rectangle r = new Rectangle(); r.Acceptdetails(); r.Display(); Console.ReadLine(); } } }
在這段代碼中,邏輯是這樣的:
- 首先進入 Main 方法,創建一個名稱為 r 的實例。
- 然后調用 Acceptdetails 給 r 進行賦值。
- 最后調用 Display 方法打印結果。
- 而用於計算的 GetArea 方法在在調用 Display 時直接打印出來。
當上面的代碼被編譯和執行時,它會產生下列結果:
Length: 4.5
Width: 3.5
Area: 15.75
using 關鍵字
在任何 C# 程序中的第一條語句都是:
using System;
using 關鍵字用於在程序中包含命名空間。一個程序可以包含多個 using 語句。
class 關鍵字
class 關鍵字用於聲明一個類。
C# 中的注釋
注釋是用於解釋代碼。編譯器會忽略注釋的條目。在 C# 程序中,多行注釋以 /* 開始,並以字符 */ 終止,如下所示:
/* This program demonstrates
The basic syntax of C# programming
Language */
單行注釋是用 '//' 符號表示。例如:
}//end class Rectangle
成員變量
變量是類的屬性或數據成員,用於存儲數據。在上面的程序中,Rectangle 類有兩個成員變量,名為 length 和 width。
成員函數
函數是一系列執行指定任務的語句。類的成員函數是在類內聲明的。我們舉例的類 Rectangle 包含了三個成員函數: AcceptDetails、GetArea 和 Display。
實例化一個類
在上面的程序中,類 ExecuteRectangle 是一個包含 Main() 方法和實例化 Rectangle 類的類。
標識符
標識符是用來識別類、變量、函數或任何其它用戶定義的項目。在 C# 中,
類的命名必須遵循如下基本規則:
- 標識符必須以字母、下划線或 @ 開頭,后面可以跟一系列的字母、數字( 0 - 9 )、下划線( _ )、@。
- 標識符中的第一個字符不能是數字。
- 標識符必須不包含任何嵌入的空格或符號,比如 ? - +! # % ^ & * ( ) [ ] { } . ; : " ' / \。
- 標識符不能是 C# 關鍵字。除非它們有一個 @ 前綴。 例如,@if 是有效的標識符,但 if 不是,因為 if 是關鍵字。
- 標識符必須區分大小寫。大寫字母和小寫字母被認為是不同的字母。
- 不能與C#的類庫名稱相同。
C# 關鍵字
關鍵字是 C# 編譯器預定義的保留字。這些關鍵字不能用作標識符,但是,如果您想使用這些關鍵字作為標識符,可以在關鍵字前面加上 @ 字符作為前綴。
在 C# 中,有些關鍵字在代碼的上下文中有特殊的意義,如 get 和 set,這些被稱為上下文關鍵字(contextual keywords)。
下表列出了 C# 中的保留關鍵字(Reserved Keywords)和上下文關鍵字(Contextual Keywords):
補充1:
static void Main(string[] args) { Console.WriteLine("A:{0},a:{1}",65,97); Console.ReadLine(); }
運行結果:
A:65,a:97
當 WriteLine() 函數有多個參數時,輸出第一個參數中的內容,而第二個參數中的內容替換掉第一個參數中對應位置的占位符一起輸出。
如果第一個參數沒有留占位符,那么第二個參數內容不輸出.
Console.WriteLine("A:,a:",65,97);
運行結果:
A:,a:
占位符從零開始計數,且占位符中的數字不能大於第二個參數的個數減一(要求占位符必須有可替換的值).
占位符數字與第二個參數字符位置一一對應.
static void Main(string[] args) { Console.WriteLine("A:{1},a:{0}",65,97); Console.ReadLine(); }
運行結果:A:97,a:65
補充2:
C# 中什么叫類的實例化?
直白地解釋就是:通過已有的類(class)創建出該類的一個對象(object)
打個比方:你設計了一個飛機模型,交給工人師傅去加工制作,生產出一個(一批)飛機。飛機模型就相當於程序中的類,生產出來的飛機就是對象,生產飛機這一過程就叫做類的實例化。
MyPlane plane1= new MyPlane(); //類的實例化
補充3:
補充一下 C# 中 // 注釋和 /// 注的區別:
C# 引入了新的 XML 注釋,即我們在某個函數前新起一行,輸入 ///,VS.Net 會自動增加 XML 格式的注釋
// 不會被編譯,而 /// 會被編譯
所以使用 /// 會減慢編譯的速度(但不會影響執行速度)
但使用 /// 會在其它的人調用你的代碼時提供智能感知(通常在Form。Designer.cs 窗口會自動生成 /// 注釋的程序)舉個例子:
/// <summary>
/// 必需的設計器變量。 //定義屬性,注意該屬性為可讀可寫屬性
/// </summary>
要注意必須有:
/// <summary>
///
/// </summary>
補充4:
在 C# 中:
int 相當於 System.Int32
double 相當於 System.Double
string相當於 System.String
一般在程序開頭添加 using System;,這時 string 相當於 System.String 。