ToB企服应用市场:ToB评测及商务社交产业平台

标题: 关于C#接口的用法详细解答,附上案例说明! [打印本页]

作者: 写过一篇    时间: 2024-2-16 14:33
标题: 关于C#接口的用法详细解答,附上案例说明!
接口

C#中的接口是一种定义了一组方法、属性和事件的类型。它只包含成员的声明,而不包含任何实现。接口可以被类通过实现的方式使用,从而使类能够具有接口定义的行为。
接口在C#中被定义为使用interface关键字,接口的成员默认是公共的。类通过使用implements关键字实现接口,并提供接口中定义的所有成员的具体实现。
接口的优点

接口的缺点与局限性

综上所述,接口在C#中是一种强大且常用的工具,它提供了多态性、代码共享和解耦等优点。然而,接口也有一些限制和缺点需要考虑。在使用接口时,需要权衡其优缺点,并根据具体的情况进行选择。
接口的案例
  1. // 定义一个简单的接口<br>public interface ILogger<br>{<br>    void Log(string message);<br>}<br>​<br>// 实现接口的类<br>public class ConsoleLogger : ILogger<br>{<br>    public void Log(string message)<br>    {<br>        Console.WriteLine(message);<br>    }<br>}<br>​<br>// 使用接口的类<br>public class MyClass<br>{<br>    private readonly ILogger logger;<br>​<br>    public MyClass(ILogger logger)<br>    {<br>        this.logger = logger;<br>    }<br>​<br>    public void DoSomething()<br>    {<br>        // 使用接口中定义的方法<br>        logger.Log("Doing something...");<br>    }<br>}<br>​<br>// 使用<br>class Program<br>{<br>    static void Main(string[] args)<br>    {<br>        ILogger logger = new ConsoleLogger();<br>        MyClass obj = new MyClass(logger);<br>        obj.DoSomething();<br>    }<br>}
复制代码
 
接口案例2
  1. public interface IShape<br>{<br>    // 方法<br>    double CalculateArea();<br>​<br>    // 属性<br>    double Perimeter { get; }<br>​<br>    // 事件<br>    event EventHandler ShapeChanged;<br>}<br>​<br>public class Circle : IShape<br>{<br>    private double radius;<br>​<br>    // 实现接口中的方法<br>    public double CalculateArea()<br>    {<br>        return Math.PI * radius * radius;<br>    }<br>​<br>    // 实现接口中的属性<br>    public double Perimeter<br>    {<br>        get { return 2 * Math.PI * radius; }<br>    }<br>​<br>    // 实现接口中的事件<br>    public event EventHandler ShapeChanged;<br>​<br>    public double Radius<br>    {<br>        get { return radius; }<br>        set<br>        {<br>            radius = value;<br>            OnShapeChanged();<br>        }<br>    }<br>​<br>    protected virtual void OnShapeChanged()<br>    {<br>        ShapeChanged?.Invoke(this, EventArgs.Empty);<br>    }<br>}<br>​<br>public class Program<br>{<br>    static void Main(string[] args)<br>    {<br>        Circle circle = new Circle();<br>        circle.Radius = 5;<br>​<br>        Console.WriteLine("Area: " + circle.CalculateArea());<br>        Console.WriteLine("Perimeter: " + circle.Perimeter);<br>    }<br>}
复制代码
  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4