国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

> 前言(補(bǔ)充) 和第三章 第一個(gè)C#程序(rainbow 翻譯)(來自重粒子空間)

2024-07-21 02:20:25
字體:
供稿:網(wǎng)友
<<展現(xiàn)c#>> 前言(補(bǔ)充) 和第三章 第一個(gè)c#程序(rainbow 翻譯)

  
出處:http://www.informit.com/matter/ser0000001/chapter1/ch03.shtml

正文:

前言
0.1  提要
    歡迎閱讀《展現(xiàn) c#》(presenting c#)。這本書是你提高企業(yè)編程語言的一條捷徑。這種企業(yè)編程語言帶有下一代編程語言服務(wù)運(yùn)行時(shí)(ngws runtime):c#(發(fā)音"c sharp")。
    ngws runtime 是一個(gè)不僅管理執(zhí)行代碼、同時(shí)也提供使編程更加容易的動(dòng)態(tài)環(huán)境。編譯器產(chǎn)生受管代碼以指向這種受管理執(zhí)行環(huán)境。你獲得跨平臺(tái)語言集成、跨平臺(tái)語言異常處理、增強(qiáng)安全性、版本控制、安排支持和查錯(cuò)服務(wù)。
    支持ngws runtime 的主要語言是c#。支持ngws框架的很多程序是用c#寫的,因此,在一些帶有ngws runtime的編譯器中,它的編譯器可以被認(rèn)為是非常經(jīng)得起測(cè)試且是經(jīng)過優(yōu)化的。c#語言借鑒了c++,但是具備現(xiàn)代化和新增的類型安全——使c#成為企業(yè)解決方案的首選語言。

0.2  誰應(yīng)該讀這本書
     如果你對(duì)編程很陌生,這本書不適合你。這本書企圖讓程序員解脫并使用c#,基于他們已經(jīng)擁有的知識(shí)。《展現(xiàn) c#》的目標(biāo)瞄準(zhǔn)了已經(jīng)具有如c/c++、vb、java或其它編程經(jīng)驗(yàn)的程序員。
     如果你具有c++的背景,轉(zhuǎn)向c#會(huì)很容易,但是,如果你精通于其它不同的語言,這本書也會(huì)耗掉你的一些日子。如果你有一點(diǎn)com編程的知識(shí),這本會(huì)更有趣,但會(huì)com編程不再是必要的。

0.3  這本書如何組織
     第一章  c#簡(jiǎn)介——這一章把你帶到c#逛一回,同時(shí)回答了有關(guān)你應(yīng)該考慮學(xué)習(xí)c#的問題。
     第二章  ngws runtime 的技術(shù)基礎(chǔ)——介紹ngws runtime為運(yùn)行的c#代碼所提供的低層架構(gòu)。
     第三章  第一個(gè)c#應(yīng)用程序——?jiǎng)?chuàng)建真正第一個(gè)c#應(yīng)用程序(否則它是什么呢?),它就是一個(gè)"hello world"應(yīng)用程序。
     第四章  c#類型——可以看到用在c#應(yīng)用程序中的各種類型。探索值型和引用型的區(qū)別,還有如何加框和消框。
     第五章  類——c#功能真正強(qiáng)大的標(biāo)志,它是具有類的面向?qū)ο蟮木幊獭D銜?huì)學(xué)到好多好多的東西,如構(gòu)造函數(shù)、析構(gòu)函數(shù)、方法、屬性、索引和事件等。
     第六章  控制語句——對(duì)應(yīng)用程序?qū)嵭辛鞒炭刂啤L剿鱟#提供的各種選擇和陳述語句。
     第七章  異常處理——獲得了編寫實(shí)現(xiàn)異常處理的應(yīng)用程序技巧,擁有這種技巧,在ngws runtime世界,你是一個(gè)好的公民
     第八章  用c#寫組件——用c#構(gòu)建組件,因?yàn)橹С謓gws runtime,它可以被不同語言平臺(tái)的客戶使用。
     第九章   配置和安排——學(xué)到如何用c#有條件地進(jìn)行編譯工作,和如何為你的c#源碼自動(dòng)地創(chuàng)建文檔。另外,這一章將介紹到ngws的版本技術(shù)問題。
     第十章   用非受管代碼交互操作——發(fā)現(xiàn)你如何使用c#內(nèi)部的非受管代碼,且非受管代碼如何與你的c#組件一起交互操作。
     第十一章  c#代碼查錯(cuò)——獲得使用sdk查錯(cuò)工具的技巧,可以在應(yīng)用程序中準(zhǔn)確地找到錯(cuò)誤并修改它們。
     第十二章  安全——探索ngws runtime的安全概念。學(xué)到代碼訪問安全性和基于角色的安全性。

0.4 使用這本書你需要什么?
     從這本書的觀點(diǎn)看,你所需要的就是下一代windows服務(wù)軟件開發(fā)包(ngws sdk)。盡管至少只要有ngws runtime 和c#編譯器就可以,但當(dāng)探索這些激動(dòng)人心的新技術(shù)功能 時(shí),在一臺(tái)機(jī)器上裝有說明文件檔和所有的sdk工具(包括debugger),將是一個(gè)極好的主意。
     這本書不需要你裝在機(jī)器上的visual studio 7的任何工具。我僅建議你要有一個(gè)優(yōu)秀的支持行數(shù)的程序編輯器,用以編輯c#源文件。
     ……
     (省略掉一些有關(guān)出版過程和表示感謝的段落)

0.5 關(guān)于作者
     christoph wille,微軟系統(tǒng)工程師(mcse)、微軟系統(tǒng)開發(fā)師(mcsd)、netware網(wǎng)絡(luò)管理員(cna)和mcp-it,作為一個(gè)網(wǎng)絡(luò)咨詢?nèi)藛T和程序員,特別精通windows  dna。微軟認(rèn)為他是asp方面最有價(jià)值的人(mvp),他是和微軟在一起使用早期的c#版本的少數(shù)開發(fā)者之一。
     christoph 獨(dú)自或參與了幾本書的寫作,包括sams出版社的《自學(xué)ado2.5  21天》、《自學(xué)asp  24小時(shí)》、《自學(xué)mcse tcp/ip 14天》和《mcse 訓(xùn)練指南:sql server 7管理》。



                                第三章     第一個(gè)c#應(yīng)用程序

3.0   選擇一個(gè)編輯器
         盡管我是一個(gè)頑固的notepad狂,但這次我不建議用它編輯源碼。原因是你正在與真正的編程語言打交道,使用notepad編輯源碼編譯時(shí)可能產(chǎn)生大量的錯(cuò)誤信息行(c++程序員知道我在說什么。)
         你有幾種選擇。可以重新配置你信任的老式visual c++ 6.0,使它能夠和c#源文件一起工作。第二種選擇是使用新的visual studio 7。第三,你可以用任何第三方程序編輯器,最好要支持行數(shù)、色彩編碼、工具集成和良好的搜索功能。codewright就是其中一個(gè)例子,如圖3.1所示。

         圖3.1 codewright 是你可以用于創(chuàng)建c#代碼文件眾多可能編輯器中的一個(gè)。

        當(dāng)然,在所提到的編輯器中,沒有一個(gè)對(duì)創(chuàng)建c#程序來說是必要的。用notepad肯定可以編輯。但是,如果你考慮到要編寫更大的項(xiàng)目,最好還是忍痛割愛吧。

3.1  "hello world" 代碼
        討論編輯器有點(diǎn)離題 ,讓我們把話題轉(zhuǎn)回到一個(gè)非常出名的小應(yīng)用程序。這個(gè)最短的c#版本應(yīng)用程序見清單3.1。把它存起來,文件名為 helloworld.cs,以便使你能按照說明,完成諸如編譯應(yīng)用程序等其它余下來的步驟。

        清單 3.1   最簡(jiǎn)單的 "hello world "程序

         1: class helloworld
         2: {
         3:  public static void main()
         4:  {
         5:   system.console.writeline("hello world");
         6:  }
         7: }

        在c#中,代碼塊(語句組)由大括弧({和})所括住。所以,甚至你以前沒有c++的經(jīng)驗(yàn),你也可以說出main()方法就是helloworld 類語句的一部分,因?yàn)轭惐焕ㄔ谒x的大括弧中。
        c#應(yīng)用程序(可執(zhí)行)的入口點(diǎn)就是 static main 方法,它必須包含在一個(gè)類中。僅有一個(gè)類能使用該標(biāo)志定義,除非你告訴編譯器它應(yīng)使用哪一個(gè) main 方法(否側(cè),會(huì)產(chǎn)生一個(gè)編譯錯(cuò)誤)。
        和c++相比,main的第一個(gè)字母是大寫的m,而不是你曾經(jīng)使用過的小寫字母。在這個(gè)方法中,你的程序開始并結(jié)束。方法中可以調(diào)用其它方法——如這個(gè)例子中,用于輸出文本——或者創(chuàng)建對(duì)象并激活該方法。
        正如你所看到的,main方法返回一個(gè)void類型。
        public static void main()
        盡管看到這些語句時(shí),c++程序員肯定會(huì)覺得似曾相識(shí),但是其他程序員并不如此。首先,public 的訪問標(biāo)志告訴我們這個(gè)方法可以被任何程序訪問,這是它被調(diào)用的必要條件。其次,static 意味著沒有先創(chuàng)建類的實(shí)例也可以調(diào)用方法——你所要做的就是用類名調(diào)用方法。
        helloworld.main();
        但是,我不贊成在main方法中執(zhí)行這行代碼,遞歸會(huì)導(dǎo)致堆棧溢出。
        另一重要的方面是返回類型。對(duì)于方法main,可選擇void (意味著根本就沒有返回值),或用int 為整型結(jié)果(應(yīng)用程序返回的錯(cuò)誤級(jí)別)。因此,兩種可能的main方法為:
        public static void main()
        public static int main()

        c++程序員會(huì)同樣知道后面我要提到的——可以傳給應(yīng)用程序的命令行參數(shù)數(shù)組。如:
        public static void main(string[] args)

        我現(xiàn)在并不想詳細(xì)地說明如何訪問參數(shù),但我想事先給c++程序員一個(gè)警告:和c++相比,應(yīng)用程序路徑不是這個(gè)數(shù)組的一部分。僅僅那些參數(shù)包含在這個(gè)數(shù)組中。
        在對(duì)main方法并不簡(jiǎn)短的介紹之后,讓我們把注意力集中到唯一真正的代碼行——這行代碼在屏幕上顯示"hello wold"。
         system.console.writeline("hello world");
        假如不是由于有了system,大家會(huì)馬上猜到writeline是console 對(duì)象的一個(gè)靜態(tài)方法。那么system代表什么呢? 它是包含console對(duì)象的名字空間(范圍),實(shí)際上并不是每次都在console對(duì)象前加上名字空間的前綴,你可以象清單3.2所示范的那樣,在應(yīng)用程序中引入名字空間。

         清單3.2   在應(yīng)用程序中引入名字空間
         1: using system;
         2:
         3: class helloworld
         4: {
         5:  public static void main()
         6:  {
         7:   console.writeline("hello world");
         8:  }
         9: }

         所有你要做的就是給system名字空間加一個(gè)using指令。在這之后,不再需要規(guī)定名字空間,就可以使用它們的方法和屬性了。ngws 框架體系中有很多的名字空間,我只對(duì)巨大的名字空間池中的少數(shù)幾個(gè)對(duì)象進(jìn)行探討。但在第八章 "用c#寫組件"將介紹為你的對(duì)象創(chuàng)建自己的名字空間。

3.2  編譯應(yīng)用程序
         由于ngws  runtime支持所有的編譯器(vb、c++和c#),你不必買一個(gè)單獨(dú)的開發(fā)工具用來把應(yīng)用程序編譯成il(中間語言)。但是,如果你從沒有用過命令行編譯器編譯過應(yīng)用程序(僅懂得編譯名,而沒有熟記), 它還是你的首要選擇。
        打開命令提示符并切換到存 helloworld.cs 的目錄。敲入以下命令:
        csc helloworld.cs

        helloworld.cs 被編譯并鏈接成hellworld.exe。因?yàn)樵创a沒有錯(cuò)誤(那當(dāng)然!),c#編譯器沒有出錯(cuò)提示,在整個(gè)編譯過程沒有絲毫停頓。如圖3.2所示。

         圖3.2  使用命令行編譯器 csc.exe 編譯應(yīng)用程序

         現(xiàn)在你已經(jīng)準(zhǔn)備好運(yùn)行第一個(gè)真正用c#編寫的應(yīng)用程序。簡(jiǎn)單地在命令行上敲入helloworld,輸出結(jié)果為 "hello world"。
        在繼續(xù)往下介紹之前, 我想稍為想象一下第一個(gè)應(yīng)用程序和一個(gè)編譯器開關(guān)的使用:
        csc /out:hello.exe helloworld.cs
        這個(gè)開關(guān)告訴編譯器輸出文件命名為hello.exe。雖然這不是什么絕招,但它是這本書中用到的未來編譯器的基本功。
3.3  輸入和輸出
         到目前為止,我僅僅演示了把簡(jiǎn)單的常量字符串輸出到屏幕。盡管這本書只介紹了c#編程的概念而不介紹用戶接口編程,但我需要讓你迅速學(xué)會(huì)簡(jiǎn)單的屏幕輸入和輸出方法——相應(yīng)于c的scanf 和 printf,或者c++的cin 和cout。我不能提供vb相應(yīng)的函數(shù),因?yàn)槠聊辉L問不是該核心語言的一部分。
         你只需要能夠讀用戶的輸入并提示一些信息給用戶。清單3.3 說明如何讀一個(gè)用戶請(qǐng)求的名字輸入,并顯示一條已定制好的"hello" 信息。

         listing 3.3 從控制臺(tái)讀輸入信息

         1: using system;
         2:
         3: class inputoutput
         4: {
         5:  public static void main()
         6:  {
         7:   console.write("please enter your name: ");
         8:   string strname = console.readline();
         9:   console.writeline("hello " + strname);
         10:  }
         11: }

        第7行使用console對(duì)象的一個(gè)新方法用于提示文本信息給用戶,它就是write方法。它與writeline不同的地方在于它輸出時(shí)不換行。我使用這種方法以便用戶可以在信息提示的同一行輸入名字。
        在用戶輸入他的名字后(并按回車鍵),readline 方法讀入了一個(gè)字符串變量。名字字符串連接到常量字符串"hello",并用我們?cè)缫咽煜さ膚riteline方法顯示出來(見圖3.2)。

        圖3.3  編譯和運(yùn)行定制的hello 應(yīng)用程序

        你幾乎已學(xué)完了ngws框架必要的輸入和輸出功能。但是,你還需要為用戶顯示多個(gè)值。為用戶寫一個(gè)格式串。清單3.4展示一個(gè)例子。

        清單 3.4 使用不同的輸出方法

        1: using system;
        2:
        3: class inputoutput
        4: {
        5:  public static void main()
        6:  {
        7:   console.write("please enter your name: ");
        8:   string strname = console.readline();
        9:   console.writeline("hello {0}",strname);
        10:  }
        11: }

        第9行包含了使用格式串的console.writeline語句。格式串例子如下:
        "hello {0}"
        {0}代替writeline方法的參數(shù)表中緊隨格式串后的第一個(gè)變量。你可以用該技術(shù)格式化超過三個(gè)變量。
        console.writeline("hello {0} {1}, from {2}",
         strfirstname, strlastname, strcity);

        當(dāng)然,并不僅限于只使用字符串變量。你可以使用任何類型,這些類型在后面的第四章 "c#類型"中有討論。

3.4 添加注釋
        當(dāng)寫代碼時(shí),你應(yīng)為代碼寫注釋條文,解釋實(shí)現(xiàn)的內(nèi)容、變更史等。盡管你注釋中提供的信息(如果有的話)是給你寫的,但是你還是必須遵守寫c#注釋的方法。清單3.5 顯示采用的兩種不同的方式。

        清單3.5  給你的代碼添加注釋

         1: using system;
         2:
         3: class helloworld
         4: {
         5:  public static void main()
         6:  {
         7:   // 這是單行注釋
         8:   /* 這種注釋
         9:   跨越多行 */
        10:   console.writeline(/*"hello world"*/);
        11:  }
        12: }

        "//" 符號(hào)用于單行注釋。你可以用"//"注釋當(dāng)前所在行,或是跟在一個(gè)代碼語句的后面:
        int nmyvar = 10; // 胡說八道
        所有在"//"后面的被認(rèn)為是一條注釋;所以,你可以同樣用它們來注釋一整行或一行源代碼的部分。這種注釋方式同c++中介紹的相似。
        如果你的注釋跨越多行,必須使用"/* */"的字符組合。這種方式在c中有效。除了單行注釋外,這種方式在c++和c#中還同樣有效。因c/c++和c#都使用這種多行注釋方式,所以它們也使用相同的終結(jié)符。請(qǐng)看下列代碼行:
        /* console.writeline("hello world"); */

        我使用"/* */"簡(jiǎn)單地注釋一整行。現(xiàn)在我假定這一行是很長(zhǎng)代碼的一部分,而且我決定要暫時(shí)禁用一個(gè)程序塊:
        /*
        ...
        /* console.writeline("hello world"); */
        ...
        */

        這個(gè)結(jié)構(gòu)所存在的問題為: "hello world"那一行后面的"*/"終止了始于第一行的"/*"的注釋,余下的代碼對(duì)編譯器有效,你將看到一些有趣的出錯(cuò)信息。至少 最后的"*/"被標(biāo)志為歸屬錯(cuò)誤。我只不過想提醒一下,讓你了解這種錯(cuò)誤。

3.5小結(jié)
       在這一章中,你創(chuàng)建、編譯并執(zhí)行了第一個(gè)c#應(yīng)用程序:著名的"hello world"程序。我用這個(gè)短短的應(yīng)用程序給你介紹有關(guān)main方法,它是一個(gè)應(yīng)用程序的入口點(diǎn),也是出口點(diǎn)。這個(gè)方法可以沒有返回值或返回一個(gè)整數(shù)錯(cuò)誤級(jí)別。如果你的應(yīng)用程序用參數(shù)調(diào)用,你可以(但不必要)讀出并使用它們。
       在編譯和測(cè)試應(yīng)用程序后,你學(xué)到了更多的由console對(duì)象提供的有關(guān)輸入和輸出的方法。對(duì)于學(xué)習(xí)c#而言,它們足以創(chuàng)建出有意義的控制臺(tái)例子,但用戶接口的大部分將是wfc、winforms或者asp+。
,歡迎訪問網(wǎng)頁設(shè)計(jì)愛好者web開發(fā)。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 漯河市| 尼玛县| 九寨沟县| 辉南县| 松溪县| 滁州市| 舒兰市| 池州市| 雷波县| 罗城| 镇沅| 宁德市| 南投市| 廉江市| 桦甸市| 涟水县| 益阳市| 阿克陶县| 乐安县| 衡水市| 丰都县| 三台县| 万州区| 元谋县| 习水县| 石台县| 定州市| 革吉县| 汝州市| 汾阳市| 景东| 蒙阴县| 武威市| 泰州市| 腾冲县| 哈密市| 莲花县| 遂昌县| 上虞市| 玛沁县| 峨眉山市|