黑马程序员技术交流社区

标题: 关于new关键字的用法 [打印本页]

作者: 董超    时间: 2012-5-25 10:39
标题: 关于new关键字的用法
看到代码的很多地方都要用到new关键字,比如OpenFileDialog   dig   =   new   OpenFileDialog();  虽然知道要用 但是不知道为什么要用new,为什么不能直接使用那个方法 而要new一下呢?
作者: 喻健    时间: 2012-5-25 10:45
OpenFileDialog 是一个类型,new关键字是用来实例化一个类型,得到该类的一个实例。再来调用类中的方法或者其他元素。其他的类也是一样的。静态类可以直接用类名调用里面的元素。
作者: 张雪风    时间: 2012-5-25 11:02
当创建的类前面有static时  是静态类 需要使用new进行实例化,
前面没有加static 定义的类 例如Tostring();
public override string ToString();
可以 s.ToString();使用
作者: 熊华明    时间: 2012-5-25 15:43
new是用来给OpenFileDialog分配内存空间同时创建一个OpenFileDialog对象
作者: 朱亮辉    时间: 2012-5-25 18:13
new关键字的作用
1、对象的初始化 例如:OpenFileDialog   dig   =   new   OpenFileDialog();就是对类的实例化,如果不用new初始化直接访问你可以将对象定义成静态对象,只要加上static关键字。
2、隐藏基类的对象。给你写一个例子

class Program
    {
        static void Main(string[] args)
        {
            B b = new B();
            b.PrintName();
            Console.ReadKey();
        }
    }

    public class A
    {
        public void PrintName()
        {
            Console.WriteLine("我的名字叫A");
        }
    }
    public class B : A
    {
        new public void PrintName()
        {
            Console.WriteLine("我的名字叫B");
        }
    }


输出结果是:我的名字叫B。代码很简单失望看的懂,不懂的话我再跟你解释!
作者: 高宜    时间: 2012-5-26 09:39
本帖最后由 高宜 于 2012-5-26 09:56 编辑
朱亮辉 发表于 2012-5-25 18:13
new关键字的作用
1、对象的初始化 例如:OpenFileDialog   dig   =   new   OpenFileDialog();就是对类的实 ...

隐藏基类对象用于什么方面了?
继承重写父类的方法与上述方法有什么区别
作者: G_Xiaotao    时间: 2012-5-26 10:22
new关键字的意思就是指向这个类  若果没有new 就相当与创建了一个实例  但是没有指向这个类!
作者: 朱亮辉    时间: 2012-5-26 15:47
高宜 发表于 2012-5-26 09:39
隐藏基类对象用于什么方面了?
继承重写父类的方法与上述方法有什么区别 ...

隐藏基类对象是为了不想让别人从派生类访问基类方法,重写是重新定义基类方法的行为,改变了基类的运行方式,上述的只是将基类的方法对外隐藏了,功能还是原来的功能。明白了吗?
作者: 陌花╮有意、    时间: 2012-5-26 16:24
用new关键字是在堆内存分配空间给该类实例化一个对象,被静态static修饰的类的成员才可以不实例化直接用类名调用
作者: 高宜    时间: 2012-5-29 00:14
朱亮辉 发表于 2012-5-26 15:47
隐藏基类对象是为了不想让别人从派生类访问基类方法,重写是重新定义基类方法的行为,改变了基类的运行方 ...

明白了 谢谢指导
作者: 错,谁的错丶    时间: 2012-5-29 11:28
这位仁兄写的代码,new关键字在这是作为一个 new 运算符  用于创建对象和调用构造函数。其外,还可以作为   new 修饰符    用于向基类成员隐藏继承成员。
new 约束    用于在泛型声明中约束可能用作类型参数的参数的类型。
作者: G_Xiaotao    时间: 2012-5-29 13:32
今天又补充了一点知识  声明类类型了变量所分配的内存是用来保存引用的 而不是用来保存类对象实际数据的  要为实际数据分配内存 所以血药用到new运算符!
作者: G_Xiaotao    时间: 2012-5-29 13:33
new 为制定类型的实例分配并初始化内存 依据类型的不同 从栈或堆里分配!
作者: 刘豪    时间: 2012-5-29 17:00
OpenFileDialog   dig ,  只是声明了OpenFileDialog类型的一用,用来指向一个托管堆中的对象,而托管堆中的对象必须用new来产生。
作者: 卞云鹏    时间: 2012-7-1 02:12
new是新的意思,它是用来创建对象的,或者是一个引用,一般是用在引用类型的创建和函数的创建,例如一个类person
person per = new person();此时new 的作用相当于就是初始化的功能,并且来生产一个实例,这个实例就是per,然后用per来
调用person中的方法,和字段,以及属性,注意:new 不用在值类型中,例如 int a;就不需要new 因为值类型只是在分配好的
内存空间中直接创建,不需要用new来分配引用内存。
同理:OpenFileDialog   dig   =   new   OpenFileDialog() dig就是OpenFileDialog类型的一个实例,通过dig来调用OpenFileDialog中的字段方法以及属性




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2