// 泛型结构与泛型类相似,泛型结构的规则和条件与泛型类是一样的,可以有类型参数和约束
struct PieceOfData<T> // 泛型结构
{
private T _data;
public PieceOfData(T value) // 构造方法
{
_data = value;
}
public T Data
{
get { return _data; }
set { _data = value; }
}
}
class Program
{
static void Main(string[] args)
{
// 泛型结构
var intData = new PieceOfData<int>(10); // 实例化构造方法
var stringData = new PieceOfData<string>("Hi there");
Console.WriteLine("intData={0}", intData.Data);
Console.WriteLine("stringData={0}", stringData.Data);
// 泛型委托
var myDel = new MyDelegate<int>(Simple.PrintStirng); // 调用泛型委托
myDel += Simple.PrintInt; // 增加方法
myDel(123); // 根据参数类型传值
// 泛型接口
var interInt = new SimpleInter<int>();
var interString = new SimpleInter<string>();
Console.WriteLine("{1}{0}", interInt.ReturnIt(25),interString.ReturnIt("ah"));
var classSimple = new SimpleCom();
Console.WriteLine("{0}{1}", classSimple.ReturnIt("hb"), classSimple.ReturnIt(24));
Console.ReadKey();
}
}
/*泛型委托*/
delegate void MyDelegate<T>(T x);
class Simple
{
public static void PrintStirng<T>(T str) // 泛型方法 匹配委托
{
Console.WriteLine(str);
}
public static void PrintInt<T>(T i)
{
Console.WriteLine(i);
}
}
/*泛型接口
实现泛型接口时,必须保证类型实参组合不会再类型中产生两个重复的接口
泛型接口的实现必须唯一
*/
interface IMyInter<T>
{
T ReturnIt(T inValue);
}
class SimpleInter<S> : IMyInter<S> // 泛型类实现接口
{
public S ReturnIt(S inValue)
{
return inValue;
}
}
// 普通类实现泛型接口 如果要实现同一名字的泛型接口 必须指定参数类型,保证接口的唯一性
class SimpleCom :IMyInter<int>,IMyInter<string>
{
public string ReturnIt(string inValue)
{
return inValue;
}
public int ReturnIt(int inValue)
{
return inValue;
}
}
C# 泛型结构、泛型委托、泛型接口
最新推荐文章于 2024-03-25 21:56:34 发布