2012-12-12 29 views
0

界面如何知道调用哪个类方法? 它是正确的代码?或不是使用界面是否正确?

namespace IntExample 
{ 
    interface Iinterface 
    { 
     void add(); 
     void sub(); 
    } 
    public partial class Form1 : Form,Iinterface 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 


     public void add() 
     { 

      int a, b, c; 
      a = Convert.ToInt32(txtnum1.Text); 
      b = Convert.ToInt32(txtnum2.Text); 
      c = a + b; 
      txtresult.Text = c.ToString(); 



     } 
     public void sub() 
     { 

      int a, b, c; 
      a = Convert.ToInt32(txtnum1.Text); 
      b = Convert.ToInt32(txtnum2.Text); 
      c = a - b; 
      txtresult.Text = c.ToString(); 

     } 


     private void btnadd_Click(object sender, EventArgs e) 
     { 
      add(); 
     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      sub(); 
     } 



     class cl2 : Form1,Iinterface 
     { 

      public void add() 
      { 

       int a, b, c; 
       a = Convert.ToInt32(txtnum1.Text); 
       b = Convert.ToInt32(txtnum2.Text); 
       c = a + b; 
       txtresult.Text = c.ToString(); 



      } 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 

     } 

回答

0

接口不知道调用哪个类方法。它只是定义什么方法可用。

您发布的代码不会编译,因为cl2不实现sub方法,但无论如何它几乎没有意义。

我不知道你在做什么,我会举例说明接口的有效使用。

您可以通过几种形式实现该接口,然后在主窗体中,您可以根据索引或名称选择要显示哪些表单。

因此,存储所有的表格,你可以使用通用的清单:

List<Iinterface> forms = new List<Iinterface>(); 

添加到列表中的所有实现接口的形式:

forms.Add(new Form1()); 
forms.Add(new Form2()); 
forms.Add(new Form3()); 
//... 

然后你就可以显示特定的形式和呼叫从接口的方法:

//find by index: 
forms[index].Show(); 
forms[index].add(); 

//find by name: 
string name="form 2"; 
Iinterface form = forms.Find(f => f.Name == name); 
if (form != null) 
{ 
    form.Show(); 
    form.add(); 
} 
+0

thaks for answer?你能告诉我如何创建日志文件在c# – sekhar

+0

这与这个问题完全无关,请问一个新问题。 –