热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#关键字运算符关键字new

在C#中,new关键字可用作运算符、修饰符或约束。new运算符:用于创建对象和调用构造函数。new修饰符:用于向基类成员隐藏继承成员。ne

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

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

new修饰符:用于向基类成员隐藏继承成员。

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

new运算符

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

Class1 obj = new Class1();

2.用于创建匿名类型的实例。

var query = from cust in customersselect new {Name = cust.Name, Address = cust.PrimaryAddress};

3.用于调用值类型的默认构造函数。

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

注意:为结构声明默认的构造函数是错误的,因为每一个值类型都隐式具有一个公共的默认构造函数。不能重载new运算符
   如果new运算符分配内存失败,将引发异常OutOfMemoryException。

 

new修饰符

在用作修饰符时,new关键字可以显式隐藏从基类继承的成员。隐藏继承的成员时,该成员的派生版本将替换基类版本。虽然可以在不使用new修饰符的情况下隐藏成员,但会生成警告。如果使用new显示隐藏成员,则会取消此名警告,并记录要替换为派生版本这一事实。

对同一成员同时使用new和override是错误的做法,因为这两个修饰符的含义互斥。new修饰符会用同样的名称创建一个新成员并使原始成员变为隐藏的。override修饰符会扩展继承成员的实现。

View Code

public class BaseC
{
public static int x = 55;public static int y = 22;
}
public class DerivedC : BaseC
{
// Hide field 'x'.new public static int x = 100;static void Main(){// Display the new value of x:
Console.WriteLine(x);// Display the hidden value of x:
Console.WriteLine(BaseC.x);// Display the unhidden member y:
Console.WriteLine(y);}
}
/*
Output:
100
55
22
*/

 

new约束(有关更多信息,请参见 类型参数的约束(C# 编程指南))

new约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。如果要使用new约束,则该类型不能为抽象类型。

1.当泛型类创建类型的新实例,请将new约束应用于类型参数。

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

2.当与其他约束一起使用时,new()约束必须最后指定。

public class ItemFactory2 where T : IComparable, new()
{\\... ...
}

 

 

转:https://www.cnblogs.com/yechun/archive/2012/05/03/2480598.html



推荐阅读
  • 动态壁纸 LiveWallPaper:让您的桌面栩栩如生(第二篇)
    在本文中,我们将继续探讨如何开发动态壁纸 LiveWallPaper,使您的桌面更加生动有趣。作为 2010 年 Google 暑期大学生博客分享大赛 Android 篇的一部分,我们将详细介绍 Ed Burnette 的《Hello, Android》第三版中的相关内容,并分享一些实用的开发技巧和经验。通过本篇文章,您将了解到如何利用 Android SDK 创建引人入胜的动态壁纸,提升用户体验。 ... [详细]
  • 探索偶数次幂二项式系数的求和方法及其数学意义 ... [详细]
  • Python 实战:异步爬虫(协程技术)与分布式爬虫(多进程应用)深入解析
    本文将深入探讨 Python 异步爬虫和分布式爬虫的技术细节,重点介绍协程技术和多进程应用在爬虫开发中的实际应用。通过对比多进程和协程的工作原理,帮助读者理解两者在性能和资源利用上的差异,从而在实际项目中做出更合适的选择。文章还将结合具体案例,展示如何高效地实现异步和分布式爬虫,以提升数据抓取的效率和稳定性。 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • 当在 IntelliJ IDEA 中遇到“Sources not found for: XXX”问题时,可以通过命令行执行 `mvn dependency:resolve -Dclassifier=sources` 来解决源代码下载失败的问题。此方法能够有效确保项目依赖的源代码被正确获取,从而便于调试和代码阅读。更多详细信息可参考相关技术文档或官方指南。 ... [详细]
  • Spring框架的核心组件与架构解析 ... [详细]
  • Android Studio 安装指南:详细步骤与常见问题解答
    Android Studio 安装指南:详细步骤与常见问题解答 ... [详细]
  • 2014年3月16日 长沙多所高校联合举办第三次学术交流活动
    2014年3月16日,长沙多所高校联合举办了第三次学术交流活动。此次活动旨在促进各高校间的学术合作与交流,吸引了众多师生参与。交流内容涵盖了计算机科学、工程技术等多个领域,为参会者提供了丰富的学习和讨论机会。 ... [详细]
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
  • SQL Server 2005 在安装过程中通常会伴随 VS2005 一起安装,并且为了便于数据库管理,还会安装 Management Studio Express 管理工具。然而,在实际使用中,用户可能会遇到登录故障。本文综合分析了这些登录问题的常见原因,并提供了多种有效的解决方法,包括检查配置设置、验证账户权限和网络连接等。通过这些措施,用户可以有效地诊断并解决 SQL Server 2005 的登录问题。 ... [详细]
  • 在 C# 中,循环引用问题通常涉及到对象之间的相互引用,这可能会导致垃圾回收器无法正确释放内存。然而,C# 的垃圾回收机制能够处理大多数循环引用的情况,确保内存得到有效管理。对于静态变量和复杂的数据结构,开发者需要特别注意,以避免潜在的内存泄漏。例如,通过使用弱引用或手动断开引用关系,可以有效解决这些问题。 ... [详细]
  • React项目基础教程第五课:深入解析组件间通信机制 ... [详细]
  • 设计实战 | 10个Kotlin项目深度解析:首页模块开发详解
    设计实战 | 10个Kotlin项目深度解析:首页模块开发详解 ... [详细]
  • 本文探讨了Android系统中支持的图像格式及其在不同版本中的兼容性问题,重点涵盖了存储、HTTP传输、相机功能以及SparseArray的应用。文章详细分析了从Android 10 (API 29) 到Android 11 的存储规范变化,并讨论了这些变化对图像处理的影响。此外,还介绍了如何通过系统升级和代码优化来解决版本兼容性问题,以确保应用程序在不同Android版本中稳定运行。 ... [详细]
  • 本文详细介绍了 jQuery 的入门知识与实战应用,首先讲解了如何引入 jQuery 库及入口函数的使用方法,为初学者提供了清晰的操作指南。此外,还深入探讨了 jQuery 在实际项目中的多种应用场景,包括 DOM 操作、事件处理和 AJAX 请求等,帮助读者全面掌握 jQuery 的核心功能与技巧。 ... [详细]
author-avatar
杀手也热血_949
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有