c# new的用法
来源:互联网 发布:centos wifi不可用 编辑:程序博客网 时间:2024/05/05 19:47
在 C# 中,new 关键字可用作运算符、修饰符或约束。1)new 运算符:用于创建对象和调用构造函数。这种大家都比较熟悉,没什么好说的了。2)new 修饰符:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。3)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 修饰符修饰它。using System;namespace ConsoleApplication1{public class BaseA{public int x = 1;public void Invoke(){Console.WriteLine(x.ToString());}public int TrueValue{get { return x; }set { x = value; }}}public class DerivedB : BaseA{new public int x = 2;new public void Invoke(){Console.WriteLine(x.ToString());}new public int TrueValue{get { return x; }set { x = value; }}}class Test{static void Main(string[] args){DerivedB b = new DerivedB();b.Invoke();//调用DerivedB的Invoke方法,输出:2Console.WriteLine(b.x.ToString());//输出DerivedB的成员x值:2BaseA a = b;a.Invoke();//调用BaseA的Invoke方法,输出:1a.TrueValue = 3;//调用BaseA的属性TrueValue,修改BaseA的成员x的值Console.WriteLine(a.x.ToString());//输出BaseA的成员x的值:3Console.WriteLine(b.TrueValue.ToString());//输出DerivedB的成员x的值,仍然是:1//可见,要想访问被隐藏的基类的成员变量、属性或方法,办法就是将子类造型为父类,然//后通过基类访问被隐藏的成员变量、属性或方法。}}}三、new约束指定泛型类声明中的任何类型参数都必须具有公共的无参数构造函数.请看下例:using System;using System.Collections.Generic;namespace ConsoleApplication2{public class Employee{private string name;private int id;public Employee(){name = "Temp";id = 0;}public Employee(string s, int i){name = s;id = i;}public string Name{get { return name; }set { name = value; }}public int ID{get { return id; }set { id = value; }}}class ItemFactory<T> where T : new(){public T GetNewItem(){return new T();}}public class Test{public static void Main(){ItemFactory<Employee> EmployeeFactory = new ItemFactory<Employee>();////此处编译器会检查Employee是否具有公有的无参构造函数。//若没有则会有The Employee must have a public parameterless constructor 错误。Console.WriteLine("{0}'ID is {1}.", EmployeeFactory.GetNewItem().Name, EmployeeFactory.GetNewItem().ID);}}}
0 0
- c# new的用法
- C# new的用法
- C#中New的用法
- C# New关键字的用法
- C#中new的三种用法
- New 关键词的三种用法 C#
- C#的New关键字有几种用法
- C#中using和new的用法
- C#中new的用法总结
- C#中 new的几种用法
- C#中new 关键字的用法
- C#中new的几种用法
- c# new关键字的三种用法
- C# new 用法说明
- C# new 用法
- C# new用法总结
- C# new用法总结
- C# new用法总结
- Prim算法详解-源代码
- nsstring常用处理
- HDU 4505
- jquery判断radio选中与否来显示或隐藏某个div
- C++零食:使用Unicode版的预定义宏__FUNCTION__
- c# new的用法
- LaTeX算法排版例子
- hdu2038简易版之最短距离(水题一道)
- 纯虚函数的入门程序
- int类型和string类型的相互转换
- 机器学习算法简介
- 从141125到141205之间
- 索引缓存优点和使用
- 打开任务管理器的多种方法