在C#中,new关键字可用作运算符、修饰符或约束。
new运算符
用于创建对象和调用构造函数。
new修饰符
用于向基类成员隐藏继承成员。
new约束
用于在泛型声明中约束可能用作类型参数的参数的类型。
new修饰符(C#参考)
在用作修饰符时,new关键字可以显式隐藏从基类继承的成员。隐藏继承的成员意味着该成员的派生版本将替换基类版本。在不使用new修饰符的情况下隐藏成员是允许的,但会生成警告。使用new显式隐藏成员会取消此警告,并记录代之以派生版本这一事实。
若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并使用new修饰符修饰该成员
new运算符(C#参考)
1.用于创建对象和调用构造函数。例如:
Class1o=newClass1();
2.也用于为值类型调用默认的构造函数
例:intmyInt=newint();
myInt初始化为0,它是int类型的默认值。该语句的效果等同于:intmyInt=0;
3.不能重载new运算符。
4.如果new运算符分配内存失败,则它将引发OutOfMemoryException异常
new约束(C#参考)
new约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。当泛型类创建类型的新实例时,将此约束应用于类型参数,如下面的示例所示:
classItemFactory<T>whereT:new() { publicTGetNewItem() { returnnewT(); } }
通过继承隐藏名称采用下列形式之一:
1.引入类或结构中的常数、指定、属性或类型隐藏具有相同名称的所有基类成员。
2.引入类或结构中的方法隐藏基类中具有相同名称的属性、字段和类型。同时也隐藏具有相同签名的所有基类方法。
3.引入类或结构中的索引器将隐藏具有相同名称的所有基类索引器。
4.在同一成员上同时使用new和override是错误的。
注意:在不隐藏继承成员的声明中使用new修饰符将生成警告。
示例
在该例中,嵌套类MyClass隐藏了基类中具有相同名称的类。该例不仅说明了如何使用完全限定名访问隐藏类成员,同时也说明了如何使用new修饰符消除警告消息。
上述就是C#学习教程:C#中new的几种用法详解分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)! usingSystem; publicclassMyBaseC { publicclassMyClass { publicintx=200; publicinty; } } publicclassMyDerivedC:MyBaseC { newpublicclassMyClass//nestedtypehidingthebasetypemembers { publicintx=100; publicinty; publicintz; } publicstaticvoidMain() { //Creatingobjectfromtheoverlappingclass: MyClassS1=newMyClass(); //Creatingobjectfromthehiddenclass: MyBaseC.MyClassS2=newMyBaseC.MyClass(); Console.WriteLine(S1.x); Console.WriteLine(S2.x); } } 输出 100 200
您可能感兴趣的文章:详解C#用new和override来实现抽象类的重写区别深入理解C#中new、override、virtual关键字的区别C#基础知识之new关键字介绍C#中Override关键字和New关键字的用法详解C#中new和override的区别个人
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/907737.html