讲师中心 微信公众号
AI工具推荐 视频效率加速

C# 接口实现方法 C#如何定义和实现接口

冬静吖_9828

冬静吖_9828

发布时间:2026-02-10 10:39:11

|

654人浏览过

|

来源于php中文网

原创

接口必须用interface关键字定义,只声明方法、属性、事件、索引器签名,不可含字段、构造函数、静态字段或实现体;C#中所有成员默认public,类实现接口须用:并显式实现全部成员,支持多接口实现与接口继承。

c# 接口实现方法 c#如何定义和实现接口

接口定义必须用 interface 关键字,不能有字段和构造函数

接口是契约,只声明行为,不提供实现。C# 中用 interface 定义,所有成员默认是 public 且不能加访问修饰符;不允许写字段、属性赋值、构造函数或静态成员(C# 8.0+ 允许 static 方法但不能有状态)。

  • interface 内只能有方法、属性、事件、索引器的签名,不能有 {} 实现体(C# 8.0+ 支持默认实现,但需显式用 default 语义理解)
  • 错误写法:
    interface ILogger {
        private string _prefix = "App"; // ❌ 编译报错:接口中不能包含字段
        public ILogger() { } // ❌ 接口不能有构造函数
    }
  • 正确写法:
    interface ILogger {
        void Log(string message);
        string Name { get; set; }
    }

类实现接口必须用冒号 :,且显式实现所有成员

一个类用 : 后接接口名表示实现,编译器会强制检查是否实现了接口中每个成员。如果漏掉任一方法或属性,编译直接失败,不是运行时报错。

  • 实现时可选择显式实现(void ILogger.Log(...))或隐式实现(public void Log(...)),前者仅能通过接口变量调用,后者可通过类实例或接口变量调用
  • 若接口有同名成员(如多个接口都有 Dispose()),显式实现可避免冲突
  • 示例:
    class ConsoleLogger : ILogger {
        public void Log(string message) {
            Console.WriteLine($"[LOG] {message}");
        }
    <pre class='brush:php;toolbar:false;'>public string Name { get; set; } = "Console";

    }

    C#
    C#

    "避开 C# 常见错误——空陷阱、异步陷阱、LINQ 陷阱及资源泄漏。"

    下载

一个类可实现多个接口,但只能继承一个基类

C# 不支持多继承,但允许多接口实现——这是组合行为的主要手段。接口之间也可继承,用 : 连接,类似类继承语法。

  • 多个接口用逗号分隔:class Service : IStartable, IStoppable, IDisposable
  • 接口继承示例:
    interface ILoggable {
        void Log(string msg);
    }
    interface IVerboseLoggable : ILoggable {
        void LogVerbose(string detail);
    }
  • 实现 IVerboseLoggable 的类,必须同时实现 Log 和 LogVerbose
  • 注意:接口继承不构成“is-a”关系,只是契约叠加,不要滥用继承层次

显式接口实现容易被忽略:调用时需用接口类型变量

显式实现的方法在类实例上调用不了,必须把对象转成接口类型。这个限制常导致新手困惑:“明明写了方法,为什么点不出来?”

  • 显式写法:
    class FileLogger : ILogger {
        void ILogger.Log(string message) {
            File.AppendAllText("app.log", $"[{DateTime.Now}] {message}\n");
        }
        string ILogger.Name { get; set; } = "File";
    }
  • 调用方式:
    var logger = new FileLogger();
    // logger.Log("test"); // ❌ 编译错误:找不到 Log 方法
    ((ILogger)logger).Log("test"); // ✅ 正确
    ILogger iLogger = logger; // 隐式转换
    iLogger.Log("test"); // ✅ 正确
  • 适用场景:避免类的公共 API 过于臃肿,或实现多个接口时命名冲突

接口本身不占实例内存,但实现类的虚方法表会增加间接调用开销;高频路径慎用接口抽象,尤其是热循环里反复调用 interface 方法。真正需要抽象时再引入,别为“设计感”提前套接口。

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

Flowith
Flowith Hot

Flowith是一款基于画布和智能体工作流的 AI 协作工作空间。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

相关专题

更多
javascriptvoid(o)怎么解决
javascriptvoid(o)怎么解决

javascriptvoid(o)的解决办法:1、检查语法错误;2、确保正确的执行环境;3、检查其他代码的冲突;4、使用事件委托;5、使用其他绑定方式;6、检查外部资源等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

636

2023.11.23

java中void的含义
java中void的含义

本专题整合了Java中void的相关内容,阅读专题下面的文章了解更多详细内容。

371

2025.11.27

java多继承如何实现
java多继承如何实现

本专题整合了java多继承相关内容以及教程,阅读专题下面的文章了解更多详细内容。

438

2025.10.28

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

3228

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

5349

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3869

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

486

2026.01.19

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

4456

2024.01.03

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

0

2026.11.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C++ Core Guidelines
C++ Core Guidelines

共0课时 | 0人学习

C++ Reference
C++ Reference

共0课时 | 0人学习

C++ 官方标准说明
C++ 官方标准说明

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn