`

泛型方法(C# 编程指南)

    博客分类:
  • .NET
阅读更多

泛型方法(C# 编程指南)

 

泛型方法是使用类型参数声明的方 法,如下所示:

static
 void
 Swap<T>(ref
 T lhs, ref
 T rhs)
{
    T temp;
    temp = lhs;
    lhs = rhs;
    rhs = temp;
}

下面的代码示例演示一种使用 int 作为类型参数的方法调用方式:

public
 static
 void
 TestSwap()
{
    int
 a = 1;
    int
 b = 2;

    Swap<int
>(ref
 a, ref
 b);
    System.Console.WriteLine(a + " "
 + b);
}

也可以省略类型参数,编译器将推断出该参数。下面对 Swap 的调用等效于前面的调用:

Swap(ref
 a, ref
 b);

相同的类型推断规则也适用于静态方法以及实例方法。编译器能够根据传入的方法参数 推断类型参数;它无法仅从约束或返回值推断类型参数。因此,类型推断不适用于没有参数��方法。类型推断在编译时、编译器尝试解析任何重载方法签名之前进 行。编译器向共享相同名称的所有泛型方法应用类型推断逻辑。在重载解析步骤中,编译器仅包括类型推断取得成功的那些泛型方法。

在泛型类 中,非泛型方法可以访问类级别类型参数,如下所示:

class
 SampleClass<T>
{
    void
 Swap(ref
 T lhs, ref
 T rhs) { }
}

如果定义的泛型方法接受与包含类相同的类型参数,编译器将生成警告 CS0693,因为在方法范围内,为内部 T 提供的参数将隐藏为外部 T 提供的参数。除了类初始化时提供的类型参数之外,如果需要灵活调用具有类型参数的泛型类方法,请考虑为方法的类型参数提供其他标识符,如下面示例中的 GenericList2<T> 所示。

class
 GenericList<T>
{
    // CS0693

    void
 SampleMethod<T>() { }
}

class
 GenericList2<T>
{
    //No warning

    void
 SampleMethod<U>() { }
}

使用约束对方法中的类型参数启用更专门的操作。此版本的 Swap<T> 现在称为 SwapIfGreater<T> ,它 只能与实现 IComparable<T> 的类型参数一起使用。

void
 SwapIfGreater<T>(ref
 T lhs, ref
 T rhs) where
 T : System.IComparable<T>
{
    T temp;
    if
 (lhs.CompareTo(rhs) > 0)
    {
        temp = lhs;
        lhs = rhs;
        rhs = temp;
    }
}

泛型方法可以使用许多类型参数进行重载。例如,下列方法可以全部存在于同一个类 中:

void
 DoWork() { }
void
 DoWork<T>() { }
void
 DoWork<T, U>() { }

分享到:
评论

相关推荐

    C# 编程指南.pdf

    根据提供的信息,我们可以深入探讨《C#编程指南》中涵盖的关键知识点。这本指南主要针对有一定编程基础的读者,特别是那些已经对C#有所了解的人。下面是对文档中提到的各个主题的详细解释: ### 1. C#编程指南 ###...

    C# 编程指南 [微软官方 MSDN 节选]

    泛型(C# 编程指南) LINQ 查询表达式(C# 编程指南) Lambda 表达式(C# 编程指南) 迭代器(C# 编程指南) 命名空间(C# 编程指南) 可空类型(C# 编程指南) 不安全代码和指针(C# 编程指南) XML 文档注释(C# ...

    C# 编程指南 C# 随身参考 Wego开发组专用

    泛型(C# 编程指南) LINQ 查询表达式(C# 编程指南) Lambda 表达式(C# 编程指南) 迭代器(C# 编程指南) 命名空间(C# 编程指南) 可空类型(C# 编程指南) 不安全代码和指针(C# 编程指南) XML ...

    MSDN CS参考.zip

    泛型(C# 编程指南) LINQ 查询表达式(C# 编程指南) Lambda 表达式(C# 编程指南) 迭代器(C# 编程指南) 命名空间(C# 编程指南) 可空类型(C# 编程指南) 不安全代码和指针(C# 编程指南) X

    c#编程指南

    《C#编程指南》在介绍基础部分时,保留了用途较广的属性、接口、泛型的原理分析,舍去了与c++类似的内容。《C#编程指南》着重讨论新技术和热点领域,包括语言集成查询(LINQ)、WPF 3D动画、对象关系设计器(O/R...

    C#编程指南参考手册

    《C#编程指南参考手册》是一本专门为C#学习者和开发者准备的宝贵资源,它在MSDN(Microsoft Developer Network)的基础上提供了全面且深入的C#编程知识。这本书籍不仅覆盖了C#语言的基础概念,还包含了高级特性和...

    C#编程指南 最新

    ### C# 6.0 编程指南 #### 第一章:C#编程基础与核心概念 ##### C#编程环境概览 C#是一种现代化、面向对象的编程语言,广泛应用于Windows应用程序、Web应用程序以及游戏开发等多个领域。C# 6.0版本引入了一系列...

    C#编程指南MSDN离线参考手册.zip

    《C#编程指南MSDN离线参考手册》是学习C#编程的重要资源,它包含了Microsoft官方的MSDN(Microsoft Developer Network)文档,为开发者提供详尽的C#语言规范、框架特性和开发技术的详细解释。这个离线版本使得开发者...

    c#编程指南.rar

    C#编程指南是一个深入浅出的教程,专为学习C#编程语言的初学者和有经验的开发者设计。C#,由微软公司开发,是一种面向对象的、类型安全的编程语言,广泛应用于Windows桌面应用、游戏开发、移动应用以及Web应用等领域...

    C#编程指南.rar

    《C#编程指南》是专为想要学习或深入理解C#编程语言的初学者和开发者设计的一份详尽参考资料。这份资源以CHM(Compiled HTML Help)格式提供,相较于PDF,它具有更快的检索速度和更方便的导航功能,使得在没有网络...

    C#编程指南

    《C#编程指南》是一本全面且深入的教程,旨在为C#程序员提供全面的指导,帮助他们精通这种强大的编程语言。C#是由微软开发的一种面向对象的编程语言,广泛应用于构建Windows桌面应用、Web应用以及游戏开发,尤其是与...

    C#编程指南+参考手册

    《C#编程指南+参考手册》是一份极富价值的学习资料,专为C#开发者设计,无论你是初学者还是有经验的程序员,都能从中受益。这份手册深入浅出地介绍了C#语言的基础与高级特性,结合丰富的实例,帮助读者更好地理解和...

    C#9 编程指南.pdf

    基于.NET5的最新C#9编程指南涵盖了.NET框架下的C#语言的各个重要领域,为开发者提供了关于这门编程语言的全面学习资源。文档内容从基础入门到高级特性,全面覆盖了C#的核心知识点。下面将详细解释文档中提及的关键...

    c#编程指南+参考手册

    《C#编程指南+参考手册》是一本专为.NET Framework 2.0平台设计的全面教程,旨在帮助读者深入理解C#语言的核心概念和技术。这本书不仅适合初学者,也适用于有一定经验的程序员,通过深入浅出的方式讲解了C#语言的...

    MSDN_C#编程指南

    ### C#编程指南知识点概述 #### 一、C#语言和.NET Framework介绍 - **C#语言简介**:C#是一种面向对象的编程语言,由微软设计并开发,旨在为.NET平台提供一种强大的编程工具。它结合了C++的强大功能与Visual Basic...

    c#编程指南,c#入门提高必备

    C#编程指南是初学者和有一定经验的开发者深入理解C#语言的重要参考资料。C#,全称为C Sharp,是由微软公司开发的一种面向对象的编程语言,广泛应用于Windows平台的软件开发,尤其是.NET框架下的应用程序。它结合了...

    MSDN离线版C# 脚本手册 C# 指南.pdf

    - **概述**:简述C#编程指南的内容概览。 - **C#程序内部探究**:探讨C#程序的内部结构和组成部分。 - **C#程序所含内容**:列举C#程序通常包含的元素。 - **C#程序的通用结构**:介绍C#程序的标准结构布局。 - **...

    C#编程指南_0.rar---学习c#

    以上是C#编程的一些关键知识点,这些内容通常会在“C#编程指南”中涵盖。通过深入学习和实践,你可以掌握C#编程技能,为开发各种应用程序打下坚实的基础。记得,不断练习和项目实战是提升编程能力的最好方式。

Global site tag (gtag.js) - Google Analytics