Visual C# 2.0泛型编程基础

http://tech.ddvip.com   2006年08月02日    社区交流

本文详细介绍Visual C# 2.0泛型编程基础

  上面的例子不是很恰当,目的是让初学泛型的你了解一下泛型的定义及实例化方法,如上,我们定义了一个泛型类,那么如何实现泛型类的继承呢?这里需要满足下面两点中的任何一点即可:

  1、泛型类继承中,父类的类型参数已被实例化,这种情况下子类不一定必须是泛型类;

  2、父类的类型参数没有被实例化,但来源于子类,也就是说父类和子类都是泛型类,并且二者有相同的类型参数;

  //如果这样写的话,显然会报找不到类型T,S的错误
public class TestChild : Test<T, S> { }
//正确的写法应该是
public class TestChild : Test<string, int>{ }
public class TestChild<T, S> : Test<T, S> { }
public class TestChild<T, S> : Test<String, int> { }

  接着我们来看看泛型接口,其创建以及继承规则和上面说的泛型类是一样的,看下面的代码:

  public interface IList<T>
{
 T[] GetElements();
}
public interface IDictionary<K,V>
{
 void Add(K key, V value);
}
// 泛型接口的类型参数要么已实例化
// 要么来源于实现类声明的类型参数
class List<T> : IList<T>, IDictionary<int, T>
{
 public T[] GetElements() { return null; }
 public void Add(int index, T value)
 {}
}

  在来看一下泛型委托,首先我们定义一个类型参数为T的委托,然后在类中利用委托调用方法:

  using System;
using System.Collections.Generic;
using System.Text;
namespace GenericTest
{
 //定义一个委托,类型参数为T,返回值类型T
 //泛型委托支持在返回值和参数上应用类型参数
 delegate string GenericDelete<T>(T value);
 class test
 {
  static string F(int i) { return "SHY520"; }
  static string G(string s) { return "SHY520"; }
  static void Main(string[] args)
  {
   GenericDelete<string> G1 = G;
   GenericDelete<int> G2 = new GenericDelete<int>(F);
  }
 }
}

作者:pw    责编:豆豆技术应用

正在加载评论...