c# new有什么用?
8个回答
展开全部
日常C#编程中经常用到的New关键字。
(1)new 修饰符 用于隐藏基类成员的继承成员。
(2)new 运算符 用于创建对象和调用构造函数。
(3)new 约束 用于在泛型声明中约束可能用作类型参数的参数的类型。
【new 修饰符】
使用 new 修饰符显式隐藏从基类继承的成员。若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并用 new 修饰符修饰它。
请看下面的类:
1 public class MyClass
2
3 {
4
5 public int x;
6
7 public void Invoke() {}
8
9 }
10
在派生类中用 Invoke 名称声明成员会隐藏基类中的 Invoke 方法,即:
1 public class MyDerivedC : MyClass
2
3 {
4
5 new public void Invoke() {}
6
7 }
8
但是,因为字段 x 不是通过类似名隐藏的,所以不会影响该字段。
【new 运算符】
1.用于创建对象和调用构造函数
例:Class_Test MyClass = new Class_Test();
2.也用于为值类型调用默认的构造函数
例:int myInt = new int();
myInt 初始化为 0,它是 int 类型的默认值。该语句的效果等同于:int myInt = 0;
3.不能重载 new 运算符。
4.如果 new 运算符分配内存失败,则它将引发 OutOfMemoryException 异常。
通过继承隐藏名称采用下列形式之一:
1.引入类或结构中的方法隐藏基类中具有相同名称的属性、字段和类型。同时也隐藏具有相同签名的所有基类方法。
2.引入类或结构中的索引器将隐藏具有相同名称的所有基类索引器。
3.在同一成员上同时使用 new 和 override 是错误的。
4.引入类或结构中的常数、指定、属性或类型隐藏具有相同名称的所有基类成员。
注意:在不隐藏继承成员的声明中使用 new 修饰符将生成警告。
(1)new 修饰符 用于隐藏基类成员的继承成员。
(2)new 运算符 用于创建对象和调用构造函数。
(3)new 约束 用于在泛型声明中约束可能用作类型参数的参数的类型。
【new 修饰符】
使用 new 修饰符显式隐藏从基类继承的成员。若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并用 new 修饰符修饰它。
请看下面的类:
1 public class MyClass
2
3 {
4
5 public int x;
6
7 public void Invoke() {}
8
9 }
10
在派生类中用 Invoke 名称声明成员会隐藏基类中的 Invoke 方法,即:
1 public class MyDerivedC : MyClass
2
3 {
4
5 new public void Invoke() {}
6
7 }
8
但是,因为字段 x 不是通过类似名隐藏的,所以不会影响该字段。
【new 运算符】
1.用于创建对象和调用构造函数
例:Class_Test MyClass = new Class_Test();
2.也用于为值类型调用默认的构造函数
例:int myInt = new int();
myInt 初始化为 0,它是 int 类型的默认值。该语句的效果等同于:int myInt = 0;
3.不能重载 new 运算符。
4.如果 new 运算符分配内存失败,则它将引发 OutOfMemoryException 异常。
通过继承隐藏名称采用下列形式之一:
1.引入类或结构中的方法隐藏基类中具有相同名称的属性、字段和类型。同时也隐藏具有相同签名的所有基类方法。
2.引入类或结构中的索引器将隐藏具有相同名称的所有基类索引器。
3.在同一成员上同时使用 new 和 override 是错误的。
4.引入类或结构中的常数、指定、属性或类型隐藏具有相同名称的所有基类成员。
注意:在不隐藏继承成员的声明中使用 new 修饰符将生成警告。
展开全部
简而言之就是用来实例化。
假如:
你定义了一个类叫Person,然后类里面有属性eye,hair,然后还有一个方法Cut()
那么你需要用到Person类里面的属性方法的话,你就必须要先有一个Person的实例。此时就要用到new来实例了。
根据我的假如:可以写如下简单代码,供你参考。
代码:
Class Person //定义一个Person类
{
public string eye;
public string hair;//定义两个属性
public void Cut()//定义Cut方法
{
console.writeline("头发长了,该剪头发了");
}
}
然后你在main()方法里面需要用到Person类,那你就得再里面先实例化Person类,下面就是new的用法了。
Person P=new Person();//利用new实例化了一个Person类的对象P
接着你就可以使用Person类里的属性和方法了。
如:调用Cut方法: P.Cut();
希望可以帮你理解一点!!最好就买入门书,看看咯!!呵呵,讲的比较准确!
假如:
你定义了一个类叫Person,然后类里面有属性eye,hair,然后还有一个方法Cut()
那么你需要用到Person类里面的属性方法的话,你就必须要先有一个Person的实例。此时就要用到new来实例了。
根据我的假如:可以写如下简单代码,供你参考。
代码:
Class Person //定义一个Person类
{
public string eye;
public string hair;//定义两个属性
public void Cut()//定义Cut方法
{
console.writeline("头发长了,该剪头发了");
}
}
然后你在main()方法里面需要用到Person类,那你就得再里面先实例化Person类,下面就是new的用法了。
Person P=new Person();//利用new实例化了一个Person类的对象P
接着你就可以使用Person类里的属性和方法了。
如:调用Cut方法: P.Cut();
希望可以帮你理解一点!!最好就买入门书,看看咯!!呵呵,讲的比较准确!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用来实例化对象隐藏父类成员
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给对象在内存中分配一个地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
实例化对像。跟C++的new有区别(主要是开辟内存空间)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询