c#

位置:IT落伍者 >> c# >> 浏览文章

C#编程中的 New 关键词的几种用法


发布日期:2024年01月21日
 
C#编程中的 New 关键词的几种用法
前段时间一个朋友问到C#的New关键字有几种用法虽说在日常编程中经常用到这个小家伙但它到底有几种用法还真没有留意过现将从网上总结出的资料记下以供同仁学习

()new 运算符 用于创建对象和调用构造函数

()new 修饰符 用于隐藏基类成员的继承成员

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

new 运算符

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

Class_Test MyClass = new Class_Test();

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

int myInt = new int();

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

不能重载 new 运算符

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

new 修饰符

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

请看下面的类

以下是引用片段

publicclassMyClass

{

publicintx;

publicvoidInvoke(){}

}

在派生类中用 Invoke 名称声明成员会隐藏基类中的 Invoke 方法

以下是引用片段

publicclassMyDerivedC:MyClass

{

newpublicvoidInvoke(){}

}

但是因为字段 x 不是通过类似名隐藏的所以不会影响该字段

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

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

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

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

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

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

示例

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

以下是引用片段

usingSystem;

publicclassMyBaseC

{

publicclassMyClass

{

publicintx=;

publicinty;

}

}

publicclassMyDerivedC:MyBaseC

{

newpublicclassMyClass//nestedtypehidingthebasetypemembers

{

publicintx=;

publicinty;

publicintz;

}

publicstaticvoidMain()

{

//Creatingobjectfromtheoverlappingclass:

MyClassS=newMyClass();

//Creatingobjectfromthehiddenclass:

MyBaseCMyClassS=newMyBaseCMyClass();

ConsoleWriteLine(Sx);

ConsoleWriteLine(Sx);

}

}

输出

上一篇:.NET应用框架设计实践和概述

下一篇:用VisualStudio2005生成浏览器帮助对象