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 塊的結束。 |