我定义了一个接口和类这样的类:
interface ITextBox
{
double Left { get; set; }
}
class TimeTextBox : ITextBox
{
public TimeTextBox(ITextBox d)
{
Left = d.Left;
}
public double Left { get; set; }
}
我想像这样创建这个类的实例:
ITextBox s;
s.Left = 12;
TimeTextBox T = new TimeTextBox(s);
但是发生了这个错误:
使用未分配的局部变量's'
答案 0 :(得分:5)
在尝试使用之前,您尚未实例化s
。
你需要做这样的事情:
ITextBox s = new SomeClassThatImplementsITextBox();
TimeTextBox t = new TimeTextBox(s);
界面只是一份合同。它只定义结构。您必须具有实现该接口的类的具体实现。
答案 1 :(得分:1)
引自:http://msdn.microsoft.com/en-us/library/87d83y5b(v=vs.110).aspx
“接口只包含方法,属性,事件或索引器的签名。实现接口的类或结构必须实现接口定义中指定的接口成员。”
您需要一个类或结构来实现您的接口,并且该类或结构需要实例化为一个对象,然后传递给您的构造函数。
实现:
class Example : ITextBox
{
public double Left { get; set; }
}
实例化:
Example s = new Example();
答案 2 :(得分:0)
ITextBox s;
只定义了对实现ITextBox的内容的引用。它没有定义实例。所以在第2行,当你在它上面设置一个属性时,该对象就不存在了。编译器会阻止您犯这个错误,这就是编译器错误的原因。
您需要ITextBox s = new MyClassThatImplementsITextBox();