.NET 泛型分析
.NET 泛型解析
一、问题背景
我们在编程的时候往往因为需要处理不同类型的数据或者对象,重复编写很多类似的代码,造成代码的冗余,代码也显得不那么优雅,泛型的出现,正好是为了解决这个问题,实现继承。
示例,如下是一个现实输入值类型的类:
public class FanXing
{
public void F(int i)
{
Console.WriteLine(i+"是Int类型");
}
}
调用:
class Program
{
static void Main(string[] args)
{
FanXing fx = new FanXing();
fx.F(123);
Console.ReadKey();
}
}
以上示例,我们写了一个参数为int型的方法F(),其作用是输出i是int类型。上面的代码运行地很好,但是当我们需要一个参数为string类型的方法时,该怎么做?很多人会想到把方法F()复制一份,将参数类型由int改为string就可以了。这样做本身是没有问题的,但是如果我们还需要long、double类型作为参数时该怎么做呢?还是复制吗?有没有办法在方法中传入通用的数据类型,这样不就可以合并代码了吗?泛型的出现就解决了这个问题。泛型使用一个通用的数据类型T来代替object,在类实例化时指定T的类型,运行时自动编译为本地代码,运行效率和代码质量都有很大提高。
二、解决方案
public class FanXing<T>
{
T obj;
public void F(T t)
{
obj = t;
Console.WriteLine("泛型类FanXing的一个参数的方法F"+t.ToString());
}
public void F()
{
Console.Write("泛型类FanXing的无参方法F");
}
}
{
static void Main(string[] args)
{
FanXing<Program> f1 = new FanXing<Program>();
FanXing<string> f2 = new FanXing<string>();
FanXing<int> f3 = new FanXing<int>();
f1.F();
f2.F("hello");
f3.F(10);
Console.ReadLine();
}
}
- 基类约束
- 接口约束
- 构造函数约束
- 引用类型约束
- 值类型约束
最新文章
- Kafka:主要参数详解(转)
- UIkit框架之UIwebview
- ES6(ECMAScript 2015) 编码规范与详细注意要点
- Codeforces Round #382 (Div. 2) C. Tennis Championship 斐波那契
- 【nodejs】jade模板入门
- C++输入输出流的重载
- Kinect for Windows V2.0 新功能
- 第一阶段项目(3body)
- Exclusive-OR(带权并查集)
- Servlet - Listener、Filter、Decorator
- 循环输出ViewBag集合
- Python之旅Day7 面向对象&;异常处理
- 解决 双显卡 y7000笔记本 (Dual Graphics) Ubuntu 18.04 GDM3 无法外接显示器
- hdu 5051 找规律?+大trick
- Android开发工具Android Studio、Android SDK和Genymotion完全配置
- NIO中的Buffer
- 国外大神说:在编程中使用If语句的潜在危险
- PAT 甲级1003 Emergency (25)(25 分)(Dikjstra,也可以自己到自己!)
- angularjs 的controller的三种写法
- GitLab 数据备份和恢复