C#(4) implicit & explicit

最近几节课学的知识点的量有很大增长,加上上机和托福考试的临近,这里练习的所有代码就不走形式全贴出来了,找我自己觉得又不熟悉的点贴出来,争取简明扼要,恩恩

这次主要看接口的问题:

接口可以多继承,有些时候我们可能需要解决命名空间冲突。

而从此我们得到的结果为:

这里就发现问题了。。。

只提供一个Draw()方法的实现,导致了两个接口都使用该成员作为它们的实现。

所以我们尝试用显式的接口来完成这个功能的实现:

其实质是解决命名空间冲突

从此我们可以得到结果了:

所以:

隐式实现接口,接口和类都可以访问类中的方法;

显式实现接口,不能在派生类中调用基类中显式实现的接口成员,只有通过接口来访问类中的方法,且可以帮助我们在对象级别隐藏高级成员。

尤其当借口多继承、命名空间冲突时:可以使用显式来解决。

时间: 2025-01-05 18:08:17

C#(4) implicit & explicit的相关文章

Hibernate: Implicit & Explicit Polymorphism

As I was going through the various inheritance strategies in Hibernate, I came across the ‘class’ element’s attribute, polymorphism=”implicit|explicit”. From the Hibernate’s reference manual, this is what I found as definitions for implicit and expli

c# implicit explicit关键字(隐式和显式数据类型转换)

implicit关键字用于声明隐式的用户定义类型转换运算符.(explicit反之)explicit则用于显示转换用户自定义类型.static implicit operator target_type ( source_type identifier ){......}隐式转换可以通过消除不必要的类型转换来提高源代码的可读性.但是,因为可以在未指定的情况下发生隐式转换,因此必须注意防止令人不愉快的后果. 一般情况下,隐式转换运算符应当从不引发异常并且从不丢失信息,以便可以在不知晓的情况下安全使

implicit/explicit conversion (转载)

原文: http://www.cnblogs.com/visayafan/archive/2011/11/27/2265349.html 转http://blog.csdn.net/callmeback/article/details/4039304 不翻译了,比较简单. 这个 <ANSI/ISO C++ Professional Programmer's Handbook >是这样说的 explicit ConstructorsA constructor that takes a singl

NHibernate官方文档中文版--基础ORM(Basic O/R Mapping)

映射声明 对象/关系映射在XML文件中配置.mapping文件这样设计是为了使它可读性强并且可修改.mapping语言是以对象为中心,意味着mapping是围绕着持久化类声明来建立的,而不是围绕数据表. 要注意的是,尽管很多NHibernate使用者选择手动定义XML文件,但是仍然有很多工具可以用来生成mapping文件,包括NHibernate.Mapping.Attributes 库和各种各样基于模板的代码生成工具(CodeSmith, MyGeneration). 让我们用一个mappin

Delphi DLL制作和加载 Static, Dynamic, Delayed 以及 Shared-Memory Manager

一 Dll的制作一般分为以下几步:1 在一个DLL工程里写一个过程或函数2 写一个Exports关键字,在其下写过程的名称.不用写参数和调用后缀.二 参数传递1 参数类型最好与window C++的参数类型一致.不要用DELPHI的数据类型.2 最好有返回值[即使是一个过程],来报出调用成功或失败,或状态.成功或失败的返回值最好为1[成功]或0[失败].一句话,与windows c++兼容.3 用stdcall声明后缀.4 最好大小写敏感.5 无须用far调用后缀,那只是为了与windows 1

使用 IL 实现类型转换

在之前的文章中,我大致介绍过一些类型间的隐式和显式类型转换规则.但当时并未很仔细的研究过<CSharp Language Specification>,因此实现并不完整.而且只部分解决了类型间能否进行类型转换,仍未解决到底该如何进行类型转换,尤其是在定义泛型类型时,我们明明知道泛型类型的参数是什么类型,但就是不能直接进行类型转换: if (typeof(T) == typeof(int)) { int intValue = (int)value; // 错误:无法将类型“T”转换为“int”

【你吐吧c#每日学习】11.10 C# Data Type conversion

implicit explicit float f=12123456.213F int a = Convert.ToInt32(f); //throw exception or int a = (int)f; // not throw exception nut got an overflow value parse and tryparse string to other datatype string a="100fh"; int num=int.Parse(a); //throw

Hibernate常用配置文件详解

本文转载自:http://blog.csdn.net/csh624366188/article/details/7578939 初学hibernate的童鞋,刚开应该都有这种感觉,hibernate的配置文件好麻烦,还不如jdbc访问数据库呢,直接写代码,多方便,用hibernate还要写代码,还要写配置,太麻烦了.至少我刚开始学习的时候就是这么想的.配置文件确实有他枯燥的一面,但等你真正深入学习的时候,你就可以发现他枯燥的背后却藏着很多强大的功能,呵呵,让我说的这么玄乎,那就让我们一起来看看吧

NHibernate初入门之映射文件配置说明(三)

转载逆心http://www.cnblogs.com/kissdodog/archive/2013/02/21/2919886.html 1. hibernate-mapping 这个元素包括以下可选的属性.schema属性,指明了这个映射所引用的表所在的schema名称.假若指定了这个属性, 表名会加上所指定的schema的名字扩展为全限定名.假若没有指定,表名就不会使用全限定名.default-cascade 指定了未明确注明cascade属性的.Net属性和集合类.Net会采取什么样的默认