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# Linq的ToList()方法 – 将序列转换为列表

    C# Linq的ToList()方法详解 ToList()方法是C#中Linq查询的扩展方法之一,它将一个序列转换成一个List集合,实现方式是创建一个包含序列中所有元素的新实例。该方法的通用使用方式如下所示: public static List<TSource> ToList<TSource>(this IEnumerable&l…

    C# 2023年4月19日
    00
  • C#泛型集合类型实现添加和遍历

    下面是一份详细的攻略,分别讲解了C#泛型集合类型的添加和遍历。 添加元素到集合 List泛型列表 List 是 C# 中常见的泛型类型之一,其中的元素是可以重复的,可以方便的进行元素添加和删除操作。 //创建一个string类型的List泛型列表 List<string> list = new List<string>(); //使用…

    C# 2023年6月6日
    00
  • ASP.NET MVC生成静态页面的方法

    生成静态页面是网站优化中常用的手段之一,能够有效提高网站的访问速度和用户体验。在ASP.NET MVC中,我们可以使用以下两种方法来生成静态页面。 方法一:使用HtmlHelper的Action方法 步骤一:添加路由规则 首先,在RouteConfig.cs文件中,添加一个路由规则,用于匹配需要生成静态页面的 action。 routes.MapRoute(…

    C# 2023年5月31日
    00
  • ASP.NET Core依赖注入详解

    ASP.NET Core依赖注入详解 在本攻略中,我们将深入讲解ASP.NET Core依赖注入的概念、原理和用法,并提供两个示例说明。 什么是依赖注入? 依赖注入是一种设计模式,用于将对象之间的依赖关系从代码中解耦。在ASP.NET Core中,依赖注入是一种机制,用于将服务注册到容器中,并在需要时将它们注入到应用程序中的其他对象中。 依赖注入的原理 依赖…

    C# 2023年5月17日
    00
  • C#中DataTable 转实体实例详解

    下面是关于“C#中DataTable 转实体实例详解”的完整攻略: 1. 为什么需要将DataTable转为实体实例 在C#中,DataTable是一种非常常见的数据类型。在我们进行数据查询、统计和展示时,经常使用DataTable来存储数据。而在使用DataTable时,我们通常需要将DataTable中的数据转化为我们自定义的实体类型,利用实体的属性和方…

    C# 2023年5月31日
    00
  • c# 值类型实例构造器

    C#值类型实例构造器 在C#中,值类型是一种基本数据类型,如int、double、char、bool等等。与引用类型不同,值类型的实例被存储在堆栈中,而不是在堆中。C#值类型实例构造器是一种特殊的方法,在值类型实例被创建时,它会被自动调用。本文将详细讲解C#值类型实例构造器的用法和示例。 构造器的概念和特点 构造器是一种特殊的方法,它用于初始化一个类的实例。…

    C# 2023年5月15日
    00
  • Kubernetes(K8S)基础知识

    Kubernetes(K8S)基础知识 Kubernetes是一种开源的容器编排平台,可以简化部署、扩展和管理容器化应用程序。在Kubernetes中,可以创建一个包含多个容器的集群,通过Kubernetes控制器自动对其进行维护和扩展。 基本概念 节点(Node):Kubernetes集群中的物理或虚拟机器,可以运行容器。 Pod:Kubernetes中的…

    C# 2023年5月31日
    00
  • C# Record构造函数的行为更改详解

    C#Record构造函数的行为更改详解 简介 在 C# 9.0 中,引入了一个新的语言特性:Record 类型。Record 类型是一种不可变的、轻量级的对象类型,它能够快速和方便地创建、比较和复制对象。特别是,Record 类型支持自动生成“自定义等值比较”、“GetHashCode() 方法”、“ToString() 方法”和“复制构造函数”。这些功能不…

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