Interface中加Static

ProZkb發表於2024-06-27

在 C# 8.0 及更早版本中,介面中不能包含靜態成員。介面主要用於定義例項成員的契約,而靜態成員屬於型別本身而不是例項。

然而,從 C# 8.0 開始,介面可以包含靜態成員,但這些靜態成員必須是靜態方法、靜態屬性或靜態欄位。
靜態成員的引入允許介面定義一些通用的行為或工具方法,這些方法可以被實現介面的類共享使用。

using System;

public interface IExample
{
    static void StaticMethod()
    {
        Console.WriteLine("This is a static method in an interface.");
    }
}

public class ExampleClass : IExample
{
    // Class implementation
}

class Program
{
    static void Main()
    {
        IExample.StaticMethod(); // 呼叫介面中的靜態方法
    }
}

主要注意點

  1. 靜態成員屬於介面本身:靜態成員不能由實現介面的類例項訪問,只能透過介面本身訪問。
  2. 介面的靜態成員在C# 8.0及更高版本中引入:確保你的專案目標框架和語言版本支援C# 8.0及更高版本。

靜態成員的型別

介面中可以包含以下靜態成員:

  1. 靜態方法:可以在介面中定義靜態方法,用於實現某些通用功能。
  2. 靜態屬性:可以在介面中定義靜態屬性,用於共享資料。
  3. 靜態欄位:可以在介面中定義靜態欄位,用於儲存共享狀態。|



以下是包含靜態屬性和靜態欄位的介面示例:

public interface IExample
{
    static string StaticProperty { get; set; } = "Default value";
    static int StaticField = 42;

    static void StaticMethod()
    {
        Console.WriteLine("This is a static method in an interface.");
    }
}

public class ExampleClass : IExample
{
    // Class implementation
}

class Program
{
    static void Main()
    {
        IExample.StaticMethod(); // 呼叫介面中的靜態方法
        Console.WriteLine(IExample.StaticProperty); // 訪問介面中的靜態屬性
        Console.WriteLine(IExample.StaticField); // 訪問介面中的靜態欄位
    }
}

從 C# 8.0 開始,介面可以包含靜態成員,但這些成員不能是例項成員。靜態成員的引入為介面提供了更多的功能,可以用於定義一些通用的行為或工具方法,這些方法可以被實現介面的類共享使用。

相關文章