35.new关键字的作用
35.1 题目
C#中new关键字的作用(至少说出3种)。
35.2 深入解析
在C#中,new 关键字有多种用途,其中至少包括以下三种:
创建新对象:
- 最基本的用途是使用
new关键字来实例化一个类,创建新的对象。例如:MyClass obj = new MyClass();
- 最基本的用途是使用
方法隐藏:
- 当在子类中声明与父类非虚成员同名时,使用
new隐藏基类成员;这与override重写virtual成员不同,通过父类引用调用时仍执行基类实现。例如:class Parent { public void Print() { Console.WriteLine("Parent class method"); } } class Child : Parent { public new void Print() { Console.WriteLine("Child class method"); } }
- 当在子类中声明与父类非虚成员同名时,使用
泛型约束中使用new关键词:
- 在泛型约束中使用
new关键字表示需要无参构造函数的类型参数。这种约束要求泛型类型参数必须具有公共的无参数构造函数。例如:public class MyClass<T> where T : new() { // T必须具有无参数构造函数 }
- 在泛型约束中使用
new 关键字在不同的语境中有不同的作用,但总体来说,它用于实例化对象、方法隐藏以及泛型约束中表示需要无参数构造函数的类型参数。
35.3 答题示例
“
new关键字在 C# 中常见用途有:
- 实例化对象:
var obj = new MyClass();分配堆内存并调用构造函数;- 方法隐藏:在子类中使用
public new void Foo()隐藏基类同名方法;- 泛型约束:
where T : new()要求类型参数必须有公共无参构造函数;- 初始化数组:
int[] arr = new int[10];分配并初始化数组;- 创建匿名类型:
var anon = new { Name = "A", Age = 1 };在编译期自动生成类并实例化。”
35.4 关键词联想
- 实例化 (
new MyClass()) 隐藏(base.Member)(new void Method())- 泛型约束 (
where T : new()) - 数组分配 (
new T[n]) - 匿名类型 (
new { ... }) - 堆内存
- 构造函数
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com