用VS2010編C#程序掃盲


  0.

Properties文件夾 定義你程序集的屬性 項目屬性文件夾 一般只有一個 AssemblyInfo.cs 類文件,用於保存程序集的信息,如名稱,版本等,這些信息一般與項目屬性面板中的數據對應,不需要手動編寫

Bin 目錄用來保存項目生成后程序集,它有Debug和Release兩個版本,分別對應的文件夾為bin/Debug和bin/Release,這個文件夾是默認的輸出路徑,我們可以通過:項目屬性—>配置屬性—>輸出路徑來修改。

obj目錄是用來保存每個模塊的編譯結果,在.NET中,編譯是分模塊進行的,編譯整個完成后會合並為一個.DLL或.EXE保存到bin目錄下。 因為每次編譯時默認都是采用增量編譯,即只重新編譯改變了的模塊,obj保存每個模塊的編譯結果,用來加快編譯速度。是否采用增量編譯,可以通過:項目屬 性—>配置屬性—>高級—>增量編譯來設置。

 

  1.創建string對象的幾個方法:

      

static void Main(string[] args)
        {
           //字符串,字符串連接
            string fname, lname;
            fname = "Rowan";
            lname = "Atkinson";

            string fullname = fname + lname;
            Console.WriteLine("Full Name: {0}", fullname);

            //通過使用 string 構造函數
            char[] letters = { 'H', 'e', 'l', 'l','o' };
            string greetings = new string(letters);
            Console.WriteLine("Greetings: {0}", greetings);

            //方法返回字符串
            string[] sarray = { "Hello", "From", "Tutorials", "Point" };
            string message = String.Join(" ", sarray);
            Console.WriteLine("Message: {0}", message);

            //用於轉化值的格式化方法
            DateTime waiting = new DateTime(2012, 10, 10, 17, 58, 1);
            string chat = String.Format("Message sent at {0:t} on {0:D}", 
            waiting);
            Console.WriteLine("Message: {0}", chat);
            Console.ReadKey() ;
        }

   2.

  • 當您使用 New 操作符創建一個結構對象時,會調用適當的構造函數來創建結構。與類不同,結構可以不使用 New 操作符即可被實例化。
  • 如果不使用 New 操作符,只有在所有的字段都被初始化之后,字段才被賦值,對象才被使用

  3.

類和結構有以下幾個基本的不同點:

  • 類是引用類型,結構是值類型。
  • 結構不支持繼承。
  • 結構不能聲明默認的構造函數。

  4.枚舉例子:

using System;
namespace EnumApplication
{
   class EnumProgram
   {
      enum Days { Sun, Mon, tue, Wed, thu, Fri, Sat };

      static void Main(string[] args)
      {
         int WeekdayStart = (int)Days.Mon;
         int WeekdayEnd = (int)Days.Fri;
         Console.WriteLine("Monday: {0}", WeekdayStart);
         Console.WriteLine("Friday: {0}", WeekdayEnd);
         Console.ReadKey();
      }
   }
}

   5.類的默認訪問標識符是internal,成員的默認訪問標識符是 private

  6.構造函數的名稱與類的名稱完全相同,它沒有任何返回類型。

  7.

類的 析構函數 是類的一個特殊的成員函數,當類的對象超出范圍時執行。

析構函數的名稱是在類的名稱前加上一個波浪形(~)作為前綴,它不返回值,也不帶任何參數。

析構函數用於在結束程序(比如關閉文件、釋放內存等)之前釋放資源。析構函數不能繼承或重載。

  8.

class Line
   {
      private double length;   // 線條的長度
      public Line()  // 構造函數
      {
         Console.WriteLine("對象已創建");
      }
      ~Line() //析構函數
      {
         Console.WriteLine("對象已刪除");
      }

  9.

我們可以使用 static 關鍵字把類成員定義為靜態的。當我們聲明一個類成員為靜態時,意味着無論有多少個類的對象被創建,只會有一個該靜態成員的副本。

關鍵字 static 意味着類中只有一個該成員的實例。靜態變量用於定義常量,因為它們的值可以通過直接調用類而不需要創建類的實例來獲取。靜態變量可在成員函數或類的定義外部進行初始化。您也可以在類的定義內部初始化靜態變量。

  10.您也可以把一個成員函數聲明為 static。這樣的函數只能訪問靜態變量。靜態函數在對象被創建之前就已經存在。

  11.一個類可以派生自多個類或接口,這意味着它可以從多個基類或接口繼承數據和函數。

  12.  在子類的構造函數中,初始化父類的成員變量。(在子類實例化時,父類對象應在子類對象創建之前被創建)

using System;
namespace RectangleApplication
{
   class Rectangle
   {
      // 成員變量
      protected double length;
      protected double width;
      public Rectangle(double l, double w)
      {
         length = l;
         width = w;
      }
      public double GetArea()
      {
         return length * width;
      }
      public void Display()
      {
         Console.WriteLine("長度: {0}", length);
         Console.WriteLine("寬度: {0}", width);
         Console.WriteLine("面積: {0}", GetArea());
      }
   }//end class Rectangle  
   class Tabletop : Rectangle
   {
      private double cost;
      public Tabletop(double l, double w) : base(l, w)
      { }
      public double GetCost()
      {
         double cost;
         cost = GetArea() * 70;
         return cost;
      }
      public void Display()
      {
         base.Display();
         Console.WriteLine("成本: {0}", GetCost());
      }
   }
   class ExecuteRectangle
   {
      static void Main(string[] args)
      {
         Tabletop t = new Tabletop(4.5, 7.5);
         t.Display();
         Console.ReadLine();
      }
   }
}

  13.C# 不支持多重繼承。但是,您可以使用接口來實現多重繼承。下面的程序演示了這點

  14.

多態性意味着有多重形式。在面向對象編程范式中,多態性往往表現為"一個接口,多個功能"。

多態性可以是靜態的或動態的。在靜態多態性中,函數的響應是在編譯時發生的。在動態多態性中,函數的響應是在運行時發生的。

靜態多態性:函數重載;運算符重載;   不能重載只有返回類型不同的函數聲明

  15.

C# 允許您使用關鍵字 abstract 創建抽象類,用於提供接口的部分類的實現。當一個派生類繼承自該抽象類時,實現即完成。抽象類包含抽象方法,抽象方法可被派生類實現。派生類具有更專業的功能。

請注意,下面是有關抽象類的一些規則:

  您不能創建一個抽象類的實例。

  您不能在一個抽象類外部聲明一個抽象方法。

  通過在類定義前面放置關鍵字 sealed,可以將類聲明為密封類。當一個類被聲明為 sealed 時,它不能被繼承。抽象類不能被聲明為 sealed。

  

  16.動態多態性。。。還沒明白,http://www.runoob.com/csharp/csharp-polymorphism.html

  17.String.Format("({0}, {1}, {2})", length, breadth, height);      字符串輸出

  18.要擴展或修改繼承的方法、屬性、索引器或事件的抽象實現或虛實現,必須使用 override 修飾符

  19.

接口使用 interface 關鍵字聲明,它與類的聲明類似。接口聲明默認是 public 的。

接口定義了所有類繼承接口時應遵循的語法合同。接口定義了語法合同 "是什么" 部分,派生類定義了語法合同 "怎么做" 部分。

接口定義了屬性、方法和事件,這些都是接口的成員。接口只包含了成員的聲明。成員的定義是派生類的責任。接口提供了派生類應遵循的標准結構。

抽象類在某種程度上與接口類似,但是,它們大多只是用在當只有少數方法由基類聲明由派生類實現時。

  20.預處理器指令指導編譯器在實際編譯開始之前對信息進行預處理。預處理器指令不是語句,所以它們不以分號(;)結束。

#define 它用於定義一系列成為符號的字符。
#undef 它用於取消定義符號。
#if 它用於測試符號是否為真。
#else 它用於創建復合條件指令,與 #if 一起使用。
#elif 它用於創建復合條件指令。
#endif 指定一個條件指令的結束。
#line 它可以讓您修改編譯器的行數以及(可選地)輸出錯誤和警告的文件名。
#error 它允許從代碼的指定位置生成一個錯誤。
#warning 它允許從代碼的指定位置生成一級警告。
#region 它可以讓您在使用 Visual Studio Code Editor 的大綱特性時,指定一個可展開或折疊的代碼塊。
#endregion

它標識着 #region 塊的結束。                                                                        


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM