C#调用接口的四种方式介绍

yizhihongxing

下面我将详细讲解“C#调用接口的四种方式介绍”。

1. 接口介绍

接口是一种特殊的类,它只包含成员函数的声明而没有实现,也不包含数据成员。通过接口可以定义一种协议,并按照这个协议来编写类。接口可以被多个类同时实现,并且可以通过接口的引用来调用这些实现。

2. 接口的定义

C# 中定义接口的语法格式如下:

interface 接口名称
{
    返回值类型 函数名(参数列表);
    返回值类型 属性名
    {
        get;
        set;
    }
    …
}

其中函数名和属性名只是一种定义,具体可以根据实际需求进行定义。此外,C# 中还有一个关键字 interface,用于声明接口、实现接口和调用接口。

3. 调用接口的方式

在实际编程中要使用接口,需要通过类来实现接口并调用接口中的成员。接口的实现方式有以下四种:

3.1 显式实现接口

显式实现接口是指类实现接口时,实现接口的成员只能通过接口类型的变量来访问,不能通过类的实例来访问。语法格式如下:

class 类名 : 接口1, 接口2
{
    void 接口1.方法名()
    {
        // 重写接口1中的方法
    }

    int 接口2.属性名
    {
        get { … }
        set { … }
    }
}

示例代码:

interface ITest1
{
    void Test();
}

interface ITest2
{
    int Score { get; set; }
}

class Test : ITest1, ITest2
{
    void ITest1.Test()
    {
        Console.WriteLine("Implementing ITest1.Test method");
    }

    private int score = 0;
    int ITest2.Score
    {
        get { return score; }
        set { score = value; }
    }
}

3.2 隐式实现接口

隐式实现接口是指类实现接口时,实现接口的成员可以通过类的实例或接口类型的变量来访问。语法格式如下:

class 类名 : 接口1, 接口2
{
    public void 方法名()
    {
        // 实现接口1中的方法
    }

    public int 属性名
    {
        get { … }
        set { … }
    }
}

示例代码:

interface ITest1
{
    void Test();
}

interface ITest2
{
    int Score { get; set; }
}

class Test : ITest1, ITest2
{
    public void Test()
    {
        Console.WriteLine("Implementing ITest1.Test method");
    }

    public int Score { get; set; }
}

3.3 根据接口变量调用接口实现的方法

通过接口类型的变量调用方法,可以使用 var 或者指定类型的变量。语法格式如下:

接口名称 变量名 = new 实现接口的类();
变量名.方法名();

示例代码:

interface ITest
{
    void Test();
}

class Test : ITest
{
    public void Test()
    {
        Console.WriteLine("Implementing ITest.Test method");
    }
}

ITest test = new Test();
test.Test();

3.4 实现多个接口的类之间调用

一个实现多个接口的类可以调用其它实现了这些接口的类的方法。语法格式如下:

class 类名 : 接口1, 接口2
{
    public void 方法名1()
    {
        …
    }

    public void 方法名2()
    {
        …
    }
}

class 其它类名 : 接口1, 接口2
{
    void 接口1.方法名1()
    {
        …
    }

    void 接口2.方法名2()
    {
        …
    }
}

类名 对象 = new 类名();
接口1 对象1 = (接口1)new 其它类名();
对象.方法名1();
对象1.方法名1();

示例代码:

interface ITest1
{
    void Test1();
}

interface ITest2
{
    void Test2();
}

class Test : ITest1, ITest2
{
    public void Test1()
    {
        Console.WriteLine("Implementing ITest1.Test1 method");
    }

    public void Test2()
    {
        Console.WriteLine("Implementing ITest2.Test2 method");
    }
}

class OtherTest : ITest1, ITest2
{
    public void Test1()
    {
        Console.WriteLine("Implementing ITest1.Test1 method in OtherTest");
    }

    public void Test2()
    {
        Console.WriteLine("Implementing ITest2.Test2 method in OtherTest");
    }
}

Test obj1 = new Test();
OtherTest obj2 = new OtherTest();

obj1.Test1();
obj1.Test2();
((ITest1)obj2).Test1();
((ITest2)obj2).Test2();

以上是关于 C# 调用接口的四种方式介绍的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#调用接口的四种方式介绍 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • C#如何创建自定义特性

    C#中可以使用自定义特性来保存、检索和共享元数据,以及运行时行为。在此,我将为您提供有关如何创建自定义特性的完整攻略。 首先,了解自定义特性这个概念,一个特性其实就是一种自定义元数据,可以为程序中的类型、方法、属性、事件或者其他程序中的信息添加额外的信息。用户定义的特性是使用“Attribute”类进行定义的,其主要使用场景是在源代码级别的编程。通过使用特性…

    C# 2023年6月6日
    00
  • .NET Core 中对象池 Object Pool的使用

    在 .NET Core 中,对象池(Object Pool)是一种重要的技术,可以提高应用程序的性能和可伸缩性。以下是 .NET Core 中对象池的使用的完整攻略: 步骤一:对象池的概念 对象池是一种重用对象的技术,可以减少对象的创建和销毁,从而提高应用程序的性能和可伸缩性。对象池通常用于创建和销毁成本较高的对象,例如数据库连接、线程、Socket 等。 …

    C# 2023年5月17日
    00
  • .NET Core 依赖注入

    在.NET Core中,依赖注入(Dependency Injection,简称DI)是框架的一个重要特性,可以帮助我们解耦代码、管理对象生命周期以及提高可测试性等.一下是.NET Core中依赖注入的一些基本概念和用法:   1、服务(Service):在DI中,服务即一个对象或者类型。用于完成特定的功能.例如,数据库访问、日志记录等都可以看作一个服务  …

    C# 2023年4月27日
    00
  • C#用户控件之温度计设计

    下面是关于”C#用户控件之温度计设计”的详细攻略: 步骤一:创建C#用户控件 在Visual Studio中创建一个类库项目,然后在项目中添加一个新的用户控件。给这个用户控件添加一个“温度计”名称属性,以便在使用控件时可以设置温度计的标签。 步骤二:定义属性 在用户控件类中定义“温度”属性。由于温度可以是一个实数,我们可以使用float或double类型来存…

    C# 2023年6月1日
    00
  • c#如何实现接口事件

    在C#中,接口事件是一种常见的编程模式,它可以帮助开发者实现松耦合的代码结构。在本攻略中,我们将介绍如何在C#中实现接口事件,并提供两个示例来说明其用法。 以下是两个示例,介绍如何在C#中实现接口事件: 示例一:使用委托实现接口事件 首先,我们需要定义一个接口,其中包含一个事件: public interface IMyInterface { event E…

    C# 2023年5月15日
    00
  • .NET Reflector8.5怎么激活?.NET Reflector安装激活使用详细图文教程

    以下是详细讲解 “.NET Reflector 8.5怎么激活?.NET Reflector安装激活使用详细图文教程” 的完整攻略。 安装.NET Reflector 8.5 首先,我们需要从官方网站下载最新版本的.NET Reflector 8.5并安装它。 获取激活码 然后,我们需要获取一个有效的激活码。你可以从官方网站购买一个许可证,也可以在互联网上寻…

    C# 2023年6月3日
    00
  • Ubuntu16.04系统配置.net core环境

    Ubuntu16.04系统配置.Net Core环境 在Ubuntu16.04系统中,可以通过以下步骤配置.Net Core环境。 1. 安装依赖 在Ubuntu16.04系统中,需要安装以下依赖才能安装.Net Core。可以按照以下步骤操作: 打开终端。 输入以下命令,安装依赖。 sudo apt-get update sudo apt-get inst…

    C# 2023年5月16日
    00
  • C# Directory.GetDirectories(string path):获取指定目录下的所有子目录路径

    Directory.GetDirectories(string path)方法是C#中用于获取指定路径下所有子目录的静态方法。 具体使用方法如下: 1.导入命名空间 在使用该方法之前,需要先导入System.IO命名空间,以便使用其中提供的Directory类。 using System.IO; 2.方法原型 public static string[] G…

    C# 2023年4月19日
    00
合作推广
合作推广
分享本页
返回顶部