c# new关键字的三种用法
来源:互联网 发布:淘宝男士羽绒服好看吗 编辑:程序博客网 时间:2024/05/01 08:57
三种用法如下:
在 C# 中,new 关键字可用作运算符、修饰符或约束。
1)new 运算符:用于创建对象和调用构造函数。
2)new 修饰符:在用作修饰符时,new 关键字可以隐藏从基类继承的成员。
3)new 约束:用于在泛型声明中约束用作类型的参数必须要有Public无参数构造函数。
关于第二种用法看下例:
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方法,输出:2
Console.WriteLine(b.x.ToString());//输出DerivedB的成员x值:2
BaseA a = b;
a.Invoke();//调用BaseA的Invoke方法,输出:1
a.TrueValue = 3;//调用BaseA的属性TrueValue,修改BaseA的成员x的值
Console.WriteLine(a.x.ToString());//输出BaseA的成员x的值:3
Console.WriteLine(b.TrueValue.ToString());//输出DerivedB的成员x的值,仍然是:1
//可见,要想访问被隐藏的基类的成员变量、属性或方法,办法就是将子类造型为父类,然
//后通过基类访问被隐藏的成员变量、属性或方法。
}
}
}
对同一成员同时使用 new 和 override 是错误的做法,因为这两个修饰符的含义互斥。 new 修饰符会用同样的名称创建一个新成员并使原始成员变为隐藏的。 override 修饰符会扩展继承成员的实现。
在不隐藏继承成员的声明中使用 new 修饰符将会生成警告。
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关键字的三种用法
- new关键字的三种用法
- NEW关键字的三种用法
- C# New关键字的用法
- 黑马程序员之C#学习笔记: new关键字的三种用法
- C#中new的三种用法
- New 关键词的三种用法 C#
- C#的New关键字的几种用法
- C#的New关键字的几种用法
- C#的New关键字的几种用法
- C#的New关键字的几种用法
- C#的new关键字的几种用法
- C#的new关键字的几种用法
- App 接口
- 使用Python实现子区域数据分类统计
- Java 日期时间 Date类型,long类型,String类型表现形式的转换
- 微信公众平台接口调试(微信订阅号自动回复接口)
- Ubuntu/kali上安装MySQL,设置远程访问详细教程
- c# new关键字的三种用法
- Android动画之旅(四)----小球拟合动画
- getSystemService
- linux 常用命令学习
- C# 特性(Attributes)
- redis系列(四)数据库
- 如何优化营销邮件的CTA按钮
- 综合转载:socket之KEEPALIVE机制与原理分析
- BC31 , floating point error:domain 错误解决方法