C#泛型学习 清疚 2021-06-26 16:06 450阅读 0赞 ## Program.cs ## using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace GenericDemo { class Program { static void Main(string[] args) { Console.WriteLine($"10+20={add(10, 20)}"); Console.WriteLine($"10.5+20.9={add(10.5, 20.9)}"); Console.WriteLine($"10+20.9={add(10, 20.9)}"); Console.WriteLine(add("hello", " world")); Console.WriteLine("-----------------"); Console.WriteLine(Sum(100)); Console.ReadLine(); } //泛型方法简单使用 static T add<T>(T a, T b) { dynamic a1 = a; dynamic b1 = b; return a1 + b1; } //泛型方法实现一个数求和 static T Sum<T>(T a) where T : struct { dynamic sum = default(T); for (dynamic i = default(T); i <= a; i++) { sum += i; } return sum; } } } ## 如图: ## ![这里写图片描述][20180911230712900] -------------------- ## Program.cs ## using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace GenericsDemo { class Program { //static void Main(string[] args) //{ // MyStack<int> stack1 = new MyStack<int>(5); // stack1.Push(1); // stack1.Push(2); // stack1.Push(3); // stack1.Push(4); // stack1.Push(5); // stack1.Push(6); // Console.WriteLine(stack1.Pop()); // Console.WriteLine(stack1.Pop()); // Console.WriteLine(stack1.Pop()); // Console.WriteLine(stack1.Pop()); // Console.WriteLine(stack1.Pop()); // Console.WriteLine(stack1.Pop()); // MyStack<string> stack2 = new MyStack<string>(5); // stack2.Push("产品1"); // stack2.Push("产品2"); // stack2.Push("产品3"); // stack2.Push("产品4"); // stack2.Push("产品5"); // stack2.Push("产品6"); // Console.WriteLine(stack2.Pop()); // Console.WriteLine(stack2.Pop()); // Console.WriteLine(stack2.Pop()); // Console.WriteLine(stack2.Pop()); // Console.WriteLine(stack2.Pop()); // Console.WriteLine(stack2.Pop()); // Console.Read(); //} static void Main(string[] args) { //实例化泛型对象 MyGeneric<int, Course, Teacher> myGeneric = new MyGeneric<int, Course, Teacher>(); //给对象属性赋值 myGeneric.ProductList = new List<Course>() { new Course(){CourseName=".NET",Period=10}, new Course(){CourseName="SQL Server",Period=20}, new Course(){CourseName="TypeScript",Period=30} }; myGeneric.Publisher = new Teacher() { Age = 28, Name = "Lex" }; Course course = myGeneric.Buy(1); Console.WriteLine($"你买的课程是{course.CourseName},时长为{course.Period}分钟,发布者是{myGeneric.Publisher.Name},年龄{myGeneric.Publisher.Age}岁"); Console.Read(); } } /// <summary> /// 添加约束类型的泛型类 /// </summary> /// <typeparam name="T1"></typeparam> /// <typeparam name="T2"></typeparam> /// <typeparam name="T3"></typeparam> class MyGeneric<T1, T2, T3> where T1 : struct // where T2 : class where T3 : new() { public List<T2> ProductList { get; set; } = new List<T2>(); public T3 Publisher { get; set; } = new T3(); public T2 Buy(T1 item) { dynamic num = item; return ProductList[num]; } } class Course { public string CourseName { get; set; } public int Period { get; set; } } class Teacher { public string Name { get; set; } public int Age { get; set; } } } ## MyStack.cs ## using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace GenericsDemo { /// <summary> /// 使用泛型类实现出入栈通用类 /// </summary> public class MyStack<T> { T[] stack; int size;//栈数据容量 int stackPoint;//栈位置指针 public MyStack(int size) { this.size = size; stack = new T[size]; stackPoint = -1; } /// <summary> /// 入栈 /// </summary> /// <param name="item"></param> public void Push(T item) { stackPoint++; if (stackPoint >= size) { Console.WriteLine("栈空间已满"); return; } stack[stackPoint] = item; } /// <summary> /// 出栈 /// </summary> /// <returns></returns> public T Pop() { stackPoint--; if (stackPoint < 0) { Console.WriteLine("栈空间已空"); return default(T); } T data = stack[stackPoint]; return data; } } } ## 如图: ## ![这里写图片描述][20180911231314160] [20180911230712900]: /images/20210626/377f9907c1c146d7886500e81feac54a.png [20180911231314160]: /images/20210626/ca78d16419ae4e5f8518433063cc6f5a.png
相关 学习C#泛型 C\泛型详解][C] [C\菜鸟教程][C 1] [C\中泛型的使用][C 2] 转载于:https://www.cnblogs.com/hool/p/114492... 野性酷女/ 2024年04月20日 10:49/ 0 赞/ 70 阅读
相关 C++泛型 C++泛型 对T的理解: 泛型的引入: 性质: 注意: 对T的理解: class stack<参数模板 T> 本是古典 何须时尚/ 2023年07月20日 13:59/ 0 赞/ 23 阅读
相关 C++ 泛型 泛型 Xun C++标准算法库中的各种函数都有很强的适用性。比如其中的`std::sort`函数,它即可以对`std::vector`中的元素进行排序,也能对`std: 叁歲伎倆/ 2023年06月03日 06:58/ 0 赞/ 27 阅读
相关 C#与CLR学习笔记(7)—— 泛型与泛型约束 文章目录 1 泛型概述 1.1 含义 1.2 泛型的继承 1.2.1 泛型类型的继承 1.2.2 浅浅的花香味﹌/ 2023年03月14日 08:21/ 0 赞/ 23 阅读
相关 C# 泛型讲解_泛型基础_C# Generic C\ 泛型讲解\_泛型基础 一、C\ 泛型概念 简介: 泛型是.NET Framework2.0新增的一个特性,在命名空间System.Collections.Gene ゞ 浴缸里的玫瑰/ 2022年10月19日 05:59/ 0 赞/ 225 阅读
相关 C#— —泛型 本文主要介绍C\中的泛型。 文章目录 1. 泛型介绍 1.1 泛型示例-集合 1.2 泛型示例-可空类型 柔光的暖阳◎/ 2022年08月30日 15:57/ 0 赞/ 255 阅读
相关 C# 泛型 一.泛型类 1.基类约束 /// <summary> /// 基类约束,约束成了T必须传入Pig本身或者其子类 /// </sum 迈不过友情╰/ 2022年06月06日 03:44/ 0 赞/ 294 阅读
相关 C#泛型 C\泛型详解 这篇文章主要讲解C\中的泛型,泛型在C\中有很重要的地位,尤其是在搭建项目框架的时候。 一、什么是泛型 泛型是C\2.0推出的新语法,不是语法糖,而是2. 我不是女神ヾ/ 2022年04月04日 07:30/ 0 赞/ 340 阅读
相关 C#2.0泛型学习 C\的泛型能力有CLR在运行时支持,它既不同于C++在编译时所支持的静态模板,也不同于Java在编译器层面使用“搽拭法”支持的简单的泛型。 C\ 快来打我*/ 2021年12月09日 00:33/ 0 赞/ 223 阅读
相关 C#泛型学习 Program.cs using System; using System.Collections.Generic; using System.L 清疚/ 2021年06月26日 16:06/ 0 赞/ 451 阅读
还没有评论,来说两句吧...