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

jac*_*ack 3 c#

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

例如,如果我有一个接口作为IApple,其成员作为属性int iint j 我想为ij分配值并将整个接口作为参数发送如下所示

方法(IApple var);

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

Ric*_*end 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);
Run Code Online (Sandbox Code Playgroud)

  • @ jack:换句话说,您必须实现一个实现该接口的类(GrannySmith),创建该类的一个对象并将其交给方法:**DoDomething(new GrannySmith());** (2认同)

Kla*_*sen 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在你的程序中的某个地方你可以写:

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
Run Code Online (Sandbox Code Playgroud)

  • @mko 我添加了另一个苹果来澄清。如果我们让 `CalculateAppleness` 使用 `GrannySmith` 的实例而不是 `IApple`,我们将不再能够计算出粉红色女士苹果的苹果度。看到不同? (3认同)
  • 为什么不将CalculateAppleness 作为扩展方法:-) (2认同)