首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 型別系統:值型別與參考型別核心差異

     編輯:關於C語言

兩大型別分類

分類包含型別記憶體語意
值型別簡單型別、列舉、結構變數直接包含資料
參考型別類別、介面、委派、陣列變數儲存物件參考

核心行為差異示範

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();
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved