草庐IT

functional-interface

全部标签

c# - 我们可以在 C#.NET 的接口(interface)中添加变量和属性吗?

我想知道如何在接口(interface)中添加变量(即使用哪个访问说明符)以及我们能否在C#.net中的接口(interface)中编写属性? 最佳答案 这应该很容易在互联网上找到。接口(interface)是通过实现类来实现的契约。因此它们可以包含公共(public)方法、属性和事件(索引器也是允许的)。接口(interface)中的变量-NO。你能详细说明为什么你需要它们吗?不过,您可以在基类中使用变量。接口(interface)中的属性-是的,因为它们是底层的成对方法。接口(interface)的成员是隐式公开的。您不能显式指

c# - 匿名类实现接口(interface)

这个问题在这里已经有了答案:Cananonymousclassimplementinterface?(9个回答)关闭9年前。我在方法中有以下代码:varlist=new[]{new{Name="Red",IsSelected=true},new{Name="Green",IsSelected=false},new{Name="Blue",IsSelected=false},};我想调用一个函数,该函数需要一个元素列表,每个元素实现一个接口(interface)(ISelectable)。我知道这是如何用普通类完成的,但在这种情况下,我只是想填写一些演示数据。是否可以创建实现接口(int

c# - 公约问题: When do you use a Getter/Setter function rather than using a Property

令我印象深刻的是,在尝试操作类中的字段时应该使用C#中的属性。但是当涉及到复杂的计算或数据库时,我们应该使用getter/setter。这是正确的吗?什么时候对属性使用s/getter? 最佳答案 .NET设计指南在Propertiesvs.Methods中提供了这个问题的一些答案。部分。基本上,属性与字段具有相同的语义。你不应该让一个属性抛出异常,属性不应该有副作用,顺序不重要,属性应该相对快速地返回。如果这些事情中的任何一个可能发生,最好使用一种方法。该准则还建议使用返回数组的方法。在决定是使用属性还是方法时,如果我将其视为字段

c# - 在 Lazy<T> 中转换接口(interface)类型

我想要这样的东西:publicinterfaceIAnimal{}publicclassDog:IAnimal{publicDog(){}}publicclassCat:IAnimal{publicCat(){}}publicabstractclassTestClassBase{publicTestClassBase(){_lazyAnimal=CreateLazyAnimal();}privateLazy_lazyAnimal=null;publicIAnimalAnimal{get{IAnimalanimal=null;if(_lazyAnimal!=null)animal=_la

C# 如何使用接口(interface)

这是一个相对直接的问题。但我想知道通过使用接口(interface)访问单独项目中的方法的正确用法是什么。项目:Test.ClassLibrary接口(interface):publicinterfaceITest{stringTestMethod();}类:publicclassTest:ITest{publicstringTestMethod(){return"Test";}}项目:Test.WebController:publicclassHomeController:Controller{privateITesttest;publicActionResultIndex(){re

c# - 我应该将我的接口(interface)定义放在与其实现相同的 namespace 中吗

如果我定义了一个接口(interface)ITestInterface,然后立即创建一个实现该接口(interface)的类以供在应用程序中使用,是可以将类和接口(interface)保留在同一个命名空间中,还是应该将它们分开。即Test.Interfaces和Test.Interfaces.Implementation。我的界面及其实现都将在其自己的程序集中,因此我不打算创建另一个界面来包含界面本身。这与c#特别相关,但我想它可以涵盖任何语言。 最佳答案 最好使用.NET预定义类的既定约定。例如,查看System.Collecti

c# - 转换为未明确实现的接口(interface)?

假设您定义了一些任意接口(interface):publicinterfaceIInterface{voidSomeMethod();}假设有些类碰巧有一个匹配的公共(public)接口(interface),即使它们没有“实现IInterface”。即:publicclassSomeClass{publicvoidSomeMethod(){//somecode}}有没有办法让IInterface引用一个SomeClass实例?即:SomeClassmyInstance=newSomeClass();IInterfacemyInterfaceReference=(IInterface)

c# - 如何避免重复的接口(interface)代码?

由于接口(interface)不能包含实现,在我看来这会导致从接口(interface)继承的类中出现代码重复。在下面的示例中,假设设置从Stream读取的前10行左右是重复的。尽量不要关注这里的措辞,而是关注在每个类之间创建重复代码是多么容易的概念。例如:publicinterfaceIDatabaseProcessor{voidProcessData(Streamstream);}publicclassSqlServerProcessor:IDatabaseProcessor{voidProcessData(Streamstream){//settinguplogictoreadt

c# - 使用抽象方法显式实现接口(interface)

这是我的界面:publicinterfaceMyInterface{boolFoo();}这是我的抽象类:publicabstractclassMyAbstractClass:MyInterface{abstractboolMyInterface.Foo();}这是编译器错误:“修饰符‘抽象’对于此项无效。我应该如何继续使用抽象方法显式实现抽象? 最佳答案 基本上,你不能。反正不是直接的。您不能覆盖显式实现接口(interface)的方法,并且您必须覆盖抽象方法。最接近的是:boolMyInterface.Foo(){returnF

c# - 如何从 C# 中的 "pure function"获得优化?

如果我有以下函数,它被认为是纯粹的,因为它没有副作用,并且在给定相同输入x的情况下总是会产生相同的结果。publicstaticintAddOne(intx){returnx+1;}据我了解,如果运行时了解功能纯度,它可以优化执行,这样就不必重新计算返回值。有没有办法在C#中实现这种运行时优化?我假设这种优化有一个名称。它叫什么?编辑:显然,我的示例函数不会从这种优化中获得太多好处。该示例是为了表达我心目中的纯度类型,而不是真实世界的示例。 最佳答案 正如其他人指出的那样,如果您想节省重新计算您已经计算过的结果的成本,那么您可以内存