Tag: 实现

c#接口实现 – 为什么这不构建?

很抱歉,如果之前有人询问过,但谷歌几乎不可能。 我认为int数组实现IEnumerable,因此Thing应该能够实现IThing。 怎么没有? public interface IThing { IEnumerable Collection { get; } } public class Thing : IThing { public int[] Collection { get; set; } } 注意 public class Thing : IThing { public int[] Array { get; set; } public IEnumerable Collection { get { return this.Array; } } } 很好。

从其他接口inheritance的接口的显式C#接口实现

考虑以下三个接口: interface IBaseInterface { event EventHandler SomeEvent; } interface IInterface1 : IBaseInterface { … } interface IInterface2 : IBaseInterface { … } 现在考虑以下实现IInterface1和IInterface 2的类: class Foo : IInterface1, IInterface2 { event EventHandler IInterface1.SomeEvent { add { … } remove { … } } event EventHandler IInterface2.SomeEvent { add { … } remove { … } […]

实现除抽象基类之外的常见行为?

在C#中,我有一个类层次结构,顶部附近有几个抽象基类,并且有相当多的派生类。 这些具体类中的一些具有一些相同实现的共同属性和方法。 它让我感到浪费,因此一个解决方案可能是在另一个抽象基类中实现这种常见行为。 abstract class Control; abstract class SquareControl: Control { public int SquarishProperty; public void SquarishMethod(); }; class Window: SquareControl; class Button: SquareControl; 但是,如果层次结构中的其他几个类共享某些其他行为,但是与另一个基类中的一个控件共享某些内容,该怎么办? 也许有很多共同点。 使用抽象基类实现对它进行建模是不切实际的吗? abstract class FlashableControl: Control { public int FlashyProperty; public void FlashMethod(); }; class StatusBar: FlashableControl; // but it’s also a bit square too, hmm… 那么如何在不使用基类的情况下跨类共享这样的实现呢? 我想我想将接口的实现委托给另一个类,并让该类代表所需的类实现这些属性和方法,这样对于用户来说,StatusBar和Window似乎支持标准接口,但是在涵盖它是实现它的其他东西。 我可以想象实现这种行为的聚合类,但这是否恰当,是否有任何陷阱? 有哪些替代方案? […]

遗传规划实施

我熟悉遗传编程的一般性,但我想知道在哪里可以找到一些东西,向我展示实施遗传编程的细节。 我使用C#和.NET 3.5,我想将遗传编程用于寻路之类的东西,通常只想看看它能做些什么。 编辑:我应该澄清我正在寻找的东西:我感兴趣的是用什么类型的数据结构来存储语法树,如何进行繁殖操作,这类事情。

信号量实施

我想知道是否有办法在C ++(或C#)中实现信号量,任何有帮助的库。 我尝试使用OpenMP,但我无法实际阻止线程,而是我不得不忙着等待,如果/当我没有足够数量的线程时会导致死锁。 首先,我正在寻找一个可以让我阻止/生成/杀死我的线程的库。 其次,有没有已经实现信号量的库? 最后,当我被介绍到信号量的上下文时,我发现它非常有用(也许我错了?)但我没有看到很多库(如果有的话)实现它。 我熟悉OpenMP,环顾英特尔的TBB,C#线程。 但是在这些中我都没有明确地看到信号量。 那些信号量不像我想的那么实用吗? 还是他们难以实施? 还是我没有意识到? PS 信号量可以跨平台实现吗? 因为它们可能与操作系统有关。

在.NET中,委托的内部实现是什么?

我理解委托人的声明是这样的: public delegate int PerformCalculation(int x, int y); 但是,必须有更多的事情发生。 委托的目的是提供指向方法的指针,为此,您将对方法的引用封装在委托中。 这个参考是什么类型的结构(代表内部)? 我也明白你可以在委托中封装对多个方法的引用。 这是否意味着委托中有一个包含这些数组的数组? 此外,委托中定义了哪些方法等。当您使用简洁声明委托时,实际发生了什么: public delegate int PerformCalculation(int x, int y); ? 编辑:一些澄清。 声明委托时,编译器会自动创建一个从System.MulticastDelegateinheritance的密封类。 如果你用ildasm查看你的程序集,你可以看到这个。 这很整洁。 基本上,使用一个语句,您将在编译时获得为您生成的全新类,并且它具有您需要的所有function。