首页 > 解决方案 > 接口中的私有成员

问题描述

这可以在.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();
}

标签: c#.netc#-8.0

解决方案


是的!现在您可以在 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();
}

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


推荐阅读