C#泛型的引入、声明和调用(专家型)

作者(出处):Lary发布时间:2015年3月23日 12:21:27查阅量:60

本项目是对进阶型的一次升级,如果没有理清进阶型的代码,请先阅读《C#泛型的引入、声明和调用(进阶型)》一文。

首先新建一个People类,在People类中声明两个属性和一个Hello()方法,具体代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyGeneric
{
    /// <summary>
    /// 定义人类
    /// </summary>
    public class People
    {
        //ID号
        private int id;
        public int Id
        {
            get { return id; }
            set { id = value; }
        }
        //姓名
        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        //问好的方法
        public void Hello()
        {
            Console.WriteLine("早上好");
        }
    }
}

然后新建一个GenericClass类,在GenericClass类中定义一个ShowT()泛型方法,具体代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyGeneric
{
    /// <summary>
    /// 泛型的原理:泛型实际上是语法糖,由编译器提供的功能,调用不同的类型参数会生成不同的方法副本。
    /// </summary>
    public class GenericClass
    {
        /// <summary>
        /// 这里是泛型方法的声明,泛型方法没有性能损失(没有装箱和拆箱的操作)。
        /// 延迟思想:方法声明的时候没有指定类型,而是推迟到使用方法的时候才指定参数类型。
        /// </summary>
        /// <typeparam name="Lary">Lary是类型参数,它只是占位符</typeparam>
        /// <param name="tParameter">Lary类型的参数</param>
        public static void ShowT<Lary>(Lary tParameter)
        {
            Console.WriteLine("GenericClass.ShowT():Parameter={0},ParameterType={1}", tParameter, tParameter.GetType());
        }
    }
}

在主函数中调用泛型方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyGeneric
{
    /// <summary>
    /// 泛型的引入、声明和调用
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            //初始化变量
            int iParamere=1617818397;
            DateTime dtParamere = DateTime.Now;
            //实例化一个People对象
            People people = new People()
            {
                Id = 1617818397,
                Name = "Lary"
            };

            Console.WriteLine("***************使用ShowT泛型方法代替N个方法***************");
            //调用泛型方法
            GenericClass.ShowT<int>(iParamere);
            GenericClass.ShowT<DateTime>(dtParamere);
            GenericClass.ShowT<People>(people);
            GenericClass.ShowT<string>("Lucy");

            //泛型方法也可以这样调用,即类型参数可以省略不写,系统会自动推算出类型参数
            GenericClass.ShowT(iParamere);
            GenericClass.ShowT(dtParamere);
            GenericClass.ShowT(people);
            GenericClass.ShowT("Lily");

            Console.Read();
        }
    }
}
百宝箱网络工作室  版权所有  
站长QQ:1617818397  站长E-mail:1617818397@qq.com
Powered by www.baibaox.com  Copyright © 2011-2018
点击这里给我发消息