泛型概述
C# 泛型称之为类型参数。泛型要点:
在定义方法中,通常是将变量的值作为参数,但其实这个变量的类型本身也可以作为参数。泛型允许在调用的时候再指定这个类型参数是什么。在.net中,泛型能够给我们带来的三个明显好处是:类型安全、代码重用、减少装箱和拆箱操作。通过泛型可以定义类型安全类,而不会损害类型安全、性能或工作效率。可以用任何类型来声明和使用它。使用 ﹤ 和 ﹥ 括号,以便将一般类型参数括起来。
泛型的几个好处实例:
public class 泛型
{
//非泛型:类型不安全-编译时不能发现错误
//执行提示:System.InvalidCastException: 指定的转换无效。
public void ShowValues1()
{
ArrayList list =
new ArrayList();
list.Add(44);
list.Add("string");
//编译通过
foreach (
int i
in list)
{
Console.WriteLine("输出值:" +
i);
}
}
//泛型:类型安全-编译时即发现类型不匹配
public void ShowValues2()
{
List<
string> list =
new List<
string>
();
list.Add(44);
//--编译出错
list.Add(
"string");
foreach (
string s
in list)
{
Console.WriteLine("输出值:" +
s);
}
}
//非泛型:需要显式类型转换,损失性能
public void ShowValues3()
{
ArrayList list =
new ArrayList();
list.Add(44);
int i = (
int)list[
0];
Console.WriteLine("输出值:" +
i);
}
//泛型:使用时类型是确定的,无需进行类型转换
public void ShowValues4()
{
List<
int> list =
new List<
int>
();
list.Add(44);
int i = list[
0];
Console.WriteLine("输出值:" +
i);
}
}
自定义泛型,及调用。从中可以看出泛型在代码重用中的作用。
//自定义一个泛型类
public class MyGeneric<T>
{
public void ShowValues(T a)
{
Console.WriteLine("输出值:" +
a.ToString());
}
}
//用不同的类型参数调用自定义泛型
public class Test_MyGeneric
{
public void Test_int_ShowValues()
{
MyGeneric<
int> fanXing =
new MyGeneric<
int>
();
fanXing.ShowValues(100);
}
public void Test_string_ShowValues()
{
MyGeneric<
string> fanXing =
new MyGeneric<
string>
();
fanXing.ShowValues("Hello");
}
public void Test_doube_ShowValues()
{
MyGeneric<
double> fanXing =
new MyGeneric<
double>
();
fanXing.ShowValues(3.14);
}
//定义泛型方法:交换两个变量
public void Swap<T>(
ref T a,
ref T b)
{
T temp;
temp =
a;
a =
b;
b =
temp;
}
//交换整数
public void TestSwap1()
{
int t =
1;
int g =
2;
Swap(ref t,
ref g);
Console.WriteLine("输出值t:" +
t.ToString());
Console.WriteLine("输出值g:" +
g.ToString());
}
//交换字符串
public void TestSwap2()
{
string t =
"str1";
string g =
"str2";
Swap(ref t,
ref g);
Console.WriteLine("输出值t:" +
t.ToString());
Console.WriteLine("输出值g:" +
g.ToString());
}
//交换对象
public class usrEntity
{
public string username {
get;
set; }
public string sex {
get;
set; }
}
public void TestSwap3()
{
usrEntity t =
new usrEntity(){ username =
"小明", sex =
"男" };
usrEntity g =
new usrEntity() { username =
"小红", sex =
"女" };
Swap(ref t,
ref g);
Console.WriteLine("输出值t:" + t.username +
":" +
t.sex);
Console.WriteLine("输出值g:" + g.username +
":" +
g.sex);
}
}
注意:本文根据相关培训资料整理而成。
转载于:https://www.cnblogs.com/xujiancai/archive/2012/10/17/2727490.html
相关资源:JAVA上百实例源码以及开源项目