可能的接口使用变量?c#

本文关键字:变量 接口 | 更新日期: 2023-09-27 18:07:07

我有一段代码,它涉及接口,接口可以用作变量。我不明白这部分。有人知道为什么吗?

 NameSpace MathTools
{
  Public delegate float FloatfromIntFloatFloatFloatBool(int i1,float f1,float f2,float f3, bool b1)
  Public Interface Ivaluable
  {
     float this [Icomparable key]{get;set;}
     int Count {get;}
     //Dico/Scalar results operators
     Ivaluable Plus(Ivaluable rightop); //Here is my question,Interface can use as variables?
  }
}

我猜接口(Ivaluable)作为一组数据类型,如Int,Float

然后我测试了我的想法,我可以声明一个变量类型为Ivaluable

IDictionary<String,Ivaluable> Sub=New Dictionary<String, Ivaluable>;//Ok
Ivaluable[] Sub1=new Ivaluable[]; //Ok
Sub.Add("whatever",Sub1); //Problem

但是最后一行

有错误

参数类型Ivaluable[]不能赋值给参数类型MathTool.Ivaluable。

我的最后一个问题是,如果Ivaluable是一组数据类型,最后一行的问题在哪里。

可能的接口使用变量?c#

不能创建接口的对象。

你应该创建一个对象来实现你的接口。然后这样做(假设你的类是valueableObject,这个类实现了你的接口):

IDictionary<String,Ivaluable[]> Sub=New Dictionary<String, Ivaluable[]>;
Ivaluable[] Sub1=new valueableObject[2]; // 2 is just an example
Sub.Add("whatever",Sub1); 

接口可以看作是一个契约。当您创建一个类时,您可以选择说它实现了某个接口。当你这样做时,你基本上是在告诉你的类将实现接口中列出的所有属性和方法。

在您的情况下,可能在某处有一个类将实现该接口。网上有很多好的文章会详细解释这一点。下面这篇文章是一个很好的开始:http://www.codeproject.com/Articles/18743/Interfaces-in-C-For-Beginners