1.4 C#程序舉例
1.4.1 一個控制臺程序
下面從經典的“Hello World”程序開始C#之旅。在控制臺中輸出“Hello World”字樣。
【例1-1】 使用VS 2013在控制臺中創建“Hello World”程序并運行,具體開發步驟如下。
(1)在開始菜單中打開VS 2013開發環境,選擇VS 2013菜單欄中的“文件”|“新建”|“項目”命令,打開“新建項目”對話框,如圖1-26所示。

圖1-26 “新建項目”對話框
(2)在“新建項目”對話框中選擇“控制臺應用程序”,輸入項目的名稱,選擇項目保存路徑,然后單擊“確定”按鈕,即可創建一個控制臺應用程序。
(3)控制臺應用程序創建完成后,會自動打開Program.cs文件。在該文件的Main方法中輸入如下加粗顯示的代碼。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Hello World
{
class Program
{
static void Main(string[] args) //Main方法,程序的主入口方法
{
System.Console.Write("Hello World"); //輸出“Hello World”
System.Console.Read Line(); //通過等待輸入而暫停程序運行
}
}
}
單擊VS 2013開發環境工具欄中圖標按鈕,或者直接按<F5>快捷鍵,運行該程序,效果如圖1-27所示。

圖1-27 輸出“Hello World”

C#的Hello World
1.4.2 一個簡單的Win 32應用程序
【實例1-2】 設計一個C# Windows窗體應用程序,實現圖1-28所示的效果。
【操作步驟】 詳細操作步驟如下。
(1)啟動VS 2013。
(2)新建項目。
首先,選擇“文件”|“新建”|“項目”菜單命令;彈出“新建項目”對話框后,在左側列表框中選擇“已安裝”|“模板”|“Visual C#”|“Windows”,同時在中間列表框中選擇“Windows窗體應用程序”。
然后,輸入項目名稱(如Test1_2)并設置保存位置,單擊“確定”按鈕。
之后,系統自動完成項目的配置(包括:完成對.NET Framework類庫的引用、生成包含Main方法的 Program.cs 文件、生成 Windows 窗體文件 Form1.cs、生成項目有關的屬性文件Asembly Info.cs和Resources.resx等)。
(3)修改源程序文件名并編輯源程序。
首先,在解決方案資源管理器中右擊“Form1.cs”,選擇“重命名”快捷菜單命令,將Form1.cs修改為Test1_2.cs。
然后,在VS 2013的設計區中右擊鼠標,選擇“屬性”快捷菜單命令,以打開窗體的“屬性”窗口;在屬性窗口中單擊“事件”按鈕,以顯示窗體的所有事件列表;雙擊事件列表中的“Load”事件,由系統自動創建事件方法Test1_2_Load(如圖1-29所示),并且自動切換到Test1_2.cs的源代碼編輯視圖。

圖1-28 一個簡單的Windows應用程序的運行效果

圖1-29 添加Load事件
最后,在Test1_2.cs文件的源代碼編輯窗口中添加以下源程序代碼。
using System;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Test1_2
{
public partial class Test1_2 : Form
{
public Test1_2()
{
Initialize Component();
}
private void Test1_2_Load(object sender, Event Args e)
{
//設置本窗體的標題文字
this.Text = "我的第一個Windows程序";
//先創建標簽控件,再設置其顯示文本和位置等屬性
Label lbl Show = new Label();
lbl Show.Location = new Point(50, 60);
lbl Show.Auto Size = true;
lbl Show.Text = "本程序由羅福強設計,歡迎您使用!";
//將標簽控件添加到本窗體之中
this.Controls.Add(lbl Show);
}
}
}
(4)調試并運行程序。
選擇“調試”|“啟動調試”菜單命令或“調試”|“開始執行(不調試)”菜單命令,之后VS 2013將自動啟動C#語言編譯器編譯源程序,并執行程序,最后彈出一個如圖1-28所示的運行窗口。
【分析】
(1)在設計C# Windows窗體應用程序時,既要考慮窗體類的名字(如Test1_2),也要必須考慮對.NET Framework 類庫的適當引用。Windows 窗體應用程序的基礎是命名空間System.Windows.Forms和System.Drawing,在代表程序窗口的源代碼文件中必須包含這些命名空間,否則將出現編譯錯誤。為了簡化源代碼編寫,VS 2013會自動完成這些必不可少的命名空間的引用。
(2)Windows窗體應用程序的主程序文件仍然是Program.cs,該文件具有Main主方法。因為C#的Windows應用程序同樣是從Main方法開始執行的。由于VS 2013會自動根據程序員的操作來更新Main方法中的語句,因此不需要在Main方法中添加任何代碼。
(3)對于Windows窗體應用程序來說,其主要代碼包含在代表程序窗口的文件(例如Form1.cs,改名之后為Test1_2.cs)中。Windows應用程序采用事件驅動編程,只有當事件發生時系統才可能調用相應的事件方法。例如,如果希望在窗體的Load(即加載)事件發生時應用程序能夠調用事件方法Test1_2_Load,那么就必須把窗體的Load屬性與Test1_2_Load_Load方法鏈接起來。只是,這個鏈接操作通常由VS 2013自動完成。因此,我們只需要集中精力編寫事件方法中的語句即可。有關事件的概念,在本書后續章節會詳細講解,讀者只需對事件有一個感性認識就可以了。
(4)Test1_2_Load事件方法
第一條語句用來設置窗口標題。其中,“this”代表本窗體。
第二條語句的作用是創建一個用來顯示提示信息或程序運行結果的標簽對象。其中,Label就是標簽控件的類名,“new Label()”創建標簽對象,“lbl Show”就是標簽對象的名字。
第三條語句用來設置標簽在窗體中的顯示位置。“new Point(40, 50)”表示在窗口中的像素點(50,40)起顯示。
第四條語句用來指示系統是否自動改變標簽的大小,“=true”就是確保把所有的文字顯示出來。
第五條語句用來設置最終窗口中顯示的文字。
第六條語句表示將標簽對象lbl Show添加到窗體中,實現顯示輸出。
1.4.3 一個具有輸入功能的Win 32應用程序
【實例1-3】 設計一個C# Windows應用程序,實現如圖1-30所示的效果。

圖1-30 一個具有輸入功能的Win32應用程序
【操作步驟】詳細操作步驟如下。
(1)啟動VS 2013。
(2)新建項目
首先,選擇“文件”|“新建”|“項目”菜單命令;彈出“新建項目”對話框后,在左側列表框中選擇“已安裝”|“模板”|“Visual C#”|“Windows”,同時在中間列表框中選擇“Windows窗體應用程序”。
然后,輸入項目的名稱(如Test1_3),設置項目的保存位置(如d:\Demo)。
單擊“確定”按鈕之后,系統自動完成項目的配置、自動生成有關文件(詳細情況見上一小節)。
(3)修改源程序文件名
在解決方案資源管理器中右擊“Form1.cs”,選擇“重命名”命令,將Form1.cs修改為Test1_3.cs。
(4)添加用戶控件并設置控件屬性
首先,從VS 2013的工具箱把下列控件添加到設計區:2個Label控件、1個Text Box控件和1個Button控件,各控件在窗體中的位置見圖1-31所示(提示,在工具箱中展開“所有Windows控件的圖標為“”,Button控件的圖標為“
”。控件”或“公共控件”即可找到相應的控件)。在工具箱中,Label控件的圖標為“
”,Text Box
然后,在設計區右擊窗體或所添加的每一個控件,選擇“屬性”命令,打開“屬性”窗口(如圖1-32所示),根據表1-5設置相應屬性項。

圖1-31 窗體設計

圖1-32 “屬性”窗口
表1-5 需要修改的屬性項

(5)為控件添加事件方法
首先,在窗體設計區中雙擊新添加“btn Ok”按鈕控件,系統自動為該按鈕添加“Click”事件,對應的事件方法“private void btn Ok_Click(object sender, Event Args e)”,并切換到Hello Frm.cs的源代碼編輯視圖。也可以在該按鈕的屬性窗口的事件列表中雙擊“Click”事件,添加btn Ok_Click事件方法。
然后,在Test1_3.cs文件的源代碼編輯窗口中添加以下源程序代碼。
using System;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Test1_3
{
public partial class Test1_3 : Form
{
public Test1_3 ()
{
Initialize Component();
}
private void btn Ok_Click(object sender, Event Args e)
{
//定義字符串變量
string str Result;
//提取在文本框中錄入的文字
str Result = txt Name.Text + ",你好!歡迎使用本程序!";
//顯示結果
lbl Result.Text = str Result;
}
}
}
(6)調試并運行程序
選擇“調試”|“啟動調試”菜單命令或“調試”|“開始執行(不調試)”菜單命令,之后VS 2013將自動啟動C#語言編譯器編譯源程序,并執行程序,當彈出運行窗口后在文本框中輸入姓名后即可得如圖1-30所示的運行效果。
【分析】
(1)對于Windows窗體應用程序來說,窗體控件組成了程序運行時的操作界面。窗體中的控件可以在程序運行時才添加到窗口中(如實例1-2所示),也可以在運行前完成所有設計(如本例所示)。
(2)Windows窗體最常用的控件有:Label控件、TextBox控件和Button控件。其中,Label控件(即標簽控件),一般用來顯示提示信息或程序的運行結果;TextBox控件(即文本框控件),用來接收用戶的鍵盤輸入;Button控件(即按鈕控件),用于響應鼠標單擊操作,觸發單擊事件并通知系統調用特定的方法(如本例的btn Ok_Click事件方法)。
(3)事件方法btnOk_Click
第1條語句定義了一個字符串型的變量str Result,用來保存程序最終要顯示的字符串。
第2條語句用來生成最終要顯示的字符串。其中,txt Name.Text表示引用在文本框中所輸入的文本內容;“+”表示連接兩個字符串。
第3條語句表示把變量str Result的字符串內容賦值給lbl Result標簽控件的Text屬性,實現顯示輸出。
有關字符串、賦值等內容的詳細介紹請讀者閱讀本書后續章節。
1.4.4 C#程序的基本結構
上面講解了如何創建第一個C#程序。一個C#程序總體可以分為命名空間、類、關鍵字、標識符、Main方法、語句和注釋等。本節將分別對C#程序的各個組成部分進行講解。
1.命名空間
在Visual Studio開發環境中創建項目時,系統會自動生成一個與項目名稱相同的命名空間,例如,創建“Hello World”項目時,系統會自動生成一個名稱為“Hello World”的命名空間。代碼如下。
namespace Hello World
命名空間在C#中起到組成程序的作用,在C#中定義命名空間時,需要使用namespace關鍵字,其語法如下。
namespace 命名空間名
命名空間既用作程序的“內部”組織系統,也用作向“外部”公開的組織系統(即一種向其他程序公開自己擁有的程序元素的方法)。如果要調用某個命名空間中的類或者方法,首先需要使用using指令引入命名空間,這樣,就可以直接使用該命名空間中所包含的成員(包括類及類中的屬性、方法等)。
using指令的基本形式為:
using 命名空間名;
2.類
C#程序的主要功能代碼都是在類中實現的,類是一種數據結構,它可以封裝數據成員、方法成員和其他的類。因此,類是C#語言的核心和基本構成模塊。C#支持自定義類,使用C#編程就是編寫自己的類來描述實際需要解決的問題。
使用類之前都必須首先進行聲明,一個類一旦被聲明,就可以當作一種新的類型來使用,在C#中通過使用class關鍵字來聲明類,聲明語法如下。
class [類名]
{
[類中的代碼]
}
3.關鍵字
關鍵字是C#語言中已經被賦予特定意義的一些單詞,開發程序時,不可以把這些關鍵字作為命名空間、類、方法或者屬性等來使用。大家在Hello World程序中看到的using、namespace、class、static和void等都是關鍵字。C#語言中的常用關鍵字如表1-6所示。
表1-6 C#常用關鍵字

4.標識符
標識符可以簡單地理解為一個名字,主要用來標識類名、變量名、方法名、屬性名和數組名等各種成員。
C#語言規定標識符由任意順序的字母、下劃線(_)和數字組成,并且第一個字符不能是數字。另外,標識符不能是C#中的保留關鍵字。
下面是合法標識符。
_ID
name
user_age
下面是非法標識符。
4k //以數字開頭
string //C#中的關鍵字
說明
C#是一種大小寫敏感的語言,例如,“Name”和“name”表示的意義是不一樣的。
5.Main方法
每一個C#程序中都必須包含一個Main方法,它是類體中的主方法,也叫入口方法,可以說是激活整個程序的開關。Main方法從“{”號開始,至“}”號結束。static和void分別是Main方法的靜態修飾符和返回值修飾符,C#程序中的Main方法必須聲明為static,并且區分大小寫。
Main方法一般都是創建項目時自動生成的,不用開發人員手動編寫或者修改,如果需要修改,則需要注意以下3個方面。
● Main方法在類或結構內聲明,它必須是靜態(static)的,而且不應該是公用(public)的。
● Main的返回類型有兩種:void 或 int。
● Main方法可以包含命令行參數string[] args,也可以不包括。
6.C#語句
語句是構造所有C#程序的基本單位,使用C#語句可以聲明變量、常量、調用方法、創建對象或執行任何邏輯操作,C#語句以分號終止。
例如,在Hello World程序中輸出“Hello World”字符串和定位控制臺的代碼就是C#語句。
Console.Write Line("Hello World");
Console.Read Line();
注意
C#代碼中所有的字母、數字、括號以及標點符號均為英文輸入法狀態下的半角符號,而不能是中文輸入法或者英文輸入法狀態下的全角符號。
7.注釋
注釋是在編譯程序時不執行的代碼或文字,其主要功能是對某行或某段代碼進行說明,方便代碼的理解與維護,或者在調試程序時,將某行或某段代碼設置為無效代碼。常用的注釋主要有行注釋和塊注釋兩種,下面分別進行簡單介紹。
(1)行注釋
行注釋都以“//”開頭,后面跟注釋的內容。例如,在Hello World程序中使用行注釋,解釋每一行代碼的作用。代碼如下。
static void Main(string[] args) //程序主入口方法
{
Console.Write Line("Hello World"); //輸出“Hello World”
Console.Read Line();
}
(2)塊注釋
如果注釋的行數較少,一般使用行注釋。對于連續多行的大段注釋,則使用塊注釋,塊注釋通常以“/*”開始,以“*/”結束,注釋的內容放在它們之間。
例如,在Hello World程序中使用塊注釋將輸出Hello World字符串和定位控制臺窗體的C#語句注釋為無效代碼。代碼如下。
static void Main(string[] args) //主入口方法
{
/* 塊注釋開始
Console.Write Line("Hello World"); //輸出“Hello World”字符串
Console.Read Line();
*/
}
- Android 9 Development Cookbook(Third Edition)
- DevOps Automation Cookbook
- Xamarin.Forms Projects
- C語言程序設計學習指導與習題解答
- Python時間序列預測
- Python算法詳解
- NGINX Cookbook
- 搞定J2EE:Struts+Spring+Hibernate整合詳解與典型案例
- Go語言編程
- Instant Debian:Build a Web Server
- QGIS 2 Cookbook
- MyBatis 3源碼深度解析
- Application Development with Parse using iOS SDK
- LabVIEW數據采集
- Laravel Design Patterns and Best Practices