如何将接口作为参数传递给方法?

时间:2011-01-20 14:31:48

标签: c#

我是C#的新手。您能告诉我如何将接口作为参数传递给方法吗? 即我想访问接口成员(属性)并为其分配值并将该接口作为参数发送到另一个方法。

例如,如果我的界面为 IApple ,其成员为 int i int j 我想将值分配给 i j ,并将整个界面作为参数发送,如下所示

方法(IApple var);

有可能吗?对不起,如果基础知识差,请帮助我。提前谢谢

2 个答案:

答案 0 :(得分:31)

确定这是可能的

public interface IApple
{
    int I {get;set;}
    int J {get;set;}
}

public class GrannySmith :IApple
{
     public int I {get;set;}
     public int J {get;set;}

}

//then a method

public void DoSomething(IApple apple)
{
    int i = apple.I;
    //etc...
}

//and an example usage
IApple apple = new GrannySmith();
DoSomething(apple);

答案 1 :(得分:7)

假设您有以下课程:

public interface IApple{
    int I {get; set;}
    int J {get; set;}
}

public class GrannySmith : IApple{

    public GrannySmith()
    {
        this.I = 10;
        this.J = 6;
    }
    int I {get; set;}
    int J {get; set;}
}

public class PinkLady : IApple{

    public PinkLady()
    {
        this.I = 42;
        this.J = 1;
    }
    int I {get; set;}
    int J {get; set;}
}

public class FruitUtils{
    public int CalculateAppleness(IApple apple)
    {
         return apple.J * apple.I;
    }
}

现在您可以在程序的某个地方写下:

var apple = new GrannySmith();
var result = new FruitUtils().CalculateAppleness(apple);
var apple2 = new PinkLady();
var result2 = new FruitUtils().CalculateAppleness(apple2);

Console.WriteLine(result); //Produces 60
Console.WriteLine(result2); //Produces 42