当前位置: 首页 > news >正文

深圳网站建设啊/谷歌seo排名工具

深圳网站建设啊,谷歌seo排名工具,公司网站属于信息化建设吗,网站制作建设飞沐不从 System.Object 继承之后 Written by Allen Lee 上一篇文章说到 IL 允许创建一个不继承自 System.Object 的类,这打破了我们已有的一些认识。到了这个份上,我们自然会追问,为什么要允许这种类型存在呢? 考察如下 C/CLI 代码&a…

不从 System.Object 继承之后

 

Written by Allen Lee

 

上一篇文章说到 IL 允许创建一个不继承自 System.Object 的类,这打破了我们已有的一些认识。到了这个份上,我们自然会追问,为什么要允许这种类型存在呢?

考察如下 C++/CLI 代码:

 1None.gifusing namespace System;
 2None.gif
 3None.gifpublic ref class Person
 4ExpandedBlockStart.gifContractedBlock.gifdot.gif{
 5InBlock.gifpublic:
 6InBlock.gif    Person(String^ name)
 7ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 8InBlock.gif        m_Name = name;
 9ExpandedSubBlockEnd.gif    }

10InBlock.gif
11InBlock.gif    Person(Person% p)
12ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
13InBlock.gif        m_Name = p.Name;
14ExpandedSubBlockEnd.gif    }

15InBlock.gif
16InBlock.gif    property String^ Name
17ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
18InBlock.gif        String^ get()
19ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
20InBlock.gif            return m_Name;
21ExpandedSubBlockEnd.gif        }

22ExpandedSubBlockEnd.gif    }

23InBlock.gif
24InBlock.gifprivate:
25InBlock.gif    String^ m_Name;
26ExpandedBlockEnd.gif}
;
27None.gif
28None.gifvoid DisplayPersonInfo(Person p)
29ExpandedBlockStart.gifContractedBlock.gifdot.gif{
30InBlock.gif    Console::WriteLine("Name: {0}", p.Name);
31ExpandedBlockEnd.gif}

32None.gif
33None.gifint main(array<System::String ^> ^args)
34ExpandedBlockStart.gifContractedBlock.gifdot.gif{
35InBlock.gif    Person^ p = gcnew Person("Allen");
36InBlock.gif    DisplayPersonInfo(*p);
37InBlock.gif
38InBlock.gif    return 0;
39ExpandedBlockEnd.gif}

DisplayPersonInfo 方法只能用在 C++/CLI 中,你无法在 C# 中对引用类型进行解引用,就像第三十六行那样。为了处理 C++/CLI 的特性,IL 引入了不少别的语言无法使用的东西。

或许,如同部分评论所言,此举乃是为某些语言的特性埋下伏笔。然而,此举却为 C# 带来了麻烦。我用上一篇文章里所说的方法创建了一个不继承自 System.ObjectNoInherit 类,置于 NoInherit.dll 中,然后用 Visual Studio 2005 新建一个项目,引用 NoInherit.dll,并在 Main 里写下这些代码:

 1None.gifType t = typeof(NoInherit);
 2None.gifConsole.WriteLine(t.BaseType == null);
 3None.gif
 4None.gifNoInherit ni = new NoInherit("NoInherit");
 5None.gifobject o = ni as object;
 6None.gifif (o != null)
 7ExpandedBlockStart.gifContractedBlock.gifdot.gif{
 8InBlock.gif    Console.WriteLine(o.GetType());
 9InBlock.gif    Console.WriteLine(o.ToString());
10ExpandedBlockEnd.gif}

你猜上面代码的运行结果是什么?正常来说,运行结果应该只有一个 true,即第二行的输出,但事实上,第八行居然正确输出“NoInherit”,而第九行则抛出 AccessViolationException。按道理,第九行的异常是意料中事,但第二行和第五行的结果就很矛盾了。第二行输出 true 表明了 NoInherit 类的确没有继承自 System.Object,但第五行却转换成功,否则 o 应该是 null 的。

当一个系统复杂到一定程度,一个看似没问题的改动可能会导致一些看似不相关的问题。当你拿到一个库时,你是假定里面的所有类都继承自 System.Object,还是去验证一下呢?

转载于:https://www.cnblogs.com/allenlooplee/archive/2007/01/23/628425.html

http://www.jmfq.cn/news/5304349.html

相关文章:

  • 兼职游戏网站怎么做/武汉seo搜索引擎
  • 网站的公司/中国做网站的公司排名
  • wordpress完美迁站教程/石家庄热搜
  • 网站空间500M/seo关键词排名优化怎样
  • 网站制作合同模板/公司网站制作教程
  • 为什么买的网站模版不好用/友链
  • 新安县做网站/网络营销ppt课件
  • 中国建设银行亚洲网站/免费推广广告链接
  • 长沙手机网站建设公司哪家好/可以商用的电视app永久软件
  • 辽宁省交通建设投资集团网站/关于市场营销的100个问题
  • 做网站的人叫什么软件/三叶草gw9356
  • 多语言网站思路/夸克搜索引擎入口
  • 郑州推广网站/seo方案书案例
  • 视频优化网站怎么做/网络推广费用计入什么科目
  • 桂阳网站设计/最强大的搜索引擎
  • 网站建设设计 网络服务/长沙靠谱seo优化
  • 如何做网站价格策略/防止恶意点击软件管用吗
  • 电商型网站建设/谷歌优化seo
  • 网站开发前端好还是后端好/潮州seo
  • 免费建站平台哪个稳定/购物网站有哪些
  • 作为一个大学生网站 应该怎么做/百度号码认证平台取消标记
  • python 网站开发教程/海外营销推广
  • 做网站设计答辩问题/百度号码认证平台官网首页
  • 个人主页搭建/新乡seo公司
  • 珠海网络公司网站建设/镇江seo公司
  • 中山网站建设sipocms/品牌软文
  • 做网站推销手表/佛山做网络优化的公司
  • WordPress手动切换主题/优化推广seo
  • 做网站要学什么c语言/优化大师下载电脑版
  • 网站用户运营/壹起航网络推广的目标