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

C# 類別宣告語法全解:修飾詞、繼承、實例化、巢狀類別與單一繼承限制

     編輯:關於C#

類別宣告完整語法


[attributes] [class-modifiers] class identifier [type-parameter-list]
    [: base-class [, interface-list] ]
{
    // class-body
}

類別修飾詞詳細說明

修飾詞說明限制/備註
new巢狀類別隱藏基類別同名成員僅限巢狀類別
public無存取限制頂層類別預設 internal
internal同組件可存取頂層類別預設
private僅外層類別可存取巢狀類別專用
protected外層類別及衍生類別可存取巢狀類別專用
abstract不可實例化,可含抽象成員不可與 sealed 共存
sealed禁止繼承不可與 abstract 共存
static僅含靜態成員,不可實例化C# 2.0+,隱含 sealed + abstract
partial定義分散多檔案所有部分必須同組件、同存取層級

類別實例化


// 基本實例化
var obj = new MyClass();

// 巢狀類別實例化
Outer.Inner nested = new Outer.Inner(); // 若 Inner 為 public
// 或在 Outer 方法中
var nested = new Inner();

// 匿名類別 (僅限區域)
var anon = new { Name = "Test", Value = 123 };

繼承宣告:單一繼承 + 多介面實作


// 單一基類別
class Base { }
class Derived : Base { }

// 介面實作 (可多個)
interface IFly { void Fly(); }
interface ISwim { void Swim(); }
class Duck : IFly, ISwim {
    public void Fly() { }
    public void Swim() { }
}

// 結合繼承與介面
class FlyingDuck : Duck, IFly { } // 繼承 Duck + 實作 IFly
  • C# 不支援多重類別繼承 (避免菱形問題)。
  • 所有類別隱含繼承 System.Object。
  • 結構體 (struct) 不支援繼承 (隱含 sealed),但可實作介面。

巢狀類別與存取性


public class Outer {
    public class PublicNested { }           // 任何人可存取
    protected class ProtectedNested { }     // Outer + 衍生類別
    internal class InternalNested { }       // 同組件
    private class PrivateNested { }         // 僅 Outer
    private protected class PrivateProtectedNested { } // 同組件衍生類別 (C# 7.2+)
}

泛型類別宣告


// 型別參數清單
class Repository where TEntity : class, new() {
    public TEntity Create() => new TEntity();
}

// 多型別參數
class Dictionary { }

// 巢狀泛型類別
class Outer {
    class Inner { } // 獨立型別參數
}

現代 C# 類別新特性

特性語法版本關鍵特點
record classrecord Person(string Name, int Age);C# 9不可變、值相等、with 運算式、解構
record structrecord struct Point(int X, int Y);C# 10值型別 record
required 屬性class User { public required string Email { get; set; } }C# 11編譯期強制物件初始化器提供值
檔案區域類型file class Helper { }C# 11僅限宣告檔案可見,避免命名衝突
主要建構子class Point(int X, int Y) { }C# 12參數直接成屬性/欄位,簡化建構子

常見編譯錯誤

錯誤碼原因修正
CS0534未實作抽象基類別/介面成員補全實作或標記衍生類別 abstract
CS0509sealed 類別不可繼承移除 sealed 或改用組合
CS0655partial 類別部分標記不一致所有部分同步修飾詞
CS0118類別名稱與命名空間/型別衝突完整限定名稱或重命名
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved