董昊(昊子)的专栏

一个系统构架师、系统分析师(努力学习中...)

董昊ID:edisundong
270034次访问,排名215好友10人,关注者49
做最好的自己
edisundong的文章
原创 127 篇
翻译 0 篇
转载 16 篇
评论 259 篇
董昊的公告
 程序人生:

 21岁通过<高级程序员>考试。

 23岁大学毕业,在一家著名手机企业。

 24岁通过<系统分析师>考试。

 开发语言:
 .net从asp+用到.net 3.5
 java业余爱好者

 研究方向:
 目前的研究方向是企业级web开发编译器

 我的联系方式:
 edisundong_163.com
 (_替换成@)

最近评论
shuangziye:我汗啊!
feb9903:你们这些无聊又浮躁的家伙,楼主不过是帖点有用的东西出来和大家分享。至于原创与否,值得在这里大呼小叫么?
edisundong:@r_mosaic
谢谢回复,我学习了
r_mosaic:写得真不错,我收藏了!
r_mosaic:提一些意见:一、在描述线程与进程区别时,先描述线程,即操作系统对线程进行多任务调度;再描述进程,即线程之间是共享地址空间的,进程之间是不共享地址空间的。一个进程启动之后会自动启动一个主线程。这样就把区别描述清楚了。我可能讲得不完全对,请指正。
二、虚拟内存的定义应该直接用 i386 体系结构下的虚地址空间来定义,这样比较明确:即使是禁用了交换文件,虚拟内存机制同样起作用。比如可执行……
文章分类
收藏
    相册
    java
    俱乐部
    宁波.net俱乐部
    宁波.NET俱乐部
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 .net程序员的盲点(五):告诉你一个不一样的new收藏

    新一篇: .net程序员的盲点(六):StringBuilder 和 String 的区别 | 旧一篇: .net程序员的盲点(四):索引器Indexers

    new有三种用法:

    1.             运算符

    2.             修饰符

    3.             泛型中的new()约束

     

    1.    作为运算符,new在普通不过了,也不多说了。

    比如:MyClass myclass=new MyClass();

    2.    作为泛型中的约束符new也很简单,

    在泛型类型定义时,可以使用where指定一些约束,其中一种就是new约束。new 约束要求用作类型实参的类型必须带有公共无参构造器。

    比如:class A<T> where T : new();

    他的作用是告诉编译器只有带有公共无参构造器的类型才能用作T

    3.    重点是作为修饰符的new

    在用作修饰符时,new 关键字可以替换基类方法。

    例如:

    public class BaseC

    {

        public int x;

        public void Invoke() {}

    }

    public class DerivedC : BaseC

    {

        new public void Invoke() {}

    }

    在这个示例中,DerivedC.Invoke 并不是 BaseC.Invoke,有了new它会自己产生一个Invoke而非继承。其中的字段 x 不受影响,它还是会被继承的。

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

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

    示例

    在该例中,基类 BaseC 和派生类 DerivedC 使用相同的字段名 x,从而隐藏了继承字段的值。该示例演示了 new 修饰符的用法。另外还演示了如何使用完全限定名访问基类的隐藏成员。

    using System;

    public class BaseC

    {

        public static int x = 55;

        public static int y = 22;

    }

     

    public class DerivedC : BaseC

    {

        // 这里重新生成了 x,而不是继承的x

        new public static int x = 100;

     

        static void Main()

        {

           

            Console.WriteLine(x);

            // 100

            Console.WriteLine(BaseC.x);

            // 55

            Console.WriteLine(y);

    // 22

     

        }

    }

    输出

    100 55 22

     

     

    发表于 @ 2007年08月17日 21:50:00|评论(loading...)|编辑

    新一篇: .net程序员的盲点(六):StringBuilder 和 String 的区别 | 旧一篇: .net程序员的盲点(四):索引器Indexers

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 董昊