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日

相关文章

  • 详解Kotlin中如何实现类似Java或C#中的静态方法

    要在Kotlin中实现类似Java或C#中的静态方法,我们可以使用Kotlin中的伴生对象(Companion Object)或者顶层函数(Top-level Function)来实现。 使用伴生对象 伴生对象是直接在类中定义的一个对象,它可以访问类中的所有成员,类似于Java中的静态成员。我们可以在伴生对象中定义静态方法。 class MathUtils …

    C# 2023年6月6日
    00
  • ASP.NET MVC通过勾选checkbox更改select的内容

    以下是“ASP.NET MVC通过勾选checkbox更改select的内容”的完整攻略: 什么是ASP.NET MVC通过勾选checkbox更改select内容 ASP.NET MVC通过勾选更改的内容是一种机制,允许开发人员在MVC视图页中使用jQuery根据勾的checkbox更改select的内容。这种制可以帮助开发人员更轻松地处理用户交互,并提高…

    C# 2023年5月12日
    00
  • C#使用HttpWebRequest重定向方法详解

    下面是“C#使用HttpWebRequest重定向方法详解”的完整攻略。 什么是HttpWebRequest重定向? 在HTTP协议里,重定向(Redirect)指可将用户浏览器重定向到另一个URL。 在应用程序中,我们通常使用HttpWebRequest类来获取Web资源。当我们发起HTTP请求时,有可能会遇到Web服务器返回的HTTP响应状态码为302的…

    C# 2023年5月31日
    00
  • C# Split函数根据特定分隔符分割字符串的操作

    C#中的Split函数可以帮助我们快速地根据指定的分隔符将字符串分成若干段。下面是这个操作的完整攻略: 1. 确定要分割的字符串 首先,需要确定要分割的字符串的内容。可以直接从用户的输入中获取,也可以在程序中事先写好。 例如,我们有一个字符串需要分割: string str = "hello,world"; 2. 定义分隔符 接下来,需要…

    C# 2023年6月6日
    00
  • C#笔记之EF Code First 数据模型 数据迁移

    C#笔记之EF Code First 数据模型 数据迁移 在使用.NET Core进行开发时,EF Code First被广泛用作ORM框架,在应用程序开发的不同阶段,会涉及到数据模型的改变,而EF Code First提供了一些工具来管理数据迁移,下面将介绍如何进行EF Code First数据模型的创建、数据迁移的方法和注意点。 创建数据模型 新建项目 …

    C# 2023年6月1日
    00
  • C#命名空间System.ComponentModel属性方法汇总

    C#命名空间System.ComponentModel属性方法汇总 System.ComponentModel 命名空间提供了一些实用的属性、方法和接口,可以用来处理类、组件和控件的设计时特性,以及提供类和组件在 Visual Studio 设计器中的支持。下面是一些常用的属性和方法: 属性 AmbientValueAttribute AmbientValu…

    C# 2023年5月15日
    00
  • 在C#中使用MSMQ的方法

    在C#中使用MSMQ是一种消息传递机制,用于在应用程序之间传递消息。MSMQ提供了可靠的消息传递,即使在网络故障或应用程序崩溃的情况下也能保证消息的传递。本文将提供详细的“在C#中使用MSMQ的方法”的完整攻略,包括什么是MSMQ、如何使用MSMQ以及两个示例。 什么是MSMQ? MSMQ是Microsoft Message Queuing的缩写,是一种消息…

    C# 2023年5月15日
    00
  • MongoDB对Document(文档)的插入、删除及更新

    下面是MongoDB对Document的插入、删除及更新的完整攻略。 插入Document MongoDB插入Document的语法为: db.collection.insert(document) 其中,db.collection是指要插入Document的collection名称,document是一条Document。 在插入Document时,如果该…

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