`
cdragon
  • 浏览: 79187 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

effective hierarchy(一)之 C#中的new

阅读更多
MSDN(c#2.0):
在msdn中,指出new的三种用法。即,作为操作符(operator)、修改符(modifier)、约束(constraint)使用。

一、new操作符用于创建
(1)在堆迭(heap,可以想象为一面墙倒塌后砖头间的堆叠状;而stack则是线性描述)上,使用newobj命令创建对象并显式调用构建(constructor)。
     如,myclass mytest= new myclass();
(2)对于值类型(value type),new使用initobj命令,隐式调用构建,用来初始化值。
   如,int myint = new int();//相当于int myint = 0;

注意事项:
(a)不能为结构(struct)声明默认的构建
(b)值类型对象创建于栈,如结构;引用类型对象创建于堆(heap)
(c)new不能被过载(overloaded)
(d)new操作符不能定位内存时,会抛出异常OutOfMemoryException

二、new修改符用于派生类中的基类隐藏
(1)new用于派生类中,强制隐藏继承来的(inherited)基类成员(当然是同名的)。
(2)new用于隐藏继承时,遵守以下规则:
a/对于类或结构的常量、字段、属性以及第一次引用的类型(type)-隐藏基类成员;
b/对于类或结构第一次引用的函数-用来隐藏属性、字段和类型;对于相同签名的函数,则隐藏整个函数;
c/对于类或结构第一次引用的索引器-相同的签名(same signature)隐藏基类整个索引器;
d/对于嵌套类-在继承时,new隐藏基类的成员。

注意事项:
(1)对于继承关系的同名成员,如基类的虚拟方法机制,不允许同时使用关键字new和override,两者效果等效;
(2)对于继承关系的同名成员,在声明时,如果不显式使用new来隐藏继承的成员,会产生编译器警告;

主要用途示例:
// cs_modifier_new.cs
// The new modifier
using System;
public class MyBaseC 
{
   public static int x = 55;
   public static int y = 22;
}

public class MyDerivedC : MyBaseC 
{
   new public static int x = 100;   // Name hiding
   public static void Main() 
   {
      // Display the overlapping value of x:
      Console.WriteLine(x);

      // Access the hidden value of x:
      Console.WriteLine(MyBaseC.x);

      // Display the unhidden member y:
      Console.WriteLine(y);
   }
}
///output:
///100
///55
///22


三、约束
(1)对泛型参数的类型多态性进行限制,类型参数(type argument)必须使用公共(public)无参(parameterless)的构建方法(即公共的、默认构造函数)来建立。见示例1。<注,这点似乎比较低极,为什么不能带参呢?请大家讨论。>
(2)new约束与其它形式的约束一起时,new约束须在最后出现。见示例2。

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


示例2:
using System;
public class ItemFactory<T>
    where T : IComparable, new()
{
}


蕴含:new,即新,意味着该关键字有优秀的添加、删除能力:
(1)处在创建过程
(2)没有被使用或拥有
(3)替代原物,原物不存在,或原物不再有用.

致用:
~要“新”一个物件时,使用new好了。
~一般用对象的无参构建来创建,如class_anyThing myclass = new class_anyThing();有参数时,在圆括号中放参数吧。
~形成(泛型)约束时,忽略掉类型,简写声明为new()。
分享到:
评论

相关推荐

    Android 实用工具Hierarchy Viewer实战

    Android 开发中,UI 分析工具 Hierarchy Viewer 是一个非常有用的工具,可以帮助开发者快速、方便地设计、调试和调整界面,提高用户的开发效率。本文将详细介绍如何使用 Hierarchy Viewer 工具在 Android 开发过程中...

    Hierarchy面板管理插件(Unity)

    在Unity游戏引擎中,"Hierarchy面板管理插件"是用来增强Unity内置Hierarchy面板功能的重要工具,目的是提高场景管理和编辑效率。本压缩包包含了两个这样的插件:Hierarchy PRO和QHierarchy。 Hierarchy PRO是一个...

    SAP BW Hierarchy Extractor

    本篇文档将详细介绍如何为员工及其部门经理创建一个层次数据源(Hierarchy Extractor)。通过这个层次数据源,管理者可以方便地获取到他们直接下属的信息以及这些下属所负责或有权访问的数据。此文档适用于运行ECC 5.0...

    android工具Hierarchy_Viewer命令详解

    Hierarchy Viewer是Android SDK中自带的一款强大的UI设计与检测工具。它位于Android SDK的`tools`目录下,文件名为`hierarchyviewer.bat`。对于Android开发者来说,这是一个不可或缺的工具,能够帮助他们在开发过程...

    Android View Hierarchy,解决View Hierarchy不能启动

    解决这个启动 View Hierarchy时的这个bug: hierarchy viewer unable to debug device

    c#+opencvc#实现的图像边界检测和识别全套源代码

    首先,我们要明白C#是一种广泛使用的编程语言,尤其在Windows应用开发中,而OpenCV则是一个强大的计算机视觉库,它提供了丰富的图像处理和计算机视觉功能。 标题中的"图像边界检测和识别"涉及到的主要技术是边缘...

    Unity 提取并拷贝物体Hierarchy路径

    效果及使用方法:https://blog.csdn.net/qq_26318597/article/details/131373576 1.导入插件包 2.选中Hierarchy中的物体 3.右键选择“复制Hierarchy路径” 4.Ctrl + V 粘贴

    c#编写的小游戏c#GameCourse

    【描述】中的重复内容"c#编写的小游戏c#编写的小游戏c#GameCoursec#GameCoursec#GameCoursec#GameCourse"似乎是一种错误,但可以理解为强调课程的重点是C#编程语言在游戏开发中的应用。通过学习这个课程,学员可以...

    c#-OpenCV目标移动检测

    在IT行业中,C#是一种广泛使用的编程语言,尤其在Windows平台的应用开发中。结合OpenCV库,我们可以利用C#实现强大的计算机视觉功能,比如目标移动检测。本篇将深入探讨如何利用C#与OpenCV进行目标移动检测。 ...

    Unity中C#编程学习指南训练视频教程

    ### Unity中C#编程学习指南训练视频教程知识点...通过以上内容的学习,开发者不仅能够熟练掌握Unity编辑器的基本操作和C#编程技巧,还能深入了解游戏开发过程中的各个细节,为成为一名优秀的游戏开发者打下坚实的基础。

    IRQ hierarchy的初始化及构建过程详解

    IRQ hierarchy 是指系统中所有 IRQ 的组织结构,在系统启动过程中,IRQ hierarchy 需要被正确地初始化和构建,以便系统能够正确地响应外部事件。 在了解 IRQ hierarchy 的初始化及构建过程之前,需要先了解三个基本...

    Hierarchy viewer的运行原理介绍

    #### 一、Hierarchy Viewer概览 Hierarchy Viewer是一款由Google提供的强大工具,专为Android开发者设计,旨在辅助界面设计、调试及优化工作流程。通过直观地展示应用UI的层级结构,它使得开发者能够轻松识别布局...

    Unity Hierarchy面板增强插件 QHierarchy v4.4

    在Unity中,Hierarchy面板是一个至关重要的组成部分,它显示了场景中的所有游戏对象及其层次结构。QHierarchy是一款第三方插件,旨在增强Unity的默认Hierarchy面板,提高开发效率。QHierarchy v4.4是对该插件的最新...

    Enhanced_Hierarchy_2.0_v2.4.5.unitypackage

    Enhanced_Hierarchy_2.0_v2.4.5.unitypackage 最新版本哦 正版

    Hierarchy PRO 2021 v2021.1u9.unitypackage

    Hierarchy PRO 2021 v2021.1u9

    模拟Unity中的Hierarchy层级面板功能

    主要实现:给定对象自动生成层级对象(包含子物体) ,自动刷新层级排序,Ctrl多选,Shift多选 ,双击重命名选中对象 ,按下不放拖动改变层级关系,多选同时改变多个对象层级等功能。

    Unity 层级编辑器插件最新版 Hierarchy PRO v2019.3p4

    在Unity中,"层级编辑器"(Hierarchy)是至关重要的一个部分,它允许开发者组织和管理场景中的游戏对象。Hierarchy PRO v2019.3p4就是针对这个核心组件的一个增强插件,它提升了层次结构编辑的效率和用户体验。 ...

    C#.net层次分析法中的判断矩阵构建

    在C#.NET编程环境中,层次分析法(Analytic Hierarchy Process,AHP)是一种非常有用的决策分析工具。它通过将复杂的问题分解为一系列层次结构,然后对各层次之间的元素进行比较,以帮助决策者确定最优选择。在这个...

Global site tag (gtag.js) - Google Analytics