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

下面我将详细讲解“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#/.NET使用git命令行来操作git仓库的方法示例

    下面是关于C#/.NET使用git命令行来操作git仓库的方法示例的详细攻略: 一、安装Git 首先需要确定你的电脑上是否已经安装了Git。如果没有安装,可以到Git官网下载安装程序并进行安装。安装完成后,打开命令行工具(CMD或者PowerShell),输入git,能够显示git相关的命令说明则表示安装成功。 二、创建本地仓库 使用以下命令可以将当前目录转…

    C# 2023年5月31日
    00
  • C#面向对象设计原则之组合/聚合复用原则

    C#面向对象设计原则之组合/聚合复用原则,也称为“C#复合复用原则”,指在一个类中,通过组合或聚合其他类来实现代码的复用和拓展。使用该设计原则可以提高代码的维护性、重用性和可读性。 具体实现该原则的步骤如下: 步骤一:定义一个包含其他类的类(即被组合/聚合的类) 在定义一个类时,可以包含其他的类对象。这些类对象可以通过组合或聚合方式嵌入进来。组合和聚合的主要…

    C# 2023年6月1日
    00
  • C# #define条件编译详解

    C# #define条件编译详解 什么是条件编译 在编写程序时,我们经常会遇到需要根据不同条件编译不同代码的情况,这就是条件编译(Conditional Compilation)。 C#提供了一种条件编译指令,叫做#define,它可以在编译程序时根据指定的条件判断是否编译某段代码。使用#define指令可以在程序中定义符号,在编译程序时可以根据这些符号来判…

    C# 2023年6月1日
    00
  • C#中通过使用Connection类来实现打开/关闭数据库的代码实例

    我们来讲解一下C#中打开关闭数据库的代码实例。 首先,C#中打开关闭数据库需要使用到System.Data.SqlClient命名空间中的一些类,包括SqlConnection、SqlCommand、SqlDataAdapter、SqlDataReader等,而打开/关闭数据库的核心是SqlConnection类。 打开数据库 要打开数据库,我们需要创建一个…

    C# 2023年5月15日
    00
  • 浅谈如何在ASP.NET Core中实现一个基础的身份认证

    在ASP.NET Core中实现基础身份认证 ASP.NET Core提供了一种灵活的身份认证机制,可以轻松地实现基础的身份认证。本攻略将详细介绍如何在ASP.NET Core中实现基础身份认证。 什么是基础身份认证? 基础身份认证是一种简单的身份认证机制,它使用HTTP协议的基本认证机制来验证用户的身份。在基础身份认证中,用户需要提供用户名和密码,然后服务…

    C# 2023年5月16日
    00
  • C# File.Move – 移动文件

    C#中的File.Move方法可以将文件或文件夹从一个位置移动到另一个位置。同时,它还可以更改文件或文件夹的名称。以下是File.Move方法的完整攻略。 方法声明 public static void Move(string sourceFileName, string destFileName); 或 public static void Move(st…

    C# 2023年4月19日
    00
  • C#实现加密与解密详解

    C#实现加密与解密详解 在C#开发中,我们常常需要对某些敏感数据进行加密处理,以保证数据的安全性。本文将详细讲解C#实现加密与解密的方法,包括对称加密、非对称加密和哈希算法的讲解,并提供示例代码演示。 对称加密 对称加密是指使用相同的密钥进行加密和解密的加密方式。常见的对称加密算法有DES、AES等。下面是使用AES加密的示例代码: using System…

    C# 2023年6月1日
    00
  • ASP.NET Core中实现全局异常拦截的完整步骤

    ASP.NET Core中实现全局异常拦截攻略 在本攻略中,我们将深入讲解如何在ASP.NET Core中实现全局异常拦截,并提供两个示例说明。 什么是全局异常拦截? 全局异常拦截是指在ASP.NET Core应用程序中,捕获应用程序中的所有异常,并提供自定义处理程序来处理这些异常。这样可以提高应用程序的可靠性和稳定性。 如何实现全局异常拦截? 以下是在AS…

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