全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C#中new的用法及与override的区别分析

C#中new的用法有三种:

(1)new是运算符,用于创建对象和调用构造函数。如Class1=new Class1();也可以为值类型调用默认的构造函数如int a=new int();此时a=0.

(2)new是修饰符,用于隐藏基类成员的继承成员。override不能隐藏积累成员的继承成员。如:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace A
{
  
  class Program
  {
    abstract public class Test
    {      
      public virtual void Prinf() 
      {
        Console.WriteLine("Abstract Printf...");
      }
    }
    public class Class1 : Test
    {
      
      public override void Prinf() 
      {

        Console.WriteLine("Class One Override Printf...");
      }
       
    }

    public class Class2 : Test
    {
      public new void Prinf()
      {

        Console.WriteLine("Class Two New Printf...");
      }
    }
 
    
    static void Main(string[] args)
    {

      Class1 cls1 = new Class1();
      Class2 cls2 = new Class2();
      cls1.Prinf();
      cls2.Prinf();
      ((Test)cls1).Prinf();
      ((Test)cls2).Prinf();

      Console.ReadLine();    

    }
  }
}

运行结果表明:new修饰符隐藏了重写方法,通过将派生对象转为为基类对象,调用了基类的方法。而override则是完全重写了方法,即便是转为基类对象也调用的也是派生类的重写方法。

即:new隐藏的基类方法,override重写基类方法。

(3)new是约束。用在泛型中添加类型的约束。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace A
{
  class Test<T>
    where T : new()//定义类型T的约束,表示T类型必须有不带参数的构造函数
  {
    public T GetItem()
    {
      return new T();//如果不添加new()约束,编译错误:变量类型“T”没有 new() 约束,因此无法创建该类型的实例
              //想一下,T类型不知道,编译器不知道分配多大的空间,所以会通过反射技术实现
    }
  }
  class TClass
  {
    private int a;
    
    public TClass() //如果不添加无参构造函数,编译错误:TClass必须是具有公共的无参数构造函数的非抽象类型,才能用作泛型类型或方法“A.Test<T>”中的参数“T”
    {

    }
    public TClass(int a)
    {
      this.a = a;
    }
  }

  class Program
  {
  
    static void Main(string[] args)
    {
      Test<TClass> test = new Test<TClass>();

      Console.ReadLine();    

    }
  }
}

注释:参考http://msdn.microsoft.com/zh-cn/library/sd2w2ew5.aspx


# C#  # new  # C#中new的几种用法详解  # 详解C#用new和override来实现抽象类的重写区别  # 深入理解C#中new、override、virtual关键字的区别  # C#基础知识之new关键字介绍  # C#中Override关键字和New关键字的用法详解  # C#中new和override的区别个人总结  # .net(c#)中的new关键字详细介绍  # 基于C# 中可以new一个接口?的问题分析  # C# new和override的区别分析  # 重写  # 修饰符  # 则是  # 也可  # 写了  # 多大  # 不带  # 用在  # 有三种  # 运算符  # 派生类  # 即便是  # Program  # abstract  # Linq  # namespace  # Text  # Prinf  # Console  # WriteLine 


相关文章: 如何通过wdcp面板快速创建网站?  建站主机选择指南:服务器配置与SEO优化实战技巧  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  如何批量查询域名的建站时间记录?  如何通过智能用户系统一键生成高效建站方案?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  如何用狗爹虚拟主机快速搭建网站?  如何选择香港主机高效搭建外贸独立站?  高端网站建设与定制开发一站式解决方案 中企动力  网站制作价目表怎么做,珍爱网婚介费用多少?  中山网站制作网页,中山新生登记系统登记流程?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  建站中国官网:模板定制+SEO优化+建站流程一站式指南  如何用景安虚拟主机手机版绑定域名建站?  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  建站之星安装步骤有哪些常见问题?  建站OpenVZ教程与优化策略:配置指南与性能提升  想学网站制作怎么学,建立一个网站要花费多少?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  建站之星下载版如何获取与安装?  西安大型网站制作公司,西安招聘网站最好的是哪个?  成都网站制作报价公司,成都工业用气开户费用?  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  如何用免费手机建站系统零基础打造专业网站?  如何获取上海专业网站定制建站电话?  如何获取免费开源的自助建站系统源码?  *服务器网站为何频现安全漏洞?  建站与域名管理如何高效结合?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  学校为何禁止电信移动建设网站?  购物网站制作公司有哪些,哪个购物网站比较好?  如何用y主机助手快速搭建网站?  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  如何选择高效可靠的多用户建站源码资源?  微信小程序 五星评分(包括半颗星评分)实例代码  如何在景安服务器上快速搭建个人网站?  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  小建面朝正北,A点实际方位是否存在偏差?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  简单实现Android验证码  建站之星客服服务时间及联系方式如何?  Android使用GridView实现日历的简单功能  如何快速搭建高效服务器建站系统?  北京的网站制作公司有哪些,哪个视频网站最好? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。