zoukankan      html  css  js  c++  java
  • C#中new的三种用法

    在 C# 中,new 关键字可用作运算符、修饰符或约束。
    1)new 运算符:用于创建对象和调用构造函数。
    2)new 修饰符:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。
    3)new 约束:用于在泛型声明中约束可能用作类型参数的参数的类型
     
    public class Program: BaseClass
        {
            new public class Test//2、new修饰符 显式隐藏从基类继承的成员
            {
                public int x = 2;
                public int y = 20;
                public int z = 40;
            }
    
            static void Main(string[] args)
            {
                var c1 = new Test();//1、new操作符 创建对象和调用构造函数
                var c2 = new BaseClass.Test();
                Console.WriteLine(c1.x);//2
                Console.WriteLine(c2.y);//10
                Console.ReadKey();
            }
        }
    
        public class BaseClass
        {
            public class Test
            {
               public int x = 0;
               public int y = 10;
            }   
        }

    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);
            }
        }
    }
  • 相关阅读:
    ORA-00603 ORA-27504 ORA-27300 ORA-27301 ORA-27302
    ORA-03137: TTC protocol internal error : [12333] [7] [9] [50] [] [] [] []
    adg 搭建备库,归档缺失(GAP)
    redis 脚本扫描
    Oracle 查询历史连接主机信息
    11G RAC 参数文件损坏
    oracle 监控索引的使用状况
    11G ORA-07445 [evaopn3()+135]
    java共享锁实现原理及CountDownLatch解析
    轻松学习java可重入锁(ReentrantLock)的实现原理
  • 原文地址:https://www.cnblogs.com/codedisco/p/12568489.html
Copyright © 2011-2022 走看看