c# - 接口中的私有成员
问题描述
这可以在.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# 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
推荐阅读
- angular - 如何将 css 文件与公共和管理区域组件分开?
- python - xgboost 模块无法识别
- java - 如何使用 mockito 编写/上传文件测试?
- python - Django REST 框架中的 405“不允许使用方法 POST”
- mongodb - Mongoengine中no_cache()对querySet的影响
- python - 错误:命令“cc”失败,退出状态为 1。当我尝试在 Mac mojave 10.14 中安装 MySQL-python 包时
- machine-learning - 如何通过机器学习学习“加法”之类的操作
- apache-flink - Apache Flink:使用 filter() 或 split() 拆分流?
- ios - 对未反映在 git 中的本机函数的 xcode 更改的本机撤消做出反应
- php - 事务中的 PHP PostgreSQL 多个查询