| 分類 | 包含型別 | 記憶體語意 |
|---|---|---|
| 值型別 | 簡單型別、列舉、結構 | 變數直接包含資料 |
| 參考型別 | 類別、介面、委派、陣列 | 變數儲存物件參考 |
using System;
class Class1 { public int Value = 0; }
class Test {
static void Main() {
// 值型別:各自獨立副本
int val1 = 0;
int val2 = val1;
val2 = 123;
// val1=0, val2=123
// 參考型別:共享同一物件
Class1 ref1 = new Class1();
Class1 ref2 = ref1;
ref2.Value = 123;
// ref1.Value=123, ref2.Value=123
Console.WriteLine("Values: {0}, {1}", val1, val2); // 0, 123
Console.WriteLine("Refs: {0}, {1}", ref1.Value, ref2.Value); // 123, 123
}
}
Console.WriteLine("Values: {0}, {1}", val1, val2) 中的 {0}、{1} 為編號佔位符,對應後續參數,執行時替換為實際值。
// 值型別
public enum Color { Red, Blue, Green }
public struct Point { public int x, y; }
// 參考型別
public interface IBase { void F(); }
public interface IDerived : IBase { void G(); }
public class A { protected virtual void H() => Console.WriteLine("A.H"); }
public class B : A, IDerived {
public void F() => Console.WriteLine("B.F");
public void G() => Console.WriteLine("B.G");
protected override void H() => Console.WriteLine("B.H override");
}
public delegate void EmptyDelegate();