c# new关键字的作用
2025-03-25 11:54 钟铧若岩 阅读(229) 评论(0) 收藏 举报在 C# 里,
new 关键字有多种用途,下面为你详细介绍:1. 创建对象实例
new 最常见的用途是创建类、结构体或者数组的实例。当使用 new 关键字时,系统会为对象分配内存空间,并且调用相应的构造函数对对象进行初始化。using System;
class Person
{
public string Name;
public int Age;
// 构造函数
public Person(string name, int age)
{
Name = name;
Age = age;
}
}
class Program
{
static void Main()
{
// 使用 new 关键字创建 Person 类的实例
Person person = new Person("John", 30);
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
}
代码解释:
在上述代码中,
在上述代码中,
new Person("John", 30) 语句创建了 Person 类的一个新实例,并且调用了 Person 类的构造函数来初始化对象的 Name 和 Age 属性。2. 隐藏基类成员
在派生类中,可以使用
new 关键字隐藏基类中具有相同名称的成员(方法、属性、字段等)。using System;
class BaseClass
{
public void PrintMessage()
{
Console.WriteLine("This is the base class.");
}
}
class DerivedClass : BaseClass
{
// 使用 new 关键字隐藏基类的 PrintMessage 方法
public new void PrintMessage()
{
Console.WriteLine("This is the derived class.");
}
}
class Program
{
static void Main()
{
DerivedClass derived = new DerivedClass();
derived.PrintMessage(); // 调用派生类的方法
((BaseClass)derived).PrintMessage(); // 调用基类的方法
}
}
代码解释:
在
在
DerivedClass 中,new 关键字用于声明一个与基类 BaseClass 中同名的 PrintMessage 方法,从而隐藏了基类的方法。通过不同的对象类型调用该方法,可以看到调用的是不同版本的方法。3. 泛型约束中的 new() 约束
在泛型类型或方法中,可以使用
new() 约束来要求泛型类型参数必须具有无参数的公共构造函数。这样,在泛型代码中就可以使用 new 关键字来创建该类型的实例。
using System;
class MyGenericClass<T> where T : new()
{
public T CreateInstance()
{
return new T();
}
}
class MyClass
{
public MyClass()
{
Console.WriteLine("MyClass instance created.");
}
}
class Program
{
static void Main()
{
MyGenericClass<MyClass> generic = new MyGenericClass<MyClass>();
MyClass instance = generic.CreateInstance();
}
}
代码解释:
在
在
MyGenericClass<T> 中,where T : new() 约束表明类型参数 T 必须有一个无参数的公共构造函数。在 CreateInstance 方法中,就可以使用 new T() 来创建 T 类型的实例。4. 创建匿名类型
new 关键字还能用于创建匿名类型,匿名类型是一种临时的数据类型,它可以让你快速定义一个包含一组属性的对象,而无需显式定义一个类。using System;
class Program
{
static void Main()
{
// 创建匿名类型的实例
var person = new { Name = "Alice", Age = 25 };
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
}
代码解释:
在上述代码中,new { Name = "Alice", Age = 25 } 创建了一个匿名类型的对象,该对象包含 Name 和 Age 两个属性。通过 var 关键字来隐式声明变量 person 的类型。
浙公网安备 33010602011771号