泛型方法(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
的调用等效于前面的调用:
相同的类型推断规则也适用于静态方法以及实例方法。编译器能够根据传入的方法参数
推断类型参数;它无法仅从约束或返回值推断类型参数。因此,类型推断不适用于没有参数��方法。类型推断在编译时、编译器尝试解析任何重载方法签名之前进
行。编译器向共享相同名称的所有泛型方法应用类型推断逻辑。在重载解析步骤中,编译器仅包括类型推断取得成功的那些泛型方法。
在泛型类
中,非泛型方法可以访问类级别类型参数,如下所示:
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#编程指南》中涵盖的关键知识点。这本指南主要针对有一定编程基础的读者,特别是那些已经对C#有所了解的人。下面是对文档中提到的各个主题的详细解释: ### 1. C#编程指南 ###...
泛型(C# 编程指南) LINQ 查询表达式(C# 编程指南) Lambda 表达式(C# 编程指南) 迭代器(C# 编程指南) 命名空间(C# 编程指南) 可空类型(C# 编程指南) 不安全代码和指针(C# 编程指南) XML 文档注释(C# ...
泛型(C# 编程指南) LINQ 查询表达式(C# 编程指南) Lambda 表达式(C# 编程指南) 迭代器(C# 编程指南) 命名空间(C# 编程指南) 可空类型(C# 编程指南) 不安全代码和指针(C# 编程指南) XML ...
泛型(C# 编程指南) LINQ 查询表达式(C# 编程指南) Lambda 表达式(C# 编程指南) 迭代器(C# 编程指南) 命名空间(C# 编程指南) 可空类型(C# 编程指南) 不安全代码和指针(C# 编程指南) X
《C#编程指南》在介绍基础部分时,保留了用途较广的属性、接口、泛型的原理分析,舍去了与c++类似的内容。《C#编程指南》着重讨论新技术和热点领域,包括语言集成查询(LINQ)、WPF 3D动画、对象关系设计器(O/R...
《C#编程指南参考手册》是一本专门为C#学习者和开发者准备的宝贵资源,它在MSDN(Microsoft Developer Network)的基础上提供了全面且深入的C#编程知识。这本书籍不仅覆盖了C#语言的基础概念,还包含了高级特性和...
### C# 6.0 编程指南 #### 第一章:C#编程基础与核心概念 ##### C#编程环境概览 C#是一种现代化、面向对象的编程语言,广泛应用于Windows应用程序、Web应用程序以及游戏开发等多个领域。C# 6.0版本引入了一系列...
《C#编程指南MSDN离线参考手册》是学习C#编程的重要资源,它包含了Microsoft官方的MSDN(Microsoft Developer Network)文档,为开发者提供详尽的C#语言规范、框架特性和开发技术的详细解释。这个离线版本使得开发者...
C#编程指南是一个深入浅出的教程,专为学习C#编程语言的初学者和有经验的开发者设计。C#,由微软公司开发,是一种面向对象的、类型安全的编程语言,广泛应用于Windows桌面应用、游戏开发、移动应用以及Web应用等领域...
《C#编程指南》是专为想要学习或深入理解C#编程语言的初学者和开发者设计的一份详尽参考资料。这份资源以CHM(Compiled HTML Help)格式提供,相较于PDF,它具有更快的检索速度和更方便的导航功能,使得在没有网络...
《C#编程指南》是一本全面且深入的教程,旨在为C#程序员提供全面的指导,帮助他们精通这种强大的编程语言。C#是由微软开发的一种面向对象的编程语言,广泛应用于构建Windows桌面应用、Web应用以及游戏开发,尤其是与...
《C#编程指南+参考手册》是一份极富价值的学习资料,专为C#开发者设计,无论你是初学者还是有经验的程序员,都能从中受益。这份手册深入浅出地介绍了C#语言的基础与高级特性,结合丰富的实例,帮助读者更好地理解和...
基于.NET5的最新C#9编程指南涵盖了.NET框架下的C#语言的各个重要领域,为开发者提供了关于这门编程语言的全面学习资源。文档内容从基础入门到高级特性,全面覆盖了C#的核心知识点。下面将详细解释文档中提及的关键...
《C#编程指南+参考手册》是一本专为.NET Framework 2.0平台设计的全面教程,旨在帮助读者深入理解C#语言的核心概念和技术。这本书不仅适合初学者,也适用于有一定经验的程序员,通过深入浅出的方式讲解了C#语言的...
### C#编程指南知识点概述 #### 一、C#语言和.NET Framework介绍 - **C#语言简介**:C#是一种面向对象的编程语言,由微软设计并开发,旨在为.NET平台提供一种强大的编程工具。它结合了C++的强大功能与Visual Basic...
C#编程指南是初学者和有一定经验的开发者深入理解C#语言的重要参考资料。C#,全称为C Sharp,是由微软公司开发的一种面向对象的编程语言,广泛应用于Windows平台的软件开发,尤其是.NET框架下的应用程序。它结合了...
- **概述**:简述C#编程指南的内容概览。 - **C#程序内部探究**:探讨C#程序的内部结构和组成部分。 - **C#程序所含内容**:列举C#程序通常包含的元素。 - **C#程序的通用结构**:介绍C#程序的标准结构布局。 - **...
以上是C#编程的一些关键知识点,这些内容通常会在“C#编程指南”中涵盖。通过深入学习和实践,你可以掌握C#编程技能,为开发各种应用程序打下坚实的基础。记得,不断练习和项目实战是提升编程能力的最好方式。