C#中new的几种用法详解
一、定义
new 关键字在 C# 中有多种用法,主要的包括以下几种:
- 创建新的对象实例。
- 隐藏从基类继承的成员。
- 使用缺省值初始化值类型的实例。
- 在泛型类型参数限制约束中指定特定的构造函数。
二、创建新的对象实例
在 C# 中,new 关键字最常用的用法就是创建新的对象实例。我们需要通过 new 关键字和类名来创建对象实例。
下面是一个简单的示例:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
var person = new Person();
person.Name = "张三";
person.Age = 18;
在上面的示例中,我们使用 new 关键字和 Person 类名来创建新的 Person 对象实例,并给 Name 和 Age 属性赋值。
三、隐藏从基类继承的成员
在 C# 中,我们可以使用 new 关键字隐藏从基类继承的成员。这样我们可以在派生类中定义一个与基类成员同名的成员,以此来隐藏基类的成员。
下面是一个示例:
public class Animal
{
public void Move()
{
Console.WriteLine("Animal is moving.");
}
}
public class Cat : Animal
{
public new void Move()
{
Console.WriteLine("Cat is moving.");
}
}
Animal animal = new Animal();
Cat cat = new Cat();
animal.Move(); // 输出 "Animal is moving."
cat.Move(); // 输出 "Cat is moving."
在上面的示例中,我们定义了 Animal 和 Cat 两个类,Cat 类继承自 Animal 类。我们使用 new 关键字在 Cat 类中隐藏了从 Animal 类继承的 Move 方法。于是在调用 cat.Move() 方法时,输出 "Cat is moving."。
四、使用缺省值初始化值类型的实例
在 C# 中,new 关键字也可以用来使用缺省值初始化值类型的实例。例如,我们可以使用 new 关键字来初始化一个 int 类型的变量,此时该变量的值将被默认初始化为 0。
下面是一个示例:
int num = new int();
string str = new string();
在上面的示例中,我们使用 new 关键字来初始化一个 int 类型的变量和一个 string 类型的变量。此时 num 的值被默认初始化为 0,str 的值被默认初始化为空字符串。
五、在泛型类型参数限制约束中指定特定的构造函数
C# 中,我们可以在泛型类型参数限制约束中使用 new() 来要求泛型类型参数必须要具有一个公共的无参数构造函数。我们也可以使用 new() 关键字来强制要求泛型类型参数必须要具有一个指定的构造函数。
下面是一个示例:
public interface IMessage<T> where T:class,new()
{
void Send();
}
public class EmailMessage<T> : IMessage<T> where T : Person, new()
{
public void Send()
{
Console.WriteLine("Email message sent to {0}", new T().Name);
}
}
var email = new EmailMessage<Person>();
email.Send();
在上面的示例中,我们定义了一个 IMessage 接口和一个 EmailMessage 类,EmailMessage 类实现了 IMessage 接口。在 EmailMessage 类中,我们使用 new() 关键字要求泛型类型参数必须具有一个 Person 类型的无参数构造函数,从而调用 Person 类型的 Name 属性在 Send 方法中输出。
最后,我们创建了一个 EmailMessage
六、总结
通过本文,我们详细讲解了 C# 中 new 关键字的几种用法,主要包括创建新对象实例、隐藏从基类继承的成员、使用缺省值初始化值类型的实例以及在泛型类型参数限制约束中指定特定的构造函数。希望本文能为广大开发者提供有关 C# 中 new 关键字的详细攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中new的几种用法详解 - Python技术站