当前位置:首页 > 网络编程 > 软件语言 > .NET > C#中new关键字的三种用法

C#中new关键字的三种用法

点击次数:51 次 发布日期:2008-11-06 08:12:16 作者:源代码网
源代码网推荐
广告载入中

源代码网整理以下三种用法如下:

源代码网整理以下在 C# 中,new 关键字可用作运算符、修饰符或约束。 软件开发网 www.mscto.com

源代码网整理以下1)new 运算符:用于创建对象和调用构造函数。这种大家都比较熟悉,没什么好说的了。

源代码网整理以下2)new 修饰符:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。

源代码网整理以下3)new 约束:用于在泛型声明中约束可能用作类型参数的参数的类型。 软件开发网 www.mscto.com

源代码网整理以下
关于第二种用法看下例:

源代码网整理以下using System;

源代码网整理以下namespace ConsoleApplication1

软件开发网 www.mscto.com

源代码网整理以下{

软件开发网 www.mscto.com

源代码网整理以下    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; }

源代码网整理以下        } 软件开发网 www.mscto.com

源代码网整理以下    }

源代码网整理以下 

源代码网整理以下    class Test

源代码网整理以下    { 软件开发网 www.mscto.com

源代码网整理以下        static void Main(string[] args)

源代码网整理以下        {

源代码网整理以下            DerivedB b = new DerivedB();

源代码网整理以下            b.Invoke();//调用DerivedB的Invoke方法,输出:2

源代码网整理以下            Console.WriteLine(b.x.ToString());//输出DerivedB的成员x值:2

软件开发网 www.mscto.com

源代码网整理以下            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约束指定泛型类声明中的任何类型参数都必须具有公共的无参数构造函数.请看下例:

源代码网整理以下 

源代码网整理以下 

源代码网整理以下using System; 软件开发网 www.mscto.com

源代码网整理以下using System.Collections.Generic;

源代码网整理以下 

源代码网整理以下namespace ConsoleApplication2 软件开发网 www.mscto.com

源代码网整理以下{

源代码网整理以下    public class Employee

源代码网整理以下    {

源代码网整理以下        private string name;

源代码网整理以下        private int id;

源代码网整理以下 

源代码网整理以下        public Employee()

软件开发网 www.mscto.com

源代码网整理以下        {

源代码网整理以下            name = "Temp";

源代码网整理以下            id = 0;

源代码网整理以下        }

源代码网整理以下 

源代码网整理以下        public Employee(string s, int i)

源代码网整理以下        {

源代码网整理以下            name = s;

软件开发网 www.mscto.com

源代码网整理以下            id = i;

软件开发网 www.mscto.com

源代码网整理以下        }

源代码网整理以下 

源代码网整理以下        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();

源代码网整理以下        }

源代码网整理以下    }

软件开发网 www.mscto.com

源代码网整理以下 

源代码网整理以下    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)
会员中心
网络编程
本站推荐
网络编程之精华