熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

展現C#世界之三:第一個C#應用程序

2013-11-13 10:23:08  來源: .NET編程 

   選擇一個編輯器

  盡管我是一個頑固的Notepad狂但這次我不建議用它編輯源碼原因是你正在與真正的編程語言打交道使用Notepad編輯源碼編譯時可能產生大量的錯誤信息行(C++程序員知道我在說什麼

  你有幾種選擇可以重新配置你信任的老式Visual C++ 使它能夠和C#源文件一起工作第二種選擇是使用新的Visual Studio 第三你可以用任何第三方程序編輯器最好要支持行數色彩編碼工具集成和良好的搜索功能CodeWright就是其中一個例子當然在所提到的編輯器中沒有一個對創建C#程序來說是必要的用Notepad肯定可以編輯但是如果你考慮到要編寫更大的項目最好還是忍痛割愛吧

   Hello World 代碼

  討論編輯器有點離題 讓我們把話題轉回到一個非常出名的小應用程序這個最短的C#版本應用程序見清單把它存起來文件名為 helloworldcs以便使你能按照說明完成諸如編譯應用程序等其它余下來的步驟

  清單 最簡單的 Hello World 程序

   class HelloWorld

   {

   public static void Main()

   {

   SystemConsoleWriteLine(Hello World

   }

   }

  在C#中代碼塊(語句組)由大括弧({和})所括住所以甚至你以前沒有C++的經驗你也可以說出Main()方法就是HelloWorld 類語句的一部分因為類被括在所定義的大括弧中C#應用程序(可執行)的入口點就是 static Main 方法它必須包含在一個類中僅有一個類能使用該標志定義除非你告訴編譯器它應使用哪一個 Main 方法(否側會產生一個編譯錯誤)和C++相比Main的第一個字母是大寫的M而不是你曾經使用過的小寫字母在這個方法中你的程序開始並結束方法中可以調用其它方法——如這個例子中用於輸出文本——或者創建對象並激活該方法

  正如你所看到的Main方法返回一個void類型public static void Main()

  盡管看到這些語句時C++程序員肯定會覺得似曾相識但是其他程序員並不如此首先public 的訪問標志告訴我們這個方法可以被任何程序訪問這是它被調用的必要條件其次static 意味著沒有先創建類的實例也可以調用方法——你所要做的就是用類名調用方法HelloWorldMain()但是我不贊成在Main方法中執行這行代碼遞歸會導致堆棧溢出

  另一重要的方面是返回類型對於方法Main可選擇void (意味著根本就沒有返回值)或用int 為整型結果(應用程序返回的錯誤級別)因此兩種可能的Main方法為

  public static void Main()

  public static int Main()

  C++程序員會同樣知道後面我要提到的——可以傳給應用程序的命令行參數數組

  public static void Main(string[] args)

  我現在並不想詳細地說明如何訪問參數但我想事先給C++程序員一個警告和C++相比應用程序路徑不是這個數組的一部分僅僅那些參數包含在這個數組中

  在對Main方法並不簡短的介紹之後讓我們把注意力集中到唯一真正的代碼行——這行代碼在屏幕上顯示Hello WoldSystemConsoleWriteLine(Hello World

  假如不是由於有了System大家會馬上猜到WriteLine是Console 對象的一個靜態方法那麼System代表什麼呢?

  它是包含Console對象的名字空間(范圍)實際上並不是每次都在Console對象前加上名字空間的前綴你可以象清單所示范的那樣在應用程序中引入名字空間

  清單 在應用程序中引入名字空間

   using System

  

   class HelloWorld

   {

   public static void Main()

   {

   ConsoleWriteLine(Hello World

   }

   }

  所有你要做的就是給System名字空間加一個using指令在這之後不再需要規定名字空間就可以使用它們的方法和屬性了NGWS 框架體系中有很多的名字空間我只對巨大的名字空間池中的少數幾個對象進行探討但在第八章 用C#寫組件將介紹為你的對象創建自己的名字空間

   編譯應用程序

  由於NGWS Runtime支持所有的編譯器(VBC++和C#)你不必買一個單獨的開發工具用來把應用程序編譯成IL(中間語言)但是如果你從沒有用過命令行編譯器編譯過應用程序(僅懂得編譯名而沒有熟記) 它還是你的首要選擇

  打開命令提示符並切換到存 helloworldcs 的目錄敲入以下命令

  csc helloworldcs

  helloworldcs 被編譯並鏈接成hellworldexe因為源碼沒有錯誤(那當然!)C#編譯器沒有出錯提示在整個編譯過程沒有絲毫停頓

  現在你已經准備好運行第一個真正用C#編寫的應用程序簡單地在命令行上敲入helloworld輸出結果為 Hello World

  在繼續往下介紹之前 我想稍為想象一下第一個應用程序和一個編譯器開關的使用

  csc /outhelloexe helloworldcs

  這個開關告訴編譯器輸出文件命名為helloexe雖然這不是什麼絕招但它是這本書中用到的未來編譯器的基本功

   輸入和輸出

  到目前為止我僅僅演示了把簡單的常量字符串輸出到屏幕盡管這本書只介紹了C#編程的概念而不介紹用戶接口編程但我需要讓你迅速學會簡單的屏幕輸入和輸出方法——相應於C的scanf 和 printf或者C++的cin 和cout我不能提供VB相應的函數因為屏幕訪問不是該核心語言的一部分

  你只需要能夠讀用戶的輸入並提示一些信息給用戶清單 說明如何讀一個用戶請求的名字輸入並顯示一條已定制好的Hello 信息

  Listing 從控制台讀輸入信息

   using System

  

   class InputOutput

   {

   public static void Main()

   {

   ConsoleWrite(Please enter your name

   string strName = ConsoleReadLine()

   ConsoleWriteLine(Hello + strName)

   }

   }

  第行使用Console對象的一個新方法用於提示文本信息給用戶它就是Write方法它與WriteLine不同的地方在於它輸出時不換行我使用這種方法以便用戶可以在信息提示的同一行輸入名字在用戶輸入他的名字後(並按回車鍵)ReadLine 方法讀入了一個字符串變量名字字符串連接到常量字符串Hello並用我們早已熟悉的WriteLine方法顯示出來

  你幾乎已學完了NGWS框架必要的輸入和輸出功能但是你還需要為用戶顯示多個值為用戶寫一個格式串清單展示一個例子

  清單 使用不同的輸出方法

   using System

  

   class InputOutput

   {

   public static void Main()

   {

   ConsoleWrite(Please enter your name

   string strName = ConsoleReadLine()

   ConsoleWriteLine(Hello {}strName)

   }

   }

  第行包含了使用格式串的ConsoleWriteLine語句格式串例子如下

  Hello {}

  {}代替WriteLine方法的參數表中緊隨格式串後的第一個變量你可以用該技術格式化超過三個變量

  ConsoleWriteLine(Hello {} {} from {}

  strFirstname strLastname strCity)

  當然並不僅限於只使用字符串變量你可以使用任何類型這些類型在後面的第四章 C#類型中有討論

   添加注釋

  當寫代碼時你應為代碼寫注釋條文解釋實現的內容變更史等盡管你注釋中提供的信息(如果有的話)是給你寫的但是你還是必須遵守寫C#注釋的方法清單 顯示采用的兩種不同的方式

  清單 給你的代碼添加注釋

   using System

  

   class HelloWorld

   {

   public static void Main()

   {

   // 這是單行注釋

   /* 這種注釋

   跨越多行 */

   ConsoleWriteLine(/*Hello World*/)

   }

   }

  // 符號用於單行注釋你可以用//注釋當前所在行或是跟在一個代碼語句的後面

  int nMyVar = // 胡說八道所有在//後面的被認為是一條注釋所以你可以同樣用它們來注釋一整行或一行源代碼的部分這種注釋方式同C++中介紹的相似

  如果你的注釋跨越多行必須使用/* */的字符組合這種方式在C中有效除了單行注釋外這種方式在C++和C#中還同樣有效因C/C++和C#都使用這種多行注釋方式所以它們也使用相同的終結符請看下列代碼行

  /* ConsoleWriteLine(Hello World */

  我使用/* */簡單地注釋一整行現在我假定這一行是很長代碼的一部分而且我決定要暫時禁用一個程序塊

  /*……

  /* ConsoleWriteLine(Hello World */

  ……*/

  這個結構所存在的問題為 Hello World那一行後面的*/終止了始於第一行的/*的注釋余下的代碼對編譯器有效你將看到一些有趣的出錯信息至少 最後的*/被標志為歸屬錯誤我只不過想提醒一下讓你了解這種錯誤

  小結

  在這一章中你創建編譯並執行了第一個C#應用程序著名的Hello World程序我用這個短短的應用程序給你介紹有關Main方法它是一個應用程序的入口點也是出口點這個方法可以沒有返回值或返回一個整數錯誤級別如果你的應用程序用參數調用你可以(但不必要)讀出並使用它們

  在編譯和測試應用程序後你學到了更多的由Console對象提供的有關輸入和輸出的方法對於學習C#而言它們足以創建出有意義的控制台例子但用戶接口的大部分將是WFCWinForms或者ASP+


From:http://tw.wingwit.com/Article/program/net/201311/13447.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.