青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 42  文章 - 3  trackbacks - 0
<2008年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用鏈接

留言簿(2)

隨筆檔案

文章檔案

網頁收藏

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

前言:表弟想要學編程,我推薦他學習.Net和C#。這一推薦不打緊,我卻承擔上了指導的職責。我又出差在外,直接輔導是不行了,通過郵件也太麻煩。推薦了幾本書,可惜他太菜了,總有無從下手的感覺。推及他人,在初學C#時,是否也有這樣的感覺呢?所以,就有了這個系列文章。表弟是我把他帶入計算機行業的,當初什么都不懂,我曾經打開計算機機箱,指點他哪里是硬盤、哪里是內存,是CPU,現在對于計算機硬件他早已可以做我師傅。希望學軟件編程也能這樣。

一、解決方案、項目、程序集、命名空間
初學者很容易把這些概念搞混淆。先說說項目(Project),通俗的說,一個項目可以就是你開發的一個軟件。在.Net下,一個項目可以表現為多種類型,如控制臺應用程序,Windows應用程序,類庫(Class Library),Web應用程序,Web Service,Windows控件等等。如果經過編譯,從擴展名來看,應用程序都會被編譯為.exe文件,而其余的會被編譯為.dll文件。既然是.exe文件,就表明它是可以被執行的,表現在程序中,這些應用程序都有一個主程序入口點,即方法Main()。而類庫,Windows控件等,則沒有這個入口點,所以也不能直接執行,而僅提供一些功能,給其他項目調用。

在Visual Studio.Net中,可以在“File”菜單中,選擇“new”一個“Project”,來創建一個新的項目。例如創建控制臺應用程序。注意在此時,Visual Studio除了建立了一個控制臺項目之外,該項目同時還屬于一個解決方案(Solution)。這個解決方案有什么用?如果你只需要開發一個Hello World的項目,解決方案自然毫無用處。但是,一個稍微復雜一點的軟件,都需要很多模塊來組成,為了體現彼此之間的層次關系,利于程序的復用,往往需要多個項目,每個項目實現不同的功能,最后將這些項目組合起來,就形成了一個完整的解決方案。形象地說,解決方案就是一個容器,在這個容器里,分成好多層,好多格,用來存放不同的項目。一個解決方案與項目是大于等于的關系。建立解決方案后,會建立一個擴展名為.sln的文件。

在解決方案里添加項目,不能再用“new”的方法,而是要在“File”菜單中,選擇“Add Project”。添加的項目,可以是新項目,也可以是已經存在的項目。

程序集叫Assembly。學術的概念我不想提,通俗的角度來說,一個項目也就是一個程序集。從設計的角度來說,也可以看成是一個完整的模塊(Module),或者稱為是包(Package)。因此,一個程序集也可以體現為一個dll文件,或者exe文件。怎樣劃分程序集也是大有文章的,不過初學者暫時不用考慮它。

命名空間(namespace)是在C++里面就有的概念。引入它,主要是為了避免一個項目中,可能會存在的相同對象名的沖突。這個命名空間的定義,沒有特殊的要求。不過基本上來說,為了保證其唯一性,最好是用uri的格式,例如BruceZhang.com。這個命名空間有點像我們姓名中的姓,然后每個對象的名字則是姓名中的名。如果有重復,在國外的命名中,還可以加上middle name。那么名都為“勇”的,由于姓氏不同也就分開了,或者叫張勇,或者叫趙勇。當然人的姓氏重復者居多,所以我們為命名空間取名時,盡可能的復雜一點。

有許多初學者,常常把一個項目就理解為一個命名空間。其實這兩者沒有絕對的聯系,在項目里我們也可以定義很多不相同的命名空間。但為了用戶便于使用,最好在一個項目中,其命名空間最好是一體的層次結構。在Visual Studio里,我們可以在項目中新建一個文件夾,默認情況下,該文件夾下對象的命名空間,應該是“項目的命名空間.文件夾名”。當然,我們也可以在namespace中修改它。

命名空間和程序集名,都可以在Visual Studio中設置。用鼠標右鍵單擊項目名,就可以彈出如下對話框:
 

cs01.gif

在圖中,Assembly Name就是程序集名,如果經過編譯,則為該項目的文件名。而Default Namespace則為默認的命名空間。在開發軟件時,我們要養成良好的習慣,在建立新項目后,就將這些屬性設置好。一旦設置好了Default Namespace,則以后新建的對象,其命名空間即為該設定的值。至于程序集名,如果是dll文件,建議其名最好與Default Namespace一致。

實例演練:
(一)創建控制臺應用程序“Hello World!”
1、打開Visual Studio.Net,選擇“File”菜單的“new”,選擇“Project”;
2、選擇Visual C# Projects中的“Console Application”,如圖所示:
 

cs02.gif

在Location中,定位你要保存的項目的路徑,而名字則為“FirstExample”。該名字此時既是解決方案的名字,同時也是該項目的名字。
3、用鼠標右鍵單擊項目名,在彈出的對話框中,將Assembly Name命名為HelloWorld,將Default Namespace命名為:BruceZhang.com.FirstExample。
4、此時Visual Studio中已經建立了一個文件,其名為Class1.cs(如果是Visual Studio 2005,則默認為Program.cs);修改該文件的文件名為HelloWorld.cs,同時修改文件中的namespace,和類名,如下:
namespace BruceZhang.com.FirstExample
{
 ///
 /// Summary description for Class1.
 ///
 class HelloWorld
 {
  ///
  /// The main entry point for the application.
  ///
  [STAThread]
  static void Main(string[] args)
  {
   //
   // TODO: Add code to start application here
   //
  }
 }
}
5、注意在HelloWorld.cs中,有一個Main()方法。這是因為我們建立的是控制臺應用程序。在Main()方法中添加如下代碼:
Console.WriteLine(”Hello World!”);
Console.Read();
這里的Console是一個能對控制臺進行操作的類。
6、運行。
檢查保存項目的路徑文件夾FirstExample/bin/debug,已經存在了一個HelloWorld.exe文件。

(二)為解決方案添加一個新項目
1、在“File”菜單中,選擇“Add Project”,添加“New Project”。在對話框中選擇“Class Library”,名字為Printer。至于保存路徑,可以放在之前建立的FirstExample文件夾下:

cs03.gif

2、在Visual Studio右側,可以看到現在有兩個項目了。仍然修改新項目的名稱和默認命名空間名,均為BruceZhang.com.Printer。
3、將默認建立的Class1.cs改名為MessagePrinter.cs,同時修改其代碼為:
namespace BruceZhang.com.Printer
{
 ///
 /// Summary description for Class1.
 ///
 public class MessagePrinter
 {
  public MessagePrinter()
  {
   //
   // TODO: Add constructor logic here
   //
  }

  public static void Print(string msg)
  {
   Console.WriteLine(msg);
  }
 }
}
在MessagePrinter類中,我們注意到并沒有Main()方法,因為它不是應用程序。新增加的Print()方法,能夠接收一個字符串,然后在控制臺中顯示出來。
4、編譯Printer項目。鼠標右鍵單擊該項目名,在菜單中選擇“Build”。成功編譯后,找到文件夾Printer/bin/debug,可以發現有文件BruceZhang.com.Printer.dll,這就是最后形成的程序集文件。
5、關聯這兩個項目。我們希望是在FirstExample項目中用到Printer項目的Print()方法,前提是需要在FirstExample項目中添加對Printer項目的引用。右鍵單擊FirstExample項目的“Reference”,選擇“Add Reference”,在對話框中選擇“Project”標簽,找到該項目并選中,最后如圖所示:

cs04.gif

6、現在就可以在FirstExample項目中使用MessagePrinter了。首先,在命名空間中添加對它的使用(Using),然后再Main()方法中調用它,最后代碼如下:
using System;
using BruceZhang.com.Printer;

namespace BruceZhang.com.FirstExample
{
 ///
 /// Summary description for Class1.
 ///
 class HelloWorld
 {
  ///
  /// The main entry point for the application.
  ///
  [STAThread]
  static void Main(string[] args)
  {
   MessagePrinter.Print(”Hello World!”);
   Console.Read();
  }
 }
}
7、運行。結果與前一個例子一樣。

在這個例子中,解決方案中就包含了兩個項目,一個是控制臺應用程序,一個是類庫。類庫提供一些基本的功能,如例子中的Print()方法。我們常常把一些共用的方法,放到類庫中。這樣其他的應用程序就可以去調用它。例如本例的控制臺應用程序。如果新建的Windows應用程序,也需要這個功能,就可以直接引用MessagePrinter的Print()方法,而不必重復去實現。

posted on 2008-11-21 10:16 鷹擊長空 閱讀(564) 評論(0)  編輯 收藏 引用
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美韩日一区二区| 久久性天堂网| 国产欧美日韩亚洲一区二区三区| 免费毛片一区二区三区久久久| 亚洲砖区区免费| 亚洲一区二区影院| 亚洲尤物影院| 午夜久久美女| 久久天天躁夜夜躁狠狠躁2022| 久久综合久久久| 欧美成人一区二区| 欧美视频在线播放| 亚洲激情不卡| 久久久一二三| 欧美成人午夜剧场免费观看| 最近中文字幕日韩精品| 99精品福利视频| 亚洲欧美精品伊人久久| 国产日本亚洲高清| 欧美伊人久久大香线蕉综合69| 午夜视频一区二区| 久久久91精品| 欧美精品黄色| 国产伪娘ts一区| 1000部精品久久久久久久久| 亚洲精品少妇网址| 亚洲免费在线电影| 久久综合久久88| 一区二区三区精品| 久久男人av资源网站| 欧美视频日韩视频在线观看| 国产中文一区二区三区| 一区二区电影免费观看| 久久精品国产欧美亚洲人人爽| 欧美激情网友自拍| 在线午夜精品| 免费成人高清| 国产亚洲欧美日韩日本| 亚洲五月婷婷| 免费一级欧美片在线播放| 一区二区免费看| 欧美69wwwcom| 黄色成人av| 午夜视频在线观看一区| 亚洲国内自拍| 久久久国产亚洲精品| 欧美成人免费全部| 国内在线观看一区二区三区| 亚洲中午字幕| 亚洲激情不卡| 久热综合在线亚洲精品| 国产综合香蕉五月婷在线| 亚洲欧美日韩国产中文| 亚洲福利视频一区二区| 另类激情亚洲| 亚洲国产精品一区二区www在线| 久久国产免费| 亚洲在线观看视频网站| 欧美日韩美女在线| 日韩视频免费观看| 欧美成人伊人久久综合网| 亚洲免费综合| 国产精品日本一区二区| 亚洲图色在线| 亚洲精品乱码久久久久久| 欧美国产在线观看| 亚洲动漫精品| 亚洲国产日韩欧美综合久久| 免费成人网www| 亚洲日韩成人| 亚洲激情视频在线播放| 久久久久久一区二区三区| 国模吧视频一区| 久久综合五月天婷婷伊人| 亚洲免费在线观看视频| 欧美日韩中文字幕日韩欧美| 亚欧成人精品| 一本色道久久综合亚洲精品不卡| 亚洲福利国产精品| 母乳一区在线观看| 99这里只有久久精品视频| 99成人免费视频| 欧美天堂亚洲电影院在线观看| 亚洲四色影视在线观看| 这里只有视频精品| 国产精品美女久久久久久久| 欧美在线精品一区| 久久精品1区| 亚洲美女av电影| 亚洲美女少妇无套啪啪呻吟| 国产精品一区二区欧美| 久久久久成人精品| 久久精品国产在热久久| 夜夜嗨av色综合久久久综合网| 亚洲乱码视频| 国产亚洲欧美一区在线观看| 亚洲国产高潮在线观看| 国产精品久久久久影院亚瑟| 老司机精品视频一区二区三区| 免费观看在线综合色| 亚洲永久精品大片| 久久精品一本久久99精品| 亚洲欧洲日夜超级视频| av72成人在线| 黄色成人在线免费| 日韩午夜剧场| 国产一区二区三区黄| 欧美大尺度在线观看| 欧美午夜一区二区三区免费大片| 久久精品主播| 欧美视频在线视频| 亚洲丰满少妇videoshd| 黑丝一区二区| 亚洲一区二区三区免费观看| 亚洲美女在线一区| 欧美亚洲日本网站| 这里只有精品在线播放| 久久成人一区二区| 亚洲自拍三区| 牛牛国产精品| 欧美一区永久视频免费观看| 老司机免费视频久久| 久久av资源网| 欧美天堂亚洲电影院在线播放| 欧美成人有码| 1000部国产精品成人观看| 先锋影音网一区二区| 亚洲淫性视频| 欧美亚一区二区| 亚洲人成网站色ww在线| 在线观看亚洲一区| 欧美一级淫片播放口| 亚洲尤物在线视频观看| 欧美精品成人一区二区在线观看| 美女脱光内衣内裤视频久久影院 | 欧美日韩一区二区三区高清| 国产精品日韩精品欧美精品| 亚洲国产欧美不卡在线观看| 亚洲高清在线精品| 久久一区免费| 欧美激情第9页| 亚洲乱码国产乱码精品精| 欧美www视频| 亚洲国产99| 亚洲日韩视频| 免费亚洲一区| 亚洲精品国产品国语在线app| 亚洲精品欧美激情| 欧美电影资源| 亚洲巨乳在线| 亚洲欧美日韩成人| 国产精品天美传媒入口| 亚洲欧美制服另类日韩| 欧美资源在线| 亚洲丶国产丶欧美一区二区三区| 欧美大片一区二区三区| 亚洲美女尤物影院| 亚洲已满18点击进入久久| 国产精品亚洲аv天堂网| 午夜精品免费| 久久天天躁狠狠躁夜夜av| 亚洲电影有码| 欧美天天综合网| 欧美在线播放视频| 欧美成黄导航| 99av国产精品欲麻豆| 欧美体内谢she精2性欧美| 午夜亚洲影视| 久久人人爽人人| 日韩一区二区精品在线观看| 国产视频精品xxxx| 欧美黄在线观看| 在线一区欧美| 免费一级欧美片在线观看| 亚洲丝袜av一区| 激情一区二区三区| 欧美三级第一页| 久久久久久网站| 亚洲免费一在线| 91久久综合| 性欧美长视频| 亚洲精品之草原avav久久| 国产精品日韩精品| 免费日韩成人| 在线视频精品一| 欧美成人精品在线观看| 亚洲欧美国产一区二区三区| 黄色成人精品网站| 欧美色道久久88综合亚洲精品| 午夜亚洲伦理| 亚洲日本aⅴ片在线观看香蕉| 久久久国产午夜精品| 亚洲一区免费看| 亚洲片区在线| 激情亚洲一区二区三区四区| 国产日产欧美a一级在线| 欧美色图一区二区三区| 免费成人黄色av| 久久gogo国模啪啪人体图| 欧美激情国产日韩精品一区18|