/// <summary>
/// 第七章:創建并管理類和對象
/// </summary>
namespace Chapter7
{
? ? class Program
? ? {
? ? ? ? public static int Num = 0;//7.6.1創建共享字段
? ? ? ? public const double PI = 3.1415926;//7.6.2使用const關鍵字創建靜態字段,只有數值類型、字符串、枚舉才可以聲明
? ? ? ? static void Main(string[] args)
? ? ? ? {
? ? ? ? ? ? //7.1理解分類
? ? ? ? ? ? //7.2封裝的目的
? ? ? ? ? ? /*
? ? ? ? ? ? ?* 封裝:信息隱藏
? ? ? ? ? ? ?* 1.將方法和數據合并到類中,也就是為了支持分類
? ? ? ? ? ? ?* 2.控制對方法和數據的訪問,也就是為了控制類的使用
? ? ? ? ? ? ?*/
? ? ? ? ? ? //7.3定義并使用類
? ? ? ? ? ? Mouble.Class1 class1 = new Mouble.Class1();
? ? ? ? ? ? //7.4控制可訪問性(private、public)
? ? ? ? ? ? //7.5使用構造器
? ? ? ? ? ? (int xVal, int yVal) = class1;
? ? ? ? ? ? //7.6理解靜態方法和數據
? ? ? ? ? ? /*
? ? ? ? ? ? ?* 靜態方法不依賴類的實例,不能在其中訪問類的任何實例字段或實例方法。相反,只能訪問標記為static的其他方法和字段
? ? ? ? ? ? ?*/
? ? ? ? ? ? //7.6.3理解靜態類
? ? ? ? ? ? /*
? ? ? ? ? ? ?* 靜態類只能包含靜態成員(使用該類創建的所有對象都共享這些成員的單一拷貝)
? ? ? ? ? ? ?* 靜態類純粹作為工具方法和字段的容器使用
? ? ? ? ? ? ?* 靜態類不能包含任何實例數據或方法
? ? ? ? ? ? ?* new操作符創建靜態類的對象沒有意義,編譯器也會報錯
? ? ? ? ? ? ?* 允許包含一個默認構造器(靜態)
? ? ? ? ? ? ?*/
? ? ? ? ? ? //7.6.4靜態using語句
? ? ? ? ? ? //using static System.Math;慎用!
? ? ? ? ? ? //7.7匿名類
? ? ? ? ? ? /*
? ? ? ? ? ? ?* 匿名類沒有名字的類
? ? ? ? ? ? ?*/
? ? ? ? ? ? var myAnonymousObject = new { Name = "John",Age = 47 };
? ? ? ? ? ? Console.WriteLine($"Name:{myAnonymousObject.Name}Age:{myAnonymousObject.Age}");
? ? ? ? ? ? /*
? ? ? ? ? ? ?* 匿名類雖然好用,但內容存在著相當多的限制。匿名類只能包含公共字段,字段必須初始化,不能是靜態,而且不能定義任何方法。
? ? ? ? ? ? ?*/
? ? ? ? }
? ? }
}
?
?class Class1
? ? {
? ? ? ? private int x, y;
? ? ? ? public Class1()//7.5默認構造器
? ? ? ? {
? ? ? ? }
? ? ? ? Class1(int num)//7.5.1重載構造器
? ? ? ? {
? ? ? ? }
? ? ? ? //7.5.2解構對象
? ? ? ? /*
? ? ? ? ?* 必須命名為Deconstruct
? ? ? ? ?* 必須是void方法
? ? ? ? ?* 必須獲取一個或多個參數。這些參數用對象中的字段的值填充
? ? ? ? ?* 參數用out修飾符加以標志。意味著如果向其賦值,這些值會傳回調用者。
? ? ? ? ?* 方法主體代碼向參數賦值
? ? ? ? ?*/
? ? ? ? ?public void Deconstruct(out int x,out int y)
? ? ? ? {
? ? ? ? ? ? x = this.x;
? ? ? ? ? ? y = this.y;
? ? ? ? }
? ? }