显示实现接口,是咋回事?

阿建像熊猫 2007-08-22 01:37:08
如题。
...全文
1106 50 打赏 收藏 转发到动态 举报
写回复
用AI写文章
50 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzengli 2011-04-07
  • 打赏
  • 举报
回复
其实正规的做法应该是显示实现,显示实现也不是为了什么重名的东东;面向接口编程主要是为了解耦,所以尽量不要实现类调用从接口实现的方法!
oasistree 2009-09-23
  • 打赏
  • 举报
回复
吵架不好,不过还是解决了我的疑问,谢过了
captainym 2009-02-20
  • 打赏
  • 举报
回复
平民百姓人品还是不错的!
应该是平常太牛逼,呗人说一下太突然啦。
能马上回归平常心态,难得。赞一个。

我懒,有问题就爱google哈哈。
patann 2008-09-11
  • 打赏
  • 举报
回复
to Moosdau
其实我觉得你最后的那个回复说得就不对了.因为在hbxtlhx 第一次回复时就是这样说的

"接口的实现分显示和隐式两种。
显示实现的接口,接口的成员都要声明成公用的(public)
而隐式实现的接口,接口的成员是接口类型加成员名称声明的。这样的声明可以通过强制转换进行和接品的转换。"

即是说,他一直都认为 "显示实现的接口,接口的成员都要声明成公用的(public)" ,当发现两个是例子是一样的时候,他心中还是认为"显示实现的接口,接口的成员都要声明成公用的(public)" ,所以发第二次例子时,当然就是那样了.
禅-剑之初 2007-08-24
  • 打赏
  • 举报
回复
吵架有什么好大惊小怪的,做人别那么虚伪...
北京的雾霾天 2007-08-24
  • 打赏
  • 举报
回复
TO: Moosdau(Moosdau)

多谢指点:)
非常谢谢
Moosdau 2007-08-24
  • 打赏
  • 举报
回复
to hbxtlhx(平民百姓-自已动手,丰衣足食) :
不是人家说你, 你第一次发贴发两个一模一样的例子, 第二次又发反, 不是想指责你技术不行, 而是态度不行, 第一次发重复时, 只要发贴前稍微看一眼就会发现, 更甚者是第二次, 既然已经错了一次了, 第二次应该认真检查后再发才是, 你如此粗心, 可以认为是在以灌水的心态在回贴. 楼主问的属于基本问题, 回答错不如不回答, 既然回答别人的问题, 就应该负责任不是, 说自己水平问题, 纯属狡辩, 既然自己都不会, 为什么去回答别人??
而且人家第一次说你, 并不算用词过分, 是你先用"暗算" 这样尖刻的词挑起争吵, 所以鄙人认为, 你应该为自己的态度道歉.
pikapi 2007-08-22
  • 打赏
  • 举报
回复
说白了,显示就是防止发上冲突,如果你只继承一个的话,就不用显示了。

最好还是显示声明,养成好习惯。
hooo 2007-08-22
  • 打赏
  • 举报
回复
using System;

interface IA
{
void Paint();
}
interface IB
{
void Paint();
}
class SomeClass:IA,IB
{
void IA.Paint()//顯示接...解决重名问题
{
Console.WriteLine("IA.Paint");
}
void IB.Paint()
{
Console.WriteLine("IB.Paint");
}
};

public class Test
{
public static void Main()
{
IA a = new SomeClass();
a.Paint();
IB b = new SomeClass();
b.Paint();
Console.ReadLine();
}
};
lovingkiss 2007-08-22
  • 打赏
  • 举报
回复
让我想起了和我以前同事吵架来着,其实真的没有必要,就是几句话说不到一起,彼此形成了成见,就越来越矛盾,越矛盾越吵,反而偏离了主题太远太远。

星星多——不代表能力的提高,只是帮助的人多了。
责任确实增大了,但是不能说是为了分而故意“误导”谁,相信大家也都不会这么做的,也没有谁敢保证自己说了就一定对的~~

Ivony(授人以鱼不如授人以渔,上海谋生)
hbxtlhx(平民百姓-自已动手,丰衣足食)
哪一个帐户不是忽悠了若干板块——让多少人得到了帮助的老家伙了??
要我说,一人踢屁股一脚,呵呵~~——有本事来烟台,咱们喝扎啤比高低才是王道~~
Macosx 2007-08-22
  • 打赏
  • 举报
回复
都是楼主不查MSDN害的
阿建像熊猫 2007-08-22
  • 打赏
  • 举报
回复
我是楼主!
我是楼主!
我是楼主!
我是楼主!
我是楼主!



这是我发贴问题,回的,最多的问题。虽然这个问题有点弱!不过,感谢大家。我一直把显示和隐示搞混。也不是很理解显示接口,今天搞明白了。嘿嘿。大家都是凡人,不见得谁比谁强,可能这个地方,你懂的多,你就是我老师,我就是你学生。共同学习,一同进步嘛。
北京的雾霾天 2007-08-22
  • 打赏
  • 举报
回复
Jinglecat(晓风残月 >> 问题需简洁,错误要详细,需求得明确)

同志啊:)

我觉得也是,我错了就是我错了。我也是学生嘛。
Jinglecat 2007-08-22
  • 打赏
  • 举报
回复
怎么楼上 斗起嘴 了哦,自家人不说两家话 ....

我自己也是经常的出错,通常我会在回复之前,重新审视自己的答案,并在“发出回复”之后,再次审视,并及时纠正,你会发现,我的很多回复之后,斗会再跟一个帖,然后就是 I'm sorry, >>>>
我经常生怕误导别人

星抗得多,给人的直观印象是,阅历多,给出的参考答案应该更“权威”,
可是,星再多,也是人扛着啊,
回复出错是难免的,错了不要紧,及时纠正就是,很多时候也是能力所不能及,
只要我们不去误导其他人

Good Luck!
北京的雾霾天 2007-08-22
  • 打赏
  • 举报
回复
这个问题是我疏忽了,好在有人指出了。非常的感谢。

不过因为我第一个的代码中类名和方法相同了,所以生成代码的时候把显式的和隐式的搞成一样的了。

发了以后发现不对就改了类的名称,但是显式和隐式我并没有更正,这是我不对的地方。

在CSDN是一个学习的地方。我相信总有人比我更能发现问题。
所以我非常的希望这里能是一个和气的地方。因为大家都是“学生”嘛。
Jinglecat 2007-08-22
  • 打赏
  • 举报
回复
显示接口实现,可以达到对外“隐藏”成员的效果,即“私有化”

因为,你只有显示滴将类型转换为目标接口才可以调用其接口成员

然而,显示接口的初衷是为了,解决,多个被实现的接口成员原型冲突问题
pol000 2007-08-22
  • 打赏
  • 举报
回复
/// <summary>
/// 接口的定义
/// </summary>
public interface IA
{
void a();
}
/// <summary>
/// 显式的实现 //隐式的实现
/// </summary>
public class A : IA
{
public void a()
{
throw new Exception("The method or operation is not implemented.");
}
}
/// <summary>
/// 隐式的实现 //显示的实现
/// </summary>
public class B : IA
{
void IA.a()
{
throw new Exception("The method or operation is not implemented.");
}
}


这个写反了才是关键……
阿建像熊猫 2007-08-22
  • 打赏
  • 举报
回复
肯定是无心的!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
阿建像熊猫 2007-08-22
  • 打赏
  • 举报
回复
一个问题,可以有一种甚至二种甚至三四种解决方案。回答问题也一样,对于书上一句话的理解,可能有多种多样的。我相信“平民百姓”不会骗人的,至少不会主动骗,可能对于问题的理解有一定错误。要不,他身上也不会背那么多的星星。
“上海谋生”的话,也不无道理,至少“平民百姓”第一次举的例子的二个类是完全一样的。可能是由于他的不小心。我知道他肯定不是无心,不过也希望他在发贴的时候注意一下。
pol000 2007-08-22
  • 打赏
  • 举报
回复
好了好了
LZ以后这样的问题自己查下MSDN就可以了……
别问了!
加载更多回复(29)

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧