当前位置: 首页> 汽车> 新车 > 广东省发布最新消息_中央经济工作会议2023年7月召开_今日头条十大热点_国内建站平台有哪些

广东省发布最新消息_中央经济工作会议2023年7月召开_今日头条十大热点_国内建站平台有哪些

时间:2025/8/27 7:15:35来源:https://blog.csdn.net/zoushier/article/details/144378529 浏览次数: 0次
广东省发布最新消息_中央经济工作会议2023年7月召开_今日头条十大热点_国内建站平台有哪些

在C#语言中泛型方法是指通过泛型来约束方法中的参数类型,也可以理解为对数据类型设置了参数。

如果没有泛型,每次方法中的参数类型都是固定的,不能随意更改。

在使用泛型后,方法中的数据类型则有指定的泛型来约束,既可以根基提供的泛型来传递不同类型的参数。

泛型向 .NET 引入了类型参数的概念。 泛型支持设计类和方法,你可在在代码中使用该类或方法时,再定义一个或多个类型参数的规范。 例如,通过使用泛型类型参数 T,可以编写其他客户端代码能够使用的单个类,而不会产生运行时转换或装箱操作的成本或风险,如下所示:

// Declare the generic class.
public class GenericList<T>
{public void Add(T item) { }
}public class ExampleClass { }class TestGenericList
{static void Main(){// Create a list of type int.GenericList<int> list1 = new();list1.Add(1);// Create a list of type string.GenericList<string> list2 = new();list2.Add("");// Create a list of type ExampleClass.GenericList<ExampleClass> list3 = new();list3.Add(new ExampleClass());}
}

泛型方法的定义:

        定义泛型方法需要在方法名和参数列表之间加上 <> ,并在其中使用 T 来代表参数类型。

当然,也可以使用其他的标识符俩代替参数类型,但通常都是用 T 来表示。下面通过实例来演示泛型方法的使用。


定义泛型方法代码比如:

public static void Add1<T>(T a)
{Console.WriteLine("张伟" + a);
}

如何调用:

Add1<int>(202072);
Add1<string>("最帅");
Add1<string[]>(new string[] { "张伟", "张伟" });

调用泛型方法格式:<类型>(参数必须是 <> 的类型)


参数多个泛型的时候,如果都是 T ,必须保证参数是同一个类型的

public static void Add2<T>(T a, T b)
{Console.WriteLine(a + ":" + b);
}

调用

Add2(120, 110);
Add2("张伟", "最帅");

(注意:调用泛型方法的时候方法名后面的尖括号是需要加的,虽然没加上也没事,但最好还是加上)


// 演示参数是多个不同的泛型类型参数
public static void Add3<T1, T2>(T1 a, T2 b)
{Console.WriteLine(a + ":" + b);
}

定义一个泛型方法有几个要求:

  • 在方法名后面加上 <T>

  • 参数是泛型的时候,在参数前面添加 T 必须保证参数是同一个类型


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

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);
}

类型推理的相同规则适用于静态方法和实例方法。编译器可基于传入的方法参数推断类型参数;而无法仅根据约束货返回值推断类型参数。因此,类型推理不适用于不具有参数的方法。类型推理发生在编译时,之后编译器尝试解锁重载的方法签名。 编译器将类型推理逻辑应用于共用同一名称的所有泛型方法。 在重载解决方案步骤中,编译器仅包含在其上类型推理成功的泛型方法。

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

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

关键字:广东省发布最新消息_中央经济工作会议2023年7月召开_今日头条十大热点_国内建站平台有哪些

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: