`
wsql
  • 浏览: 11795898 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

C#范型入门(扫盲)

阅读更多

范型是Microsoft.NET 2.0里面一个新加的内容,它使得C#语言更加完美。鉴于范型这个概念炒作炒得太虚,而缺少实际例子,使得很多菜鸟搞不懂这个概念,所以我来详细说明1个例子程序,大家就能明白了。
一、首先在VS2005环境里面新建一个控制台应用程序(Console)
二、完成如下代码:

staticvoidMain(string[]args)
{
PrintInt(
1);
PrintString(
"a");
PrintAll1(
2,"b");
PrintAll2
<int>(3);
PrintAll2
<string>("c");
PrintAll2(
4);
PrintAll2(
"d");
PrintAll2(
5.5);
Console.ReadLine();
}

staticvoidPrintInt(intx)
{
Console.WriteLine(x);
}

staticvoidPrintString(stringy)
{
Console.WriteLine(y);
}

staticvoidPrintAll1(intx,stringy)
{
Console.WriteLine(x);
Console.WriteLine(y);
}

staticvoidPrintAll2<T>(Tx)
{
if(typeof(T)==typeof(int))
{
Console.WriteLine(x);
}
elseif(typeof(T)==typeof(string))
{
Console.WriteLine(x);
}
else
{
Console.WriteLine(
"Error");
}
}

三、代码说明:
Void Main是Console控制台应用的程序入口,这个大家都应该知道吧,然后Console.WriteLine一个int型变量是允许的,不用x.ToString(),Console.ReadLine()目的是为了停止屏幕,方便查看运行结果。下面说正题:
作为一个普通的方法,PrintInt是打印一个数字,PrintString是打印一个字符串,但是如果我需要一个方法,既能打印数字,又能打印字符串呢,那就是PrintAll1这个方法,它同时接收整型、字符串型2个变量,然后分两行显示。如果我的要求更苛刻,我需要一个方法,除了既能打印数字又能打印字符串之外,还必须有且只有1个参数,不考虑结构体什么的,实现这样子的东西,就叫范型。理智的说,普通方法传递不同值变量,范型方法传递不同类型的变量,上面这个例子,就是从范型方法。当然范型技术还能用在类上面,为了入门,先不说这些,从范型方法入手。
PrintAll2就是范型方法,记住范型方法的书写格式,先定义一个未知类型T,写在方法名后面的尖括号里,然后参数是这个未知类型T的实例,然后方法里面的代码逻辑就是判断这个T到底是啥类型,然后根据不同类型,做出不同判断,执行不同代码。那么如何调用这个范型方法呢?我在void Main里面调用了PrintAll2五次,PrintAll2<int>(3)指定了参数就是整型的,PrintAll2<string>("c")指定了参数就是字符串,PrintAll2(4)和PrintAll2("d")没有明说参数是啥类型,但是程序会通过参数自动判断类型,得到正确的结果,PrintAll2(5.5)由于范型方法里面没有写该怎么处理浮点型,所以打印Error。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics