如何在C#中使用接口引用?

如何在c#中使用接口引用?

C# 是一种面向对象的编程语言,提供称为接口的独特功能。它们使您能够声明类必须实现的属性和方法的集合,而无需提及应如何实现它们的具体细节。

能够编写独立于类的实现细节的代码是接口的主要好处之一。任何实现该接口的类的每个对象都可以使用接口引用来引用。

因此,在不同的类实现之间切换更加简单,而无需修改使用该类的代码。

在 C# 中定义接口的语法

在C#中,可以使用interface关键字和接口名称来定义接口。正如下面的示例所示,接口定义可能包括方法、属性、事件和索引器 –

interface   {   // declare Events      // declare properties      // declare indexers      // declare methods }

冒号运算符 – 实现接口的语法包括冒号 (:) 运算符,后跟要实现的接口的名称。

属性-属性是接口中的值

方法– 方法是接口中的函数

示例

在此示例中,我们将使用方法 CalArea() 定义接口 Shape。计算形状的面积。为此,我们将定义一个类 Circle,它实现 Shape 接口,并为该接口使用的 CalArea() 方法提供实现。

算法

步骤 1 – 在第一步中定义具有所需方法和属性的接口。您可以在定义接口时包含属性、方法、事件和索引器。

第 2 步 – 接下来创建一个实现该接口的类。

第 3 步 – 创建接口类型的引用变量。

第 4 步 – 实例化类并将对象分配给引用变量。

第 5 步 – 最后使用接口引用来调用接口中定义的方法和属性。

using System;interface Shape {   double CalArea();}class Circle : Shape {   private double radius;   public Circle(double r) {      radius = r;   }   public double GetArea() {      return 3.14 * radius * radius;   }}class Program {   static void Main(string[] args) {      Shape shapeRefr;      Circle Obj = new Circle(5);      shapeRefr = Obj;      Console.WriteLine("Area of the circle is " + shapeRefr.CalArea());   }}

输出

Area of the circle is 78.5

示例

在此示例中,我们将计算学生 4 门科目的分数以及占总分的百分比。在此示例中,我们将使用 2 个方法初始化一个接口。

算法

第 1 步 – 在第一步中定义一个包含所需 2 种方法的接口:一种方法用于计算分数,另一种方法用于计算百分比。

第 2 步 – 接下来创建一个实现该接口的类。

第 3 步 – 创建接口类型的引用变量。

第 4 步 – 实例化类并将对象分配给引用变量。

第 5 步 – 最后使用接口引用来调用接口中定义的方法和属性。

using System;interface Olevel   //create interface {   double marks();   double percentage();}class Result : Olevel  //create class {   private double Math;   private double Science;   private double English;   private double Computer;   public Result(double math, double science, double english, double computer) {      this.Math = math;      this.Science = science;      this.English = english;      this.Computer = computer;   }   //create methods   public double marks() {      double mrks;      mrks= Math+Science+English+Computer;      return mrks;   }   public double percentage() {      double x= Math+Science+English+Computer;      return (x/400) * 100;   }}class Program {   static void Main(string[] args) {      Result result = new Result(90, 95, 93, 98);      // Create an interface reference variable and assign the instance of result class to it      Olevel olev = result;      Console.WriteLine("The Total marks of the student out of 400 are: " + result.marks());      Console.WriteLine("The percentage of the student is: " + result.percentage());   }}

输出

The Total marks of the student out of 400 are: 376The percentage of the student is: 94

结论

最后,C# 中的接口引用为您的代码提供了强大的机制。您可以使用支持该接口的任何对象创建代码,无论其特定类如何。

以上就是如何在C#中使用接口引用?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1435411.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 11:06:08
下一篇 2025年12月9日 14:41:02

相关推荐

  • 在 C# 中打印 n 的前 m 倍数

    要打印 n 的 m 倍数,首先设置 m 和 n 的值 – int n = 6, m = 1; 现在循环遍历 m 的值,递增它并在每次迭代时乘以 n – while (m <= 5) { // multiply n*m m++;} 让我们看完整的代码 − 示例 现场演示 …

    好文分享 2025年12月17日
    000
  • 在 C# 中从集合开头的指定索引创建索引

    在 C# 中,操作集合是一项频繁的操作,索引是此过程的关键部分。传统上,C# 中的索引从集合的开头开始,这是非常直观和直接的。本文将指导您完成在 C# 中从集合开头的指定位置创建索引的过程。 了解 C# 中的索引 在 C# 中,您可以使用索引访问数组或集合中的元素。索引过程从集合的开头开始,第一个元…

    2025年12月17日
    000
  • 在 C# 中迭代​​字典的最佳方法是什么?

    在 Dictionary 集合中,存储任何数据类型。字典是 C# 中键和值的集合。 Dictionary 包含在 System.Collection.Generics 命名空间中。 现在让我们看看在 C# 中迭代​​字典的最佳方法 – 首先,让我们创建字典 – var d =…

    2025年12月17日
    000
  • C# ASP.NET WebAPI 中的参数绑定是什么?

    绑定是Web API调用控制器时设置参数值的过程操作方法。 具有不同类型参数的 Web API 方法以及如何自定义绑定过程。 如果参数是 int、bool、double 等简单类型,Web API 会尝试从 URI 获取值(从路由数据或从查询字符串) 如果参数是复杂类型,如 Customer、Emp…

    2025年12月17日
    000
  • C# 程序在给定目录中搜​​索子目录

    在给定目录中搜​​索子目录是许多应用程序中的常见任务。在C#中,我们可以使用System.IO命名空间提供的Directory和DirectoryInfo类来执行此任务。在本文中,我们将探讨如何编写 C# 程序来搜索给定目录中的子目录。 方法:使用DirectoryInfo.GetDirectori…

    2025年12月17日
    000
  • C# 中的 System.Console 类及其方法是什么?

    C# 中的 System.Console 类代表控制台应用程序的标准输入、输出和错误流。 以下是 System.Console 类的一些方法 – 参考:MSDN系统类方法 Sr.No 方法及说明 1Beep() 播放蜂鸣声通过控制台扬声器。 2Beep(Int32,Int32) 通过控制…

    2025年12月17日
    000
  • C# 中的 break 和 continue 语句有什么区别?

    break 语句终止循环,并将执行转移到紧随循环后面的语句。 Continue 语句使循环跳过其主体的其余部分,并在重复之前立即重新测试其条件。 当循环内遇到break语句时,循环立即终止,程序控制在循环后的下一个语句处恢复。 C#中的continue语句的工作方式有点像break陈述。然而, co…

    2025年12月17日
    000
  • 向 C# ASP.NET Core 管道添加中间件时,“Map”扩展有什么用?

    中间件是组装到应用程序管道中的软件组件处理请求和响应。 每个组件选择是否将请求传递给下一个组件pipeline,并且可以在下一个组件之前和之后执行某些操作在管道中调用。 Map 扩展用作管道分支的约定。 Map 扩展方法用于根据请求的委托来匹配请求委托。path. Map简单地接受一个路径和一个配置…

    2025年12月17日
    000
  • C#程序检查二进制数中是否有K个连续的1

    要检查二进制数中是否有连续的 1,需要检查 0 和 1。 首先,为 0 和 1 设置一个 bool 数组即假与真 – bool []myArr = {false, true, false, false, false, true, true, true}; 对于 0,将计数设置为 0 &#…

    2025年12月17日
    000
  • C# 程序计算数字中的总位数

    让我们假设我们拥有的数字是12。我们通过分配一个十进制字面量来声明和初始化了一个uint变量。 uint val = 12; 12的二进制表示为 − 1100 上面的位数是4,因此要找到总位数,使用Math.log()方法 − uint res = (uint)Math.Log(val , 2.0)…

    2025年12月17日
    000
  • 如何在 C# 中创建 6 元组?

    Tuple 类表示一个 6 元组。元组是一种具有元素序列的数据结构。 它有六个属性 – Item1 − 获取当前 Tuple 对象的第一个组件的值。 Item2 − 获取当前 Tuple 对象的第二个组件的值。 Item3 − 获取当前 Tuple 对象的第三个组件。 Item4 − 获…

    2025年12月17日
    000
  • C#中对列表进行排序的方法是什么?

    在 C# 中对列表进行排序,使用 Sort() 方法。 让我们首先创建一个列表 – List myList = new List(); 现在添加元素 – myList.Add(“Audi”);myList.Add(“BMW”);myList.Add(“Chevrolet”);…

    2025年12月17日
    000
  • 如何在 C# 中获取当前用户的桌面路径?

    可以使用Environment.SpecialFolder获取当前用户的桌面路径。 Environment.SpecialFolder 获取路径系统特殊文件夹由指定的枚举标识。 string desktopPath = Environment.GetFolderPath(Environment.Sp…

    2025年12月17日
    000
  • 如何使用 C# 创建目录?

    要在 C# 中创建、移动和删除目录,System.IO.Directory 类具有方法。 首先,导入 System.IO 命名空间。 现在,使用Director.CreateDirectory() 方法在指定路径中创建目录 – string myDir = @”D:NEW”;if (!D…

    2025年12月17日
    000
  • 如何使用 C# 列出目录中的所有可用文件?

    首先,使用 DirectoryInfo 对象 – //creating a DirectoryInfo objectDirectoryInfo mydir = new DirectoryInfo(@”d:amit”); 现在,使用 GetFiles() 方法获取所有文件 – …

    2025年12月17日
    000
  • 如何在C# 8.0中使用索引器?

    ^运算符 − 它被称为从末尾开始的索引运算符。 它返回相对于序列或集合末尾的索引。 与之前的方法相比,它是找到末尾元素最简洁和最简单的方式。 methods. company.listEmployees[^2].Name = “使用新语法更改的员工2姓名”; company.…

    2025年12月17日
    000
  • C# 程序将句子中的第一个字符转换为大写

    假设以下是您的字符串 – String str = “Welcome to our website!”; 使用 ToCharArray() 方法创建上面包含的字符串的 char 数组: char []ch = str.ToCharArray(); 将第一个字符转换为大写 – …

    2025年12月17日
    000
  • 如何捕获C#中的文件未找到异常?

    当您尝试查找不存在的文件时,会引发找不到文件异常。 假设我在 StreamReader 中设置了一个不存在的文件“new.txt”。如果您尝试使用 StreamReader 访问它(读取它),它将抛出 FileNotFoundException – using (StreamReader…

    2025年12月17日
    000
  • C# 中的 System.Reflection.Module 是什么?

    System.Reflection 命名空间包含的类允许您获取有关应用程序的信息,并向应用程序动态添加类型、值和对象。 它有一个模块构造函数,用于初始化Module 类的新实例。模块是一种可移植的可执行文件,具有一个或多个类和接口。 让我们看一下 C# 中的 System.Reflection 示例…

    2025年12月17日
    000
  • C# 中的对象类

    Object类是C#中所有类的基类。它在 C# 上有以下方法。 Sr.No 方法及说明1Equals(Object) 判断指定对象是否等于当前对象。 2Equals(Object,Object, 确定指定的对象实例是否被视为相等。 3Finalize() 允许对象尝试免费资源 4GetHashCod…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信