假设我有一个如下定义的接口: public interface IFunctionality { void Method(); } 我为抽象类实现了这个接口,如下所示: public abstract class AbstractFunctionality: IFunctionality { public void Method() { Console.WriteLine("Abstract stuff" + "\n"); } } 再次我有一个具体的类inheritance抽象类如下: public class ConcreteFunctionality: AbstractFunctionality { public void Method() { Console.WriteLine("Concrete stuff" + "\n"); } } 现在我有下面的代码, ConcreteFunctionality mostDerived = new ConcreteFunctionality(); AbstractFunctionality baseInst = mostDerived; IFunctionality interfaceInst = mostDerived; […]
我有一个朋友在Java开发了很久之后才开始进行.NET开发,在看了他的一些代码之后,我发现他经常这样做: IDictionary<string, MyClass> dictionary = new Dictionary<string, MyClass>(); 他将字典声明为接口而不是类。 通常我会做以下几点: Dictionary<string, MyClass> dictionary = new Dictionary<string, MyClass>(); 在需要的时候,我只会使用IDictionary接口(比如将字典传递给一个接受IDictionary接口的方法)。 我的问题是:他的做事方式有什么好处吗? 这在Java中是一种常见的做法吗?
看到代码片段 Set<Record> instances = new HashSet<Record>(); 我想知道Hashset是否是一种特殊的集合。 他们之间的任何区别?
我在接口的实现类的方法。 当我做明确的实现时,我得到了编译器错误 The modifier 'public' is not valid for this item 为什么不允许public显式的接口实现?
使用C#4.0 – 构build一个接口和一个实现接口的类。 我想在接口中声明一个可选参数,并将其反映在类中。 所以,我有以下几点: public interface IFoo { void Bar(int i, int j=0); } public class Foo { void Bar(int i, int j=0) { // do stuff } } 这编译,但它看起来不正确。 接口需要具有可选参数,否则在接口方法签名中不能正确反映。 我应该跳过可选参数,只使用可空types? 或者这样做是否会按照预期进行,没有任何副作用或后果?
Class someInterface = Class.fromName("some.package.SomeInterface"); 我现在如何创build一个实现someInterface的新类? 我需要创build一个新的类,并将其传递给需要一个SomeInterface作为参数的函数。
public interface IDic { int Id { get; set; } string Name { get; set; } } public class Client : IDic { } 我怎样才能将List<Client>为List<IDic> ?
在我的项目中,我发现了一个奇怪的情况,在C#中似乎完全有效,因为我没有编译时错误。 简单的例子看起来像这样: using System; using System.Collections.Generic; namespace Test { interface IFoo { void FooMethod(); } class A { public void FooMethod() { Console.WriteLine("implementation"); } } class B : A, IFoo { } class Program { static void Main(string[] args) { IFoo foo = new B(); foo.FooMethod(); } } } 这样的代码编译。 但是请注意, A不是IFoo , B不实现IFoo方法。 在我的情况下,意外(重构后), […]
我明白,他们强迫你实施方法等,但我不明白的是为什么你会想要使用它们。 有谁能给我一个很好的例子或解释为什么我想要实现这一点。
几年来,我还是一位介绍编程模块的教学助理 – 一年级本科生的Java。 大多数情况下,它进行得很顺利,我们设法将面向对象的编程交给学生,但是学生们很less看到的一点是界面。 我们所做的任何解释都非常有意思,不适合学习,或者与初学者相距太远。 我们倾向于得到的反应是“我…看到”,翻译为“我不明白,他们听起来不是有用的”。 这里的任何人都有成功的方式来教学生的接口? 我不再是教学助理,但总是唠叨我。