可能的接口使用变量?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是一组数据类型,最后一行的问题在哪里。
不能创建接口的对象。
你应该创建一个对象来实现你的接口。然后这样做(假设你的类是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