可能的接口用作变量? C#

时间:2015-08-09 11:02:50

标签: c# interface

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

 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

但最后一行有错误

  

参数类型MathTools.Ivaluable []不能分配给参数   输入MathTool.Ivaluable。

我的最后一个问题是,如果Ivaluable是一组数据类型,那么最后一行的问题就在于此。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您无法创建界面对象。

您应该创建一个实现接口的对象。 然后执行此操作(假设您的类是 valueableObject ,并且此类实现您的接口):

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