C#中new的几种用法详解

 更新时间:2017年02月28日 11:24:33   作者:李斌1  
本文主要介绍了C#中new的几种用法,具有很好的参考价值,下面跟着小编一起来看下吧

在 C# 中,new 关键字可用作运算符、修饰符或约束。

new 运算符

用于创建对象和调用构造函数。

new 修饰符

用于向基类成员隐藏继承成员。

new 约束

用于在泛型声明中约束可能用作类型参数的参数的类型。

new 修饰符(C# 参考)

在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。隐藏继承的成员意味着该成员的派生版本将替换基类版本。在不使用 new 修饰符的情况下隐藏成员是允许的,但会生成警告。使用 new 显式隐藏成员会取消此警告,并记录代之以派生版本这一事实。

若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并使用 new 修饰符修饰该成员

new 运算符(C# 参考)

1.用于创建对象和调用构造函数。例如:

Class1 o = new Class1();

2.也用于为值类型调用默认的构造函数

 例:int myInt = new int();

 myInt 初始化为 0,它是 int 类型的默认值。该语句的效果等同于:int myInt = 0;

3.不能重载 new 运算符。

4.如果 new 运算符分配内存失败,则它将引发 OutOfMemoryException 异常

new 约束(C# 参考)

new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。当泛型类创建类型的新实例时,将此约束应用于类型参数,如下面的示例所示:

class ItemFactory<T> where T : new() 
{ 
public T GetNewItem() 
{ 
return new T(); 
} 
}

通过继承隐藏名称采用下列形式之一:

  1.引入类或结构中的常数、指定、属性或类型隐藏具有相同名称的所有基类成员。

  2.引入类或结构中的方法隐藏基类中具有相同名称的属性、字段和类型。同时也隐藏具有相同签名的所有基类方法。

  3.引入类或结构中的索引器将隐藏具有相同名称的所有基类索引器。

  4.在同一成员上同时使用 new 和 override 是错误的。

  注意:在不隐藏继承成员的声明中使用 new 修饰符将生成警告。

 示例

  在该例中,嵌套类 MyClass 隐藏了基类中具有相同名称的类。该例不仅说明了如何使用完全限定名访问隐藏类成员,同时也说明了如何使用 new 修饰符消除警告消息。

   using System; 
   public class MyBaseC 
   { 
   public class MyClass 
   { 
   public int x = 200; 
   public int y; 
   } 
   } 
   public class MyDerivedC : MyBaseC 
   { 
   new public class MyClass // nested type hiding the base type members 
   { 
   public int x = 100; 
   public int y; 
   public int z; 
   } 
   public static void Main() 
  { 
   // Creating object from the overlapping class: 
   MyClass S1 = new MyClass(); 
   // Creating object from the hidden class: 
  MyBaseC.MyClass S2 = new MyBaseC.MyClass(); 
   Console.WriteLine(S1.x); 
   Console.WriteLine(S2.x); 
   } 
   } 

  输出
  100
  200

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

相关文章

  • C#编程实现统计文件夹内文件和隐藏文件的方法示例

    C#编程实现统计文件夹内文件和隐藏文件的方法示例

    这篇文章主要介绍了C#编程实现统计文件夹内文件和隐藏文件的方法,结合具体实例形式分析了C#针对文件与目录的遍历及属性操作相关技巧,需要的朋友可以参考下
    2017-07-07
  • C#中DateTime日期类型格式化显示方法汇总

    C#中DateTime日期类型格式化显示方法汇总

    这篇文章主要介绍了C#中DateTime日期类型格式化显示方法汇总
    2014-07-07
  • C#中在WebClient中使用post发送数据实现方法

    C#中在WebClient中使用post发送数据实现方法

    这篇文章主要介绍了C#中在WebClient中使用post发送数据实现方法,需要的朋友可以参考下
    2014-08-08
  • c#设计模式 适配器模式详细介绍

    c#设计模式 适配器模式详细介绍

    结构模式(Structural Pattern)描述如何将类或者对象结合在一起形成更大的结构。结构模式描述两种不同的东西:类与类的实例。根据这一点,结构模式可以分为类的结构模式和对象的结构模式
    2012-10-10
  • C#使用GUID(全局统一标识符)

    C#使用GUID(全局统一标识符)

    这篇文章介绍了C#使用GUID(全局统一标识符)的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C#中字符串分割的多种方式

    C#中字符串分割的多种方式

    在C#编程语言中,字符串处理是日常开发中不可或缺的一部分,字符串分割是处理文本数据时常用的操作,它允许我们将一个长字符串分解成多个子字符串,本文给大家介绍了C#中字符串分割的多种方式,需要的朋友可以参考下
    2025-01-01
  • C#之Socket客户端全过程

    C#之Socket客户端全过程

    这篇文章主要介绍了C#之Socket客户端全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • C#实现控制摄像头的类

    C#实现控制摄像头的类

    这篇文章主要介绍了C#实现控制摄像头的类,涉及C#操作摄像头的初始化、抓图、录像等功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • C#清除字符串内空格的方法

    C#清除字符串内空格的方法

    这篇文章主要介绍了C#清除字符串内空格的方法,是C#操作字符串非常实用的技巧,需要的朋友可以参考下
    2014-10-10
  • C#微信公众平台开发之access_token的获取存储与更新

    C#微信公众平台开发之access_token的获取存储与更新

    这篇文章主要介绍了C#微信公众平台开发之access_token的获取存储与更新的相关资料,需要的朋友可以参考下
    2016-03-03

最新评论