首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Dotnet频道
中国IT教育
Google
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> C# >> 正文

深入理解C# 3.0的新特性


     在Utility中定义了两个GetEmployee方法,分别返回以Anonymous Type形式和Named Type形式的Employee对象。 
  

  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  using Artech.NewFeatureInCSharp.Library;
  
  namespace Artech.NewFeatureInCSharp.ConsoleApp
  {
   class Program
   {
   static void Main(string[] args)
   {
   var v1 = new{ID = Guid.NewGuid(), Name= "Zhang San" };
   var v2 = new { ID = Guid.NewGuid(), Name = "Li Si"};
   var v3 = Utility.Anonymous_GetEmployee(Guid.NewGuid(), "Wang Wu");
   Console.WriteLine("var v1 = new{ID = Guid.NewGuid(), Name= \"Zhang San\" };");
   Console.WriteLine("var v2 = new{ID = Guid.NewGuid(), Name= \"Li Si\" };");
   Console.WriteLine("var v3 = Utility.Anonymous_GetEmployee(Guid.NewGuid(), \"Wang Wu\");");
  
   Console.WriteLine("\nv1.GetType() = {0}", v1.GetType());
   Console.WriteLine("v2.GetType() = {0}", v2.GetType());
   Console.WriteLine("v3.GetType() = {0}", v3.GetType());
  
   Console.WriteLine("\nobject.ReferenceEquals(v1.GetType(),v2.GetType()) = {0}",object.ReferenceEquals(v1.GetType(),v2.GetType()));
   Console.WriteLine("object.ReferenceEquals(v1.GetType(),v3.GetType()) = {0}", object.ReferenceEquals(v1.GetType(), v3.GetType()));
  
   Console.WriteLine("\n\n");
  
   var v4 = new Employee { ID = Guid.NewGuid(), Name = "Zhang San" };
   var v5 = new Employee { ID = Guid.NewGuid(), Name = "Li Si" };
   var v6 = Utility.GetEmployee(Guid.NewGuid(), "Wang Wu");
   Console.WriteLine("var v4 = new Employee{ID = Guid.NewGuid(), Name= \"Zhang San\" };");
   Console.WriteLine("var v5 = new Employee{ID = Guid.NewGuid(), Name= \"Li Si\" };");
   Console.WriteLine("var v6 = Utility.GetEmployee(Guid.NewGuid(), \"Wang Wu\");");
  
   Console.WriteLine("\nv4.GetType() = {0}", v4.GetType());
   Console.WriteLine("v5.GetType() = {0}", v5.GetType());
   Console.WriteLine("v6.GetType() = {0}", v6.GetType());
  
   Console.WriteLine("\nobject.ReferenceEquals(v4.GetType(),v5.GetType()) = {0}", object.ReferenceEquals(v4.GetType(), v5.GetType()));
   Console.WriteLine("object.ReferenceEquals(v4.GetType(),v6.GetType()) = {0}", object.ReferenceEquals(v4.GetType(), v6.GetType()));
   }
   }
  } 

     代码不复杂,我在这里简单介绍一下整体的结构。这个结构分两部分,第一部分是基于Anonymous Type的,另一部分是基于Named Employee Type的。在第一部分中,我首先创建了3个Anonymous Type的Instance:v1、v2和v3(v3是通过调用定义在Artech.NewFeatureInCSharp.Library中的Utility获得,其余两个则直接通过Inline的方式创建),第二部分也具有相同的代码结构。

  var v1 = new{ID = Guid.NewGuid(), Name= "Zhang San" };
  var v2 = new { ID = Guid.NewGuid(), Name = "Li Si"};
  var v3 = Utility.Anonymous_GetEmployee(Guid.NewGuid(), "Wang Wu"); 
 
 
   
  然后现实他们对应的Type的Full name.

  Console.WriteLine("\nv1.GetType() = {0}", v1.GetType());
  Console.WriteLine("v2.GetType() = {0}", v2.GetType());
  Console.WriteLine("v3.GetType() = {0}", v3.GetType());  


     最后调用object.ReferenceEquals对这3个Type进行比较。
  
  Console.WriteLine("\nobject.ReferenceEquals(v1.GetType(),v2.GetType()) = {0}",object.ReferenceEquals(v1.GetType(),v2.GetType()));
  Console.WriteLine("object.ReferenceEquals(v1.GetType(),v3.GetType()) = {0}", object.ReferenceEquals(v1.GetType(), v3.GetType())); 
  

上一页  [1] [2] [3] [4] 下一页

【责编:Peng】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·WEB程序开发--ASP.NET和PHP、JSP究竟学哪个?
 ·五步带你入门XML
 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 今日更新
 社区讨论
 博客论点
 频道精选
 Dotnet频道相关导航