当前位置:  开发笔记 > 编程语言 > 正文

在.Net(C#/ VB.NET)中使用泛型的示例

如何解决《在.Net(C#/VB.NET)中使用泛型的示例》经验,为你挑选了2个好方法。

有什么例子可以在C#/ VB.NET中使用泛型,为什么要使用泛型?



1> Marc Gravell..:

简单地说,您声明一个带有额外标签的类型或方法来指示通用位:

class Foo {
    public Foo(T value) {
        Value = value;
    }
    public T Value {get;private set;}
}

以上定义了泛型Foo"of T",其中T由调用者提供.按照惯例,一般类型参数启动与T.如果只有一个,T是好的-否则他们的名字都有效:TSource,TValue,TListType

与C++模板不同,.NET泛型由运行时提供(不是编译器技巧).例如:

Foo foo = new Foo(27);

所有Ts都已被int上面的替换.如有必要,可以使用约束限制泛型参数:

class Foo where T : struct {}

现在Foo将拒绝编译 - 因为string它不是结构(值类型).有效约束是:

T : class // reference-type (class/interface/delegate)
T : struct // value-type except Nullable
T : new() // has a public parameterless constructor
T : SomeClass // is SomeClass or inherited from SomeClass
T : ISomeInterface // implements ISomeInterface

约束也可以涉及其他泛型类型参数,例如:

T : IComparable // or another type argument

您可以根据需要使用尽可能多的通用参数:

public struct KeyValuePair {...}

其他注意事项:

静态成员等是根据泛型类型组合定义的- 因此静态字段on Foo与其相对Foo.

方法也可以是通用的 - 尽量避免使用与类使用相同的名称,因为您将无法消除歧义

嵌套类型从父项继承泛型类型

例如:

class Foo {
    class Bar {} // is effectively Bar, for the outer T
}



2> Brijesh Mish..:

示例1:您想要创建三级类

Class Triple
{
   T1 _first;
   T2 _second;
   T3 _Third;
}

示例2:将解析给定数据类型的任何枚举值的辅助类

static public class EnumHelper
{
   static public T Parse(string value)
   {
       return (T)Enum.Parse(typeof(T), value);
   }
}

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有