c# - 如何解决这个 c# 语法难题?

标签 c# .net logic

有人能给我解决以下代码难题的方法吗? 给出了一个解决方案,但可以是多个解决方案。

// this code compiles
IAnimal animal= new Dog();
animal.Eat();

// this code doesn't compile
Dog animal = new Dog();
animal.Eat();

类定义应该是什么样子,以便上面的代码块在不同的范围内编译(第一个)和不编译(第二个)?

最佳答案

您可以通过使用显式接口(interface)实现来实现:

class Dog : IAnimal {
    void IAnimal.Eat(){
        //do stuff
    }
}

相对于隐式接口(interface)实现:

class Dog : IAnimal {
    public void Eat(){
        //do stuff
    }
}

关于c# - 如何解决这个 c# 语法难题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35092638/

相关文章:

c# - 将项目移动到列表顶部时,WPF AlternationIndex 会回绕

c# - Asp.Net SignalR DependencyResolver 不解析集线器

c# - 缓冲区缓存清理时出现“超时已过期”错误

.net - 如何自动生成体育联赛赛程

vb.net - 验证字符串不包含已知值之外的值 [VB.NET]

c# - 具有可空 bool 值的三值逻辑?

c# - 可选的设计模式,优势

c# - 如何将用户重定向到 ACS 默认登录页面

c# - 具有包含 7 亿条记录的表的数据库

c# - 在 Tasks 中使用 lock() 是否安全?