Tag: 接口的

C#内部接口与内部实现

我碰到了一些我不太了解的东西。 我有一个项目,我有一个内部的接口。 实现该接口的类也是内部的。 在接口的实现中,我把所有实现的成员都放在内部。 我没有做一个明确的实施。 我有两个接口和两个类来实现这些工作正常的接口。 它看起来像这样: internal interface IA { void X(); } 接着 internal class CA : IA { internal void X() { … } } 这对于上述两个类来说工作得很好。 但是当我试图用另一个接口和类来做到这一点时,这是行不通的。 事实上,对于上面的例子,我得到的错误: “WindowsFormsApplication1.CA”不实现接口成员“WindowsFormsApplication1.IA.X()”。 'WindowsFormsApplication1.CA.X()'不能实现一个接口成员,因为它不公开。 我意识到我可以公开的方法或做一个明确的实现(并省略内部和公共修饰符),但我只是困惑,为什么它与两个类的工作,但我似乎无法复制它在任何地方。 对代码进行一些处理(因为它是保密的),这是我的项目中真正起作用的代码之一。 internal interface IScanner { void SetHardware(Hardware hardware); void Start(); void PauseScan(); void ResumeScan(); void Stop(); bool InScan { get; } […]

抽象类和接口有什么区别?

假设在一个接口中有两个方法M1()和M2() 。 一个抽象类也有两个相同的抽象方法。 如果任何类实现了这个接口或从抽象类inheritance,它将不得不实现其中的两个方法。 所以对我来说,接口或抽象类对于我的场景来说似乎是相同的。 那么,有没有人可以在这个特定的情况下突出这两者之间的差异,并build议在这里使用抽象类还是接口?

C#扩展方法作为接口实现

我想知道是否某个类的C#扩展方法可以作为接口的实现吗? 我有什么: 一个iterface: public interface IEventHandler { void Notify(SEvent ev, IEventEmmiter source); } 一个实现它的类: class Sim : IEventHandler { /*public void Notify(SEvent ev, IEventEmmiter source) { Console.WriteLine("Got notified: " + ev.Name); }*/ } 而一个包含扩展方法的类: public static class ReflectiveEventDispatcher { public static void Notify(this IEventHandler handler, SEvent ev) { if (handler.GetType().GetMethod("Handle" + ev.Name) != null) { […]

为什么我们要从Interface而不是Class创build对象实例?

我已经多次看到一个从类生成的接口实例。为什么在这个方面使用接口呢?一个接口实例只在派生类的帮助下创build自己,我们只能通过这个实例访问这个接口成员。给我一个好处?我很困惑.. interface IPrint { void Print(); } class Sample : IPrint { public void Print() { Console.WriteLine("Print…"); } public void Sample() { Console.WriteLine("Sample…"); } } class Program { static void Main(string[] args) { IPrint print = new Sample(); print.Print(); } }

inheritance一个通用的基类,应用一个约束,并在C#中实现一个接口

这是一个语法问题。 我有一个通用的类inheritance自一个通用的基类,并正在对其中一个types参数应用约束。 我也希望派生类实现一个接口。 对于我的生活,我似乎无法弄清楚正确的语法。 这是我的: DerivedFoo<T1,T2> : ParentFoo<T1, T2> where T2 : IBar { … } 首先想到的是这样的: DerivedFoo<T1,T2> : ParentFoo<T1, T2> where T2 : IBar, IFoo { … } 但这是不正确的,因为这导致T2需要实现IBar和IFoo,而不是DerivedFoo来实现IFoo。 我尝试了一些谷歌search,使用冒号,分号等,但我已经缩短了。 我相信答案是头脑简单。

我何时必须使用接口而不是抽象类?

我想知道什么时候应该使用接口。 让我们思考以下几点: public abstract class Vehicle { abstract float getSpeed(); } 和: public interface IVehicle { float getSpeed(); } 我可以很容易地实现他们两个,他们有相同的function…但我也可以添加一些variables,我的车辆类,这可能应该用在车辆(maxSpeed,carType …) 什么是使用接口的原因? 谢谢! 编辑:我发现了另一个线程中的一个不错的链接: http : //www.thecoldsun.com/en/content/01-2009/abstract-classes-and-interfaces

我如何使用接口作为C#genericstypes约束?

有没有办法得到下面的函数声明? public bool Foo<T>() where T : interface; 即。 其中T是一个接口types(类似于where T : class和struct )。 目前我已经解决了: public bool Foo<T>() where T : IBase; 在哪里IBase被定义为一个空的接口,被所有我的自定义接口inheritance…不理想,但它应该工作…为什么你不能定义一个genericstypes必须是一个接口? 对于什么是值得的,我想这是因为Foo正在做reflection,它需要一个接口types…我可以作为一个普通的parameter passing它,并在函数本身进行必要的检查,但这似乎更types安全(和我想有一点更高性能,因为所有的检查都是在编译时完成的)。

为什么实现接口的抽象类可能会错过接口方法之一的声明/实现?

在使用抽象类来实现一个接口时,Java中会出现一个奇怪的事情:一些接口的方法可能完全丢失(即,既没有抽象声明也没有实际的实现),但是编译器不会抱怨。 例如,给定接口: public interface IAnything { void m1(); void m2(); void m3(); } 下面的抽象类快速编译没有警告或错误: public abstract class AbstractThing implements IAnything { public void m1() {} public void m3() {} } 你能解释一下为什么?

Java的使用

最近我决定去看看Java,所以我还是很新的,也是面向对象编程的方法,所以我想在学习更多东西之前先弄清楚一些事情(我想这是不会很快开始的好的做法)。 我现在编程一个小2D游戏,但我认为我的问题适用于任何非平凡的项目。 为了简单,我会提供我的游戏的例子。 我有不同种类的僵尸,但他们都具有相同的属性(x,y,健康,攻击等),所以我写了一个界面僵尸,由WalkingZombie,RunningZombie TeleportingZombie等执行。这是最好的事情吗? 我更喜欢抽象类吗? 或者与一个超级class ? (我不打算部分实现函数 – 因此我select了一个接口而不是抽象类 ) 我有一个类描述主angular(幸存者),因为它是相当大的我想写一个接口与不同的function,以便我可以很容易地看到和分享它的结构。 这是好的做法吗? 还是只是浪费空间和时间? 我希望这个问题不会被认为是主观的,因为我认为有经验的程序员不会对这种话题持不同意见,因为接口/超类/抽象类的使用遵循逻辑规则,因此不是简单的个人select。

内部类在接口

是可以在界面内创build一个内部类? 如果是的话,我们为什么要这样创造? 反正我们不打算创build任何接口对象? 他们在开发过程中有帮助吗?