A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 董超 中级黑马   /  2012-5-25 10:39  /  3230 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看到代码的很多地方都要用到new关键字,比如OpenFileDialog   dig   =   new   OpenFileDialog();  虽然知道要用 但是不知道为什么要用new,为什么不能直接使用那个方法 而要new一下呢?

点评

要实例化一个对象就要用New来创建,静态方法无需用New创建。直接使用  发表于 2012-5-31 08:25

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

14 个回复

倒序浏览
OpenFileDialog 是一个类型,new关键字是用来实例化一个类型,得到该类的一个实例。再来调用类中的方法或者其他元素。其他的类也是一样的。静态类可以直接用类名调用里面的元素。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
当创建的类前面有static时  是静态类 需要使用new进行实例化,
前面没有加static 定义的类 例如Tostring();
public override string ToString();
可以 s.ToString();使用

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
new是用来给OpenFileDialog分配内存空间同时创建一个OpenFileDialog对象

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
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。代码很简单失望看的懂,不懂的话我再跟你解释!

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
本帖最后由 高宜 于 2012-5-26 09:56 编辑
朱亮辉 发表于 2012-5-25 18:13
new关键字的作用
1、对象的初始化 例如:OpenFileDialog   dig   =   new   OpenFileDialog();就是对类的实 ...

隐藏基类对象用于什么方面了?
继承重写父类的方法与上述方法有什么区别
回复 使用道具 举报
new关键字的意思就是指向这个类  若果没有new 就相当与创建了一个实例  但是没有指向这个类!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
高宜 发表于 2012-5-26 09:39
隐藏基类对象用于什么方面了?
继承重写父类的方法与上述方法有什么区别 ...

隐藏基类对象是为了不想让别人从派生类访问基类方法,重写是重新定义基类方法的行为,改变了基类的运行方式,上述的只是将基类的方法对外隐藏了,功能还是原来的功能。明白了吗?
回复 使用道具 举报
用new关键字是在堆内存分配空间给该类实例化一个对象,被静态static修饰的类的成员才可以不实例化直接用类名调用

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
朱亮辉 发表于 2012-5-26 15:47
隐藏基类对象是为了不想让别人从派生类访问基类方法,重写是重新定义基类方法的行为,改变了基类的运行方 ...

明白了 谢谢指导
回复 使用道具 举报
这位仁兄写的代码,new关键字在这是作为一个 new 运算符  用于创建对象和调用构造函数。其外,还可以作为   new 修饰符    用于向基类成员隐藏继承成员。
new 约束    用于在泛型声明中约束可能用作类型参数的参数的类型。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
今天又补充了一点知识  声明类类型了变量所分配的内存是用来保存引用的 而不是用来保存类对象实际数据的  要为实际数据分配内存 所以血药用到new运算符!
回复 使用道具 举报
new 为制定类型的实例分配并初始化内存 依据类型的不同 从栈或堆里分配!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
OpenFileDialog   dig ,  只是声明了OpenFileDialog类型的一用,用来指向一个托管堆中的对象,而托管堆中的对象必须用new来产生。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
new是新的意思,它是用来创建对象的,或者是一个引用,一般是用在引用类型的创建和函数的创建,例如一个类person
person per = new person();此时new 的作用相当于就是初始化的功能,并且来生产一个实例,这个实例就是per,然后用per来
调用person中的方法,和字段,以及属性,注意:new 不用在值类型中,例如 int a;就不需要new 因为值类型只是在分配好的
内存空间中直接创建,不需要用new来分配引用内存。
同理:OpenFileDialog   dig   =   new   OpenFileDialog() dig就是OpenFileDialog类型的一个实例,通过dig来调用OpenFileDialog中的字段方法以及属性

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马