我有一段代码,它涉及接口,接口可以用作变量。我不明白这一部分。有谁知道为什么?
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是一组数据类型,那么最后一行的问题就在于此。
答案 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);