搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
繁依Fanyi0
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
图像篡改检测初学笔记_双流图像篡改检测
2
Python训练文本情感分析模型_python情感分析训练模型
3
python 数据去重 max()_Python公共操作和推导式
4
纯Python实现!更纯粹、更高压缩率的Tokenizer
5
AIops落地5大原则_aiops 知识图谱
6
【表盘识别】基于霍夫变换实现钟表表盘识别含Matlab源码_displaypatches
7
本届挑战赛季军方案:基于图网络及LLM AGENT的微服务系统异常检测和根因定位方法
8
软实力-结构化思维_用5w2h分析法,分析学习由电子商务概论?
9
vue3+pinia,我用两天时间写了一个微信聊天模拟页面_vue仿微信聊天窗口
10
注意力机制:CA - Coordinate Attention for Efficient Mobile Network Design(文末附代码)_ca注意力机制论文
当前位置:
article
> 正文
24.3.24 《CLR via C#》 笔记10
作者:繁依Fanyi0 | 2024-03-25 19:49:25
赞
踩
24.3.24 《CLR via C#》 笔记10
第十三章 接口
类和接口继承
CLR不支持多继承,因此所有托管编程语言都不支持
任何类都从且只能从一个类派生(最终从Object类派生)
定义接口实际只是对一组方法进行了统一的命名,类通过指定接口名称来继承接口,且必须显式实现接口方法
接口可以定义方法、事件、无参属性和有参属性(索引器);不能定义构造器方法、实例字段
C#中使用interface关键字定义接口;根据约定,接口类型名称以I开头
接口可以从另一个或多个接口”继承“,例:IC继承IA和IB,则继承IC的类也要实现IA和IB中定义的方法,该类也视为实现了IA和IB
派生类不能重写基类的接口方法(因为接口方法被CLR标记为sealed),但是派生类可以重新继承同一个接口,调用接口方法时会调用在该类上的实现
CLR允许定义接口类型的字段、参数和局部变量,接口类型的变量可以调用接口中定义的方法;值类型也可以实现零个或多个接口,但是值类型的实例转换为接口类型时必须装箱
隐式和显式接口方法实现
隐式实现:在类中定义一个和接口方法有相同参数和返回类型的方法,编译器自动认为该方法匹配接口方法,两个记录项(使用类的对象调用方法、使用接口类型的对象调用方法)将引用同一个实现
显式接口方法实现(EIMI):在类中用接口的名称作为方法名前缀定义一个方法,然后直接定义一个相同签名的方法,将被视为两个方法。
例:类MyClass继承接口IDisposable
隐式实现:public void Dispose() {}
显式实现:public void Dispose() {} void IDisposable.Dispose() {}
myClass.Dispose() 和 ((IDisposable)myClass).Dispose()是有区别的
泛型接口
泛型接口提供了编译时的类型安全性(使用Object作为参数可能造成运行时抛出参数类型异常)
使用泛型接口将减少装箱(使用Object时,传递值类型需要装箱)
类可以多次实现同一个泛型接口(每次实现使用不同的类型参数)
可以将类型参数标记为协变和逆变(in、out)
泛型和接口约束
可以将泛型类型参数约束为多个接口(传递的参数类型必须实现接口)
在值类型上调用接口可以不装箱
实现多个具有相同方法名和签名的接口(两个接口中定义了相同名称和签名的方法):使用EIMI
用EIMI增强编译时的类型安全性:例定义CompareTo(Object other)时用EIMI定义(IComparable.CompareTo(Object other)),然后在类中再定义一个CompareTo(MyClass other),获得编译时安全性和减少装箱
尽量避免使用EIMI
应该设计类型还是接口
类型意味着IS-A关系,接口意味着CAN-DO关系
从基类派生更简单,因为继承接口的类必须实现所有成员,而派生类型可能只需稍作改动
接口无法保证所有人百分百正确实现它,而基类可以默认提供一个良好的实现
向基类添加新方法,派生类型将自动继承;向接口添加新方法,所有继承者都要添加(现在好像接口也可以提供默认实现了)
两件事情可以同时做:定义接口,然后定义实现该接口的基类
声明:
本文内容由网友自发贡献,转载请注明出处:
【wpsshop】
推荐阅读
article
利用
COT
思维链
技术
和
Prompt
提示语
工程
与微调后的大
模型
集成方式_
cot
prompt
...
这意味着你可以在你自己的应用服务器上实现
COT
技术
和
Prompt
工程
,然后将其结果作为
模型
的输入,发送给OpenAI的服...
赞
踩
article
R
语言
总结(一)_
r
语言
表是
0
-
9
数字
...
R
语言
笔记整理_
r
语言
表是
0
-
9
数字
r
语言
表是
0
-
9
数字
前言:想要练习数据可以私信哦~ 快捷键...
赞
踩
article
中文
BERT
模型
预训练参数总结以及转化为
pytorch
的方法_
google
-
bert
/
bert
-ba...
谷歌发布的
chinese
_L-12_H-768_A-12还有哈工大的
chinese
-
bert
-wwm /
chinese
...
赞
踩
article
Loss
变为
NaN
怎么办?_
loss
nan
...
在训练网络的时候,当打印出的日志提示
loss
变为
NaN
的时候,是不是整个人都开始抓狂了?相信应该每个算法工程师都遇到过这...
赞
踩
article
开发者
如何通过
DevEco
Studio
编译和上传软件包_
deveco
studio3.1
编译ap...
作者:坚果团队:坚果派公众号:“大前端之旅”润开鸿技术专家,华为 HDE,InfoQ 签约作者,OpenHarmony ...
赞
踩
article
memset
函数
及其用法(最全详解)
_
memset
函数
的
使用
方法
...
void *
memset
(void *s, int ch, size
_
t n);
函数
解释:将s中当前位置后面
的
n个字节 ...
赞
踩
article
吴恩达
深度
学习
笔记:
神经网络
的
编程基础
2.9
-
2.14
...
因此,为了使得逻辑回归中最小化代价函数吴恩达
深度
学习
笔记:
神经网络
的
编程基础
2.9
-
2.14
...
赞
踩
article
微信
小
程序
前
后
端
开发
快速入门(完结篇)_
微信
小
程序
反馈功能
后
端怎么弄...
这篇教程相比之前的备忘录教程更像是一道填空题,需要大家利用之前教程学习到的知识进行融合才能实现这个
小
程序
,独立完成这个项...
赞
踩
article
uni
app
滚动
到指定元素
的
位置
(锚点)_
uni
-
app
检索文本内容并
页面
滚动
到对应
的
位置
...
需求:在
页面
中,不管位于何处,点击按钮
页面
滚动
到对应
的
标题
位置
。最简单有效
的
方式(直接复制改数据就行)点击事件(
位置
随便...
赞
踩
article
H5
跳转
Flutter
APP
问题
:在
Flutter
中解决
H5
能够
打开
APP
并接收
H5
传递的参数_...
最近遇到了这个
问题
,其实这个
问题
在源生开发中算是一个很常见的
问题
。有很多场景都需要通过其他
APP
或者
H5
来
打开
APP
并且...
赞
踩
article
mac
安装
ana
conda
以及
conda
pip
的使用_
mac
ana
conda
pip
...
环境重装了系统,high sierra ,没装新的python,下载了最新的
ana
conda
版本3-5.2。安装以及so...
赞
踩
article
tf
.
estimator
基本用法_
tf
.
contrib
.
tpu
.
tpu
estimator
...
如何定义模型?model_fn的格式?如何定义输入?
tf
.
estimator
.Estimator和
tf
.estimato...
赞
踩
article
解锁
知识
管理
的
新维度:
思维
链
技术
深度解析...
本篇博客旨在深入探讨
思维
链
技术
,一种新兴
的
知识
管理
和信息组织工具。通过本文,读者将了解
思维
链
的
概念、它
的
工作原理、如何有...
赞
踩
article
基于
云
开发
的
微信
小
程序
实战教程(二)_
云
开发
是灰色
的
...
基于
云
开发
的
微信
小
程序
实战教程(二)最近刚
开发
了款小
程序
,在
开发
过程中发现,基于
云
开发
的
教程资源不是很多,而且很不详细。...
赞
踩
article
走进景区的娱乐软件——户外
剧本
杀
小
程序
_户外ar
剧本
杀
小
程序
开发
csdn
...
本文将探讨
剧本
杀
小
程序
走进景区的意义和可能性,并分析其中的专业性和思考深度一、
剧本
杀
小
程序
与景区的结合。2.展望:未来,...
赞
踩
article
npm
run
dev
运行项目报错-
4058
_
npm
run
serve
-
4058
...
npm
run
dev
运行项目报错-
4058
报错具体代码如下:这个项目是我刚下载的,我打开运行了一下,报错了,心想这是什...
赞
踩
article
转:
Qt
设置
QLabe
中字体
的
颜色...
http://blog.csdn.net/liang890319/article/details/7028341(在可视...
赞
踩
article
【报错】/
home
/test/
anaconda3
/
envs
/
py
tho
n38
/lib/
py
tho
n3...
/
home
/test/
anaconda3
/
envs
/
py
tho
n38
/lib/
py
tho
n3.8/
site
-packag...
赞
踩
article
TCP
协议
特性
总结_
tcp
的
特性
...
1.
TCP
特性
2.报文格式3.确认应答4.超时重传5.连接管理(三次握手,四次挥手)1.建立连接(三次握手)2.断开连接...
赞
踩
article
软件杯
深度
学习
机器视觉
车位
识别
车道线
检测
-
python
opencv
...
你是不是经常在停车场周围转来转去寻找停
车位
。如果你的车辆能准确地告诉你最近的停
车位
在哪里,那是不是很爽?事实证明,基于深...
赞
踩
相关标签
人工智能
深度学习
大数据
bert
pytorch
算法
华为
ArkTS
OpenHarmony
HarmonyOS
元服务
c++
笔记
神经网络
微信小程序
小程序
小程序云开发
小程序源码
免费商城源码
uni-app
H5跳转FlutterAPP
H5打开FlutterAPP
Flutter
H5
mac anaconda环境 pip