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

首頁 > 開發 > 綜合 > 正文

叩開C#之門系列之幾個重要名詞

2024-07-21 02:28:47
字體:
來源:轉載
供稿:網友
  • 本文來源于網頁設計愛好者web開發社區http://www.html.org.cn收集整理,歡迎訪問。
  •   初學者很容易把這些概念搞混淆。先說說項目(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中設置。用鼠標右鍵單擊項目名,就可以彈出如下對話框:


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

      實例演練:

      (一)創建控制臺應用程序“hello world!”

      1、打開visual studio.net,選擇“file”菜單的“new”,選擇“project”;

      2、選擇visual c# projects中的“console application”,如圖所示:


      在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>
     /// summary description for class1.
     /// </summary>
     class helloworld
     {
      /// <summary>
      /// the main entry point for the application.
      /// </summary>
      [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文件夾下:


      2、在visual studio右側,可以看到現在有兩個項目了。仍然修改新項目的名稱和默認命名空間名,均為brucezhang.com.printer。

      3、將默認建立的class1.cs改名為messageprinter.cs,同時修改其代碼為:

    namespace brucezhang.com.printer
    {
     /// <summary>
     /// summary description for class1.
     /// </summary>
     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”標簽,找到該項目并選中,最后如圖所示:


      6、現在就可以在firstexample項目中使用messageprinter了。首先,在命名空間中添加對它的使用(using),然后再main()方法中調用它,最后代碼如下:

    using system;
    using brucezhang.com.printer;

    namespace brucezhang.com.firstexample
    {
     /// <summary>
     /// summary description for class1.
     /// </summary>
     class helloworld
     {
      /// <summary>
      /// the main entry point for the application.
      /// </summary>
      [stathread]
      static void main(string[] args)
      {
       messageprinter.print("hello world!");
       console.read();
      }
     }
    }

      7、運行。結果與前一個例子一樣。

      在這個例子中,解決方案中就包含了兩個項目,一個是控制臺應用程序,一個是類庫。類庫提供一些基本的功能,如例子中的print()方法。我們常常把一些共用的方法,放到類庫中。這樣其他的應用程序就可以去調用它。例如本例的控制臺應用程序。如果新建的windows應用程序,也需要這個功能,就可以直接引用messageprinter的print()方法,而不必重復去實現。
    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 平潭县| 门头沟区| 新丰县| 茶陵县| 宜兰市| 专栏| 新乡县| 青海省| 荔浦县| 治县。| 温宿县| 宜兰县| 富平县| 绵竹市| 临桂县| 淅川县| 山阴县| 和政县| 乐至县| 新昌县| 辽阳市| 方山县| 揭西县| 广平县| 启东市| 河南省| 独山县| 宝坻区| 淳安县| 安达市| 岢岚县| 集安市| 宁阳县| 安远县| 红安县| 乌兰浩特市| 阿尔山市| 岑溪市| 河东区| 浦城县| 江达县|