本篇内容介绍了“C#泛型编的实例讲解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
C# 泛型编程实例:
using System; using System.Collections.Generic; using System.Text; namespace GenericTest { class Program { static void Main(string[] args) { //使用string,int来实例化Test类 Test t = new Test("SHY520",22); //调用泛型类中的方法 t.SetValue(); } } /// /// 定义一个泛型类,该类有两个类型参数,分别是T,S /// /// 类型参数 /// 类型参数 public class Test { //泛型类的类型参数可用于类成员 private T name; private S age; public Test(T Name,S Age) { this.name = Name; this.age = Age; } public void SetValue() { Console.WriteLine(name.ToString()); Console.WriteLine(age.ToString()); } } }
上面的C# 泛型编程例子不是很恰当,目的是让初学C# 泛型的你了解一下泛型的定义及实例化方法,如上,我们定义了一个泛型类,那么如何实现泛型类的继承呢?这里需要满足下面两点中的任何一点即可:
C# 泛型类继承中,父类的类型参数已被实例化,这种情况下子类不一定必须是C# 泛型类;
父类的类型参数没有被实例化,但来源于子类,也就是说父类和子类都是泛型类,并且二者有相同的类型参数;
//如果这样写的话,显然会报找不到类型T,S的错误 public class TestChild : Test { } //正确的写法应该是 public class TestChild : Test{ } public class TestChild : Test { } public class TestChild : Test { }
接着我们来看看泛型接口,其创建以及继承规则和上面说的泛型类是一样的,看下面的代码:
public interface IList { T[] GetElements(); } public interface IDictionary { void Add(K key, V value); } // 泛型接口的类型参数要么已实例化 // 要么来源于实现类声明的类型参数 class List : IList, IDictionary { public T[] GetElements() { return null; } public void Add(int index, T value) {} }
在来看一下C# 泛型委托,首先我们定义一个类型参数为T的委托,然后在类中利用委托调用方法:
using System; using System.Collections.Generic; using System.Text; namespace GenericTest { //定义一个委托,类型参数为T,返回值类型T //泛型委托支持在返回值和参数上应用类型参数 delegate string GenericDelete(T value); class test { static string F(int i) { return "SHY520"; } static string G(string s) { return "SHY520"; } static void Main(string[] args) { GenericDelete G1 = G; GenericDelete G2 = new GenericDelete(F); } } }
我们再来看C# 泛型方法,C#的泛型机制只支持在方法申明上包含类型参数,也即是泛型方法。特别注意的是,泛型不支持在除了方法以外的其他类/接口成员上使用类型参数,但这些成员可以被包含在泛型类型中,并且可以使用泛型类型的类型参数。还有一点需要说的就是,泛型方法可以在泛型类型中,也可以存在于非泛型类型中。下面我们分别看一下泛型类型的申明,调用,重载和覆盖。
using System; using System.Collections.Generic; using System.Text; namespace GenericTest { class GenericClass { //申明一个泛型方法 public T getvalue(T t) { return t; } //调用泛型方法 //注意:在调用泛型方法时,对泛型方法的类型参数实例化 public int useMethod() { return this.getvalue(10); } //重载getvalue方法 public int getvalue(int i) { return i; } } //下面演示覆盖 //要注意的是,泛型方法被覆盖时,约束被默认继承,不需要重新指定约束关系 abstract class Parent { public abstract K TEST(K k, V v) where K : V; } class Child : Parent { public override T TEST(T t, S s) { return t; } } }
“C#泛型编的实例讲解”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!