1 public class Program1 2 { 3 #region 結構 4 //結構是值類型,存儲在棧上 5 //1:結構中的成員變數不能有初始值 6 //2:結構中不能聲明無參數構造函數 7 struct Example 8 { 9 //public int Width = 1;//錯誤 ...
1 public class Program1 2 { 3 #region 結構 4 //結構是值類型,存儲在棧上 5 //1:結構中的成員變數不能有初始值 6 //2:結構中不能聲明無參數構造函數 7 struct Example 8 { 9 //public int Width = 1;//錯誤 10 //public int Height = 1;//錯誤 11 12 public int Width;//正確 13 public int Height;//正確 14 15 //錯誤 16 //public Example() 17 //{ 18 19 //} 20 21 //正確 22 public Example(int width, int height) 23 { 24 Width = width; 25 Height = height; 26 } 27 } 28 #endregion 29 }結構
1 public class Program1 2 { 3 public class MyClass 4 { 5 public int value { get; set; } 6 } 7 8 static void Main(string[] args) 9 { 10 //一般實例化類型的時候,垃圾回收器一般不會清理對象的記憶體 11 //MyClass myClass = new MyClass();//這種聲明屬於強引用 12 13 #region 弱引用 14 //弱引用實例化的時候,垃圾回收器可能會回收掉對象釋放記憶體 15 //所以使用的時候,需要判斷應用是否存在 16 17 WeakReference reference = new WeakReference(new MyClass()); 18 19 MyClass myClass = reference.Target as MyClass; 20 21 if (myClass != null) 22 { 23 myClass.value = 10; 24 25 Console.WriteLine(myClass.value); 26 } 27 28 //回收 29 GC.Collect(); 30 31 if (reference.IsAlive) 32 { 33 myClass = reference.Target as MyClass; 34 35 myClass.value = 1; 36 37 Console.WriteLine(myClass.value); 38 } 39 else 40 { 41 Console.WriteLine("引用不存在"); 42 } 43 44 #endregion 45 46 } 47 } 48 }弱引用
1 public class Program1 2 { 3 public class MyClass 4 { 5 public int Value { get; set; } 6 } 7 8 #region 擴展方法 9 10 /// <summary> 11 /// MyClass的擴展方法;擴展方法必須是靜態的,如果擴展方法與原方法重名, 12 /// 優先調用原方法;註意this 13 /// </summary> 14 public static class MyClassExtension 15 { 16 public static int GetValue(this MyClass myClass, int addValue) 17 { 18 return myClass.Value + addValue; 19 } 20 21 } 22 23 #endregion 24 }擴展方法