C#之泛型
2021-06-21 04:05
标签:show 技术 intro 泛型 delegate img 多重 set cte ---恢复内容开始--- 泛型即一个方法可以传递多种不同的类型的时候,就用泛型。泛型是C#2.0语法新特性,也是.net framework框架升级的结果。 从上面两段代码可以看出,用一个泛型方法可以代替多种普通的方法。这时候可以有人想到用object类型传参,下面就试试obejct。 运行结果 从运行结果可以看出 ,泛型方法和object传参没有什么区别。其实很容易理解,因为object 是一切类型的父类。下面我们从性能方面来比较泛型和object传参方法。 为了便于查看,将方法里面的代码置空,即不输出上文中的内容。。下面就看比较结果 可以看出 泛型方法和普通方法几乎一样 甚至性能还由于普通方法 而object参数方法 则消耗的时间大概是泛型方法的两倍。原因是object在上述过程中进行了大量的装箱与拆箱操作。 泛型除了应用与泛型方法 还可以是泛型类、泛型接口 、泛型委托。 测试结果: 泛型类的继承 泛型接口,泛型委托 泛型约束 泛型约束的种类 1.基类约束 2.接口约束 3.值类型约束 4.引用类型约束 5.无参构造函数约束 ---恢复内容结束--- C#之泛型 标签:show 技术 intro 泛型 delegate img 多重 set cte 原文地址:https://www.cnblogs.com/hzpblogs/p/10247262.html //引入泛型
public class IntroduceGeneric
{
//普通方法
public void ShowInt(int i)
{
Console.WriteLine(i);
}
public void ShowString(string s)
{
Console.WriteLine(s);
}
public void ShowDateTime(DateTime t)
{
Console.WriteLine(t);
}
//泛型方法
public void Show
static void Main(string[] args)
{
int i = 2;
string s = "abc";
DateTime dateTime = DateTime.Now;
IntroduceGeneric introduceGeneric = new IntroduceGeneric();
Console.WriteLine("普通方法");
introduceGeneric.ShowInt(i);
introduceGeneric.ShowString(s);
introduceGeneric.ShowDateTime(dateTime);
Console.WriteLine("泛型方法");
introduceGeneric.Showint>(i);
introduceGeneric.Show
//泛型方法
public void Show
Console.WriteLine("泛型方法");
introduceGeneric.Showint>(i);
introduceGeneric.Show
public class PerformanceTest
{
public static IntroduceGeneric introduceGeneric = new IntroduceGeneric();
public static void CommonMethod()
{
Console.WriteLine("执行10000000次普通方法消耗时间");
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
int i = 10;
for (var t = 0; t 10000000; t++)
{
introduceGeneric.ShowInt(i);
}
stopwatch.Stop();
Console.WriteLine(stopwatch.ElapsedMilliseconds);
}
public static void GenericMethod()
{
Console.WriteLine("执行10000000次泛型方法消耗时间");
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
int i = 10;
for (var t = 0; t 10000000; t++)
{
introduceGeneric.Showint>(i);
}
stopwatch.Stop();
Console.WriteLine(stopwatch.ElapsedMilliseconds);
}
public static void ObjectMethod()
{
Console.WriteLine("执行10000000次object参数方法消耗时间");
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
int i = 10;
for (var t = 0; t 10000000; t++)
{
introduceGeneric.ShowObject(i);
}
stopwatch.Stop();
Console.WriteLine(stopwatch.ElapsedMilliseconds);
}
}
public class GenericClass
public class GenericChildClass : GenericClassint>
{
}
public class GenericChildClass2
//泛型接口
public interface IGeneric
public class People
{
public string Name { get; set; }
public int Age { get; set; }
}
//泛型约束
public class GenericConstraint
{
//要求定义一个方法实现打印people的姓名和名称
public void CommonPrint(People people)
{
Console.WriteLine($"姓名:{people.Name} 年龄:{people.Age}");
}
public void GenericPrint
//约束种类
public void GenericType
上一篇:c# 之入门简介1