黑马程序员技术交流社区

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

作者: naruto2205    时间: 2013-12-16 21:43
标题: new关键字的作用
本帖最后由 naruto2205 于 2013-12-17 23:26 编辑

在数组定义中用到了new,例如int[] i=new int[] {1,2,3,4,5,6};还可以不用new如int[] i={1,2,3,4,5,6},这两中定义方法有区别没,new都有什么功能呢?

作者: 黑色海    时间: 2013-12-16 21:54
数组这来看应该是没有区别的。
new 关键字用来初始化对象,隐藏父类函数,在泛型中形成约束。
作者: 许庭洲    时间: 2013-12-16 21:59
new操作符用于创建一个新的类型实例,它有三种形式:
1. 对象创建表达式, 用于创建一个类类型或值类型的实例;
2. 数组创建表达式,用于创建一个数组类型实例;
3. 代表创建表达式,用于创建一个新的代表类型实例。
作者: y494890511    时间: 2013-12-16 22:06
1.new int[] {1,2,3,4,5,6};new是创建一个int的
2.int[] i={1,2,3,4,5,6},是简写省略了new
3.new可以初始化对象
4.new可以隐藏基类方法

作者: 诱惑灵魂    时间: 2013-12-16 23:30
在c#中,new关键字有3种用法
1.  Person p=new Person()  可以实例化对象

2.  new 关键字可以隐藏父类的方法

3.new  关键字约束   用于在泛型声明中约束可能用作类型参数的参数的类型
作者: haxyek    时间: 2013-12-17 00:18
许庭洲 发表于 2013-12-16 21:59
new操作符用于创建一个新的类型实例,它有三种形式:
1. 对象创建表达式, 用于创建一个类类型或值类型的实 ...

3. 代表创建表达式,用于创建一个新的代表类型实例。
这个一点能否举个例子?
作者: 如远行客    时间: 2013-12-17 08:04
这两种定义数组的方法是没有区别的。new关键字是用来创建实例的,在类的继承中,new关键字还可以用来隐藏基类的方法,以实现多态。
作者: 醒梦    时间: 2013-12-17 09:48
New关键字主要的功能是用来创建对象的;
定义数组的时候,使用int[] i=new int[] {1,2,3,4,5,6};//创建一个int数组对象并对其赋值。
不添加new关键字,int[] i={1,2,3,4,5,6}这是一种简写,同样是用new实例化,不过省略了new。
这个两种定义方法都是正确的,只是完整与简写的区别,就如同foreach(int i in arr)遍历和for(******)循环遍历一样
作者: 师弟    时间: 2013-12-17 13:20
不用new就是数组的简写,用时都一样
作者: 红鹰(Jake)    时间: 2013-12-17 14:19
new有两种用法:
1、通过new创建一个新的引用对象,一般都是引用类型的数据,比如数组、类
2、对父类的方法进行隐藏,如果没有new编译器会提示警告信息,但也不是错误的信息。这也是一种多太的用法。
作者: 雨中恋人    时间: 2013-12-17 17:44
new 主要是创建一个新的对象用的
用int[] i=new int[] {12,23,3,64,5,6} 使用这个是对其创建对象而且赋值;
而int[] i= {12,23,3,64,5,6} 看上去只是对这个赋值 其实也创建了对象 只是简写了

new 还有两个作用
new 关键字可以隐藏父类的方法
new  关键字约束   用于在泛型声明中约束可能用作类型参数的参数的类型
作者: 上帝的尊严    时间: 2013-12-17 19:02
开辟空间,创建对象 调用构造函数,返回引用地址
作者: 丑男先生。    时间: 2013-12-17 19:25
要是上面的你看不懂,我就给你解释下它最简单的例子哈,希望对你有帮助、
new 嘛
实例化一个类。
比如有一个类叫汽车。你现在想在程序中买一辆,所以你用new来买了一辆汽车,这辆车你得给你找个名字,比如宝马。呵呵所以就成
汽车 宝马 = new 汽车

你有钱了,你要再来一辆

汽车 奔驰 = new 汽车

但他们都有汽车该有的东西:四个轮子,一个方向盘,发动机,车门。所以都是汽车一类的东西。

你看来还没有理解c#的本质,可以这样,c#所有东西全都是类,一个继承另一个,子类继承父类。
连string都是个类。申明一个字符串变量,就是实例化一个string类。

实例化类这个嘛不是c#才有问题,是面向对象的问题。
一个包装好了的功能的代码块就可以作为一个类。但你不能直接用它,因为面向对象概念中是不允许随便修改类的内容的。要用你就要实例化。就像汽车这个类。你要用行,但你不能改了汽的一些基本性质上的东西。比如你不能让四个轮子变成只有两个。你不能却掉方向盘。但是你不甘心啊,所以你实例化了,系统就给你一个类似于汽车镜像一样的汽车,他有了汽车通有的东西。你自己给他一个名字,以后你就可以随意让车开开停停,改改装装,你说我要加一排灯行,你可以加在你的实例上,但不要加到类上,因为你一加到类上了,别人实例化了的汽车也有一排的灯了,人家又不喜欢怎么办呢。

其实你申明字符串变量的时候一般没有用到new因为这种东西有点儿不一样,系统准许你不用new来声明,直接用
string 变量名
就行了
但用new也没有错,一样是可以的。

c#就是有强大的类库,什么意思呢,就是基本上所有你要完成的程序都可以用c#类库(有很多很多类),实例化你要用的。拼起来就行了。绝大多数类还是要用new的。

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

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

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

new 运算符

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

例:Class_Test MyClass = new Class_Test();

2.也用于为值类型调用默认的构造函数

例:int myInt = new int();

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

3.不能重载 new 运算符。

4.如果 new 运算符分配内存失败,则它将引发 OutOfMemoryException 异常。

new 修饰符

使用 new 修饰符显式隐藏从基类继承的成员。若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并用 new 修饰符修饰它。
  哈哈,有什么不懂大家共同交流,
为进黑马而努力着!!!




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