接口中的私有成员

Sil*_*ang 4 .net c# c#-8.0

是否可以在.NET 接口中创建私有成员?我听说现在可以了,但我的 IDE 拒绝了:

public interface IAnimal
{
    void SetDefaultName(string name)
    {
        ChangeName(name);
    }

    private string defaultName = "NoName";

    private void ChangeName(string name)
    {
        defaultName = name;
    }
    void Breath()
    {
        Console.WriteLine($"Default - I'm {defaultName}. <Breathing sounds>");
    }

    void Sound();
}
Run Code Online (Sandbox Code Playgroud)

Paw*_*wel 5

是的!现在您可以在 C# 8.0 中使用,但它必须是静态成员。像这样:

public interface IAnimal
{
    static void SetDefaultName(string name)
    {
        ChangeName(name);
    }

    private static string defaultName = "NoName";

    private static void ChangeName(string name)
    {
        defaultName = name;
    }
    void Breath()
    {
        Console.WriteLine($"Default - I'm {defaultName}. <Breathing sounds>");
    }

    void Sound();
}
Run Code Online (Sandbox Code Playgroud)

但您需要记住,静态字段将在整个应用程序中共享。更改defaultName将导致您使用的每个地方都更改它IAnimal