c#之泛型

2023-11-16

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 泛型
{
    public class Stack<T>  //类的泛型
    {
        private T[] _item;
        public void Push(T item)
        {
            Console.WriteLine(item);
        }
        public Stack(int i)
        {
           this._item = new T[i];
        }
        public static string name = "静态";
    }
    public class Method
    {
        public  int level = 5;
        public void FangFa<T>(T t)where T:class  //方法的泛型
        {
            Console.WriteLine(t);
        }
    }
    public class Test<M> where M:Method ,new() //泛型的约束 类型M被约束为只能是Method类型
    {
        public void Push(M m)
        {
            Console.WriteLine(m.level);
        }
        public Test()
        {

        }
    }
    public class AA<T>where T:struct   //泛型约束  struct值类型  class引用类型
    {
        public void Push(T t)
        {
            Console.WriteLine(t);
        }
    }
    public class CC
    {
        public CC(int a)
        {
            Console.WriteLine(6);
        }
        public CC()
        {

        }
    }
    public class BB<T> where T :CC ,new() //有了new()CC必须具有公共五参数的构造函数的非抽象类型,才能用作泛型BB类的参数
    {
        public BB(string str)
        {
            Console.WriteLine(2);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Stack<int> a = new Stack<int>(100);
            a.Push(60);

            Stack<string> b = new Stack<string>(10);
            b.Push("likang");
            Method m = new Method();
            Test<Method> c = new Test<Method>();
            c.Push(m);
            AA<double> aa = new AA<double>();
            aa.Push(2.2);
            AA<char> bb = new AA<char>();
            bb.Push('y');
            Console.WriteLine(sizeof(char)); //char占两个字节,方法sizeof()用来测试其长度
            m.FangFa<Test<Method>>(c);
            BB<CC> _b = new BB<CC>("likang");
            Console.Read();
        }
    }
}

对于func<>和action<>的学习:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Action和Func
{
    public delegate void buy();
   class Test01
    {
        public static void buyBook()
        {
            Console.WriteLine("买书");
        }
        public static void buyWater(string str)
        {
            Console.WriteLine("买的水是:"+str);
        }
        public static void buyCar(string str,int money)
        {
            Console.WriteLine("我今天买了一个名字是{0}的书,花了我{1}钱",str,money);
        }
        public static string buyHouse()
        {
            return "准备结婚,买了一个房子";
        }
        public static int buyFire(int name)
        {
            return name;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            //buy b = Test01.buyBook; //委托
            //b();
            Action _action = new Action(Test01.buyBook);//封装一个方法,该方法没有参数并且没有返回值
            _action();
            Action<string> _actionH = new Action<string>(Test01.buyWater); //封装一个方法,该方法只有一个参数并且没有返回值
            _actionH("农夫山泉");
            Action<string, int> _actionT = new Action<string, int>(Test01.buyCar); //两个参数,无返回值,最多可以封装16个参数
            _actionT("蒙拉丽莎的眼泪",60);
            Func<string> _func = new Func<string>(Test01.buyHouse); //封装一个方法,没有参数,有返回值
            Console.WriteLine( _func());
            Func<int, int> _func2 = new Func<int, int>(Test01.buyFire); //一个参数,有返回值
            Console.WriteLine(_func2(2));
            Console.Read();
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c#之泛型 的相关文章

  • 使用sqlbulkcopy之前如何创建表

    我有一个 DBF 文件 我正在尝试导入该文件 然后将其写入 SQL 表 我遇到的问题是 如果我使用 SqlBulkCopy 它需要我提前创建表 但在我的场景中这是不可能的 因为 dbf 文件不断变化 到目前为止 这是我的代码 public
  • 显示 div 内的用户名列表

    我是 jQuery 新手 在我的项目中 我创建了一个类User其中代码如下所示 static ConcurrentDictionary
  • C++ 中的“int”默认是“signed long int”吗?

    Is int默认情况下signed long int in C 它是否依赖于平台和 或编译器 如果是这样 怎么办 EDIT 以下任何一项是否保证是重复的 signed short int signed int signed long int
  • C# - Visual Studio 中的 System.OutOfMemoryException

    我遇到问题 当我右键单击 Visual Studio 中的主窗体并转到 视图设计器 时 出现错误 它说 引发了 System OutOfMemoryException 类型的异常 堆栈跟踪 at System Reflection Asse
  • 如何使用最小起订量模拟私有只读 IList 属性

    我试图嘲笑这个列表 private readonly IList
  • 无需登录即可在 Intranet 上获取 Web 应用程序的域\用户名

    我的 Intranet 上有一个 Web 应用程序 VS 2005 有几个页面不需要用户登录应用程序 反馈和默认页面 我正在尝试获取要显示和 或发送反馈的域名和用户名 有没有一种方法可以在不需要用户登录的情况下执行此操作 我试过了this
  • 当 foreach 块的内容具有 Conditional 属性时,C# 编译器是否会对其进行优化?

    我正在工作中编写一些调试代码 我想知道我所做的是否会损害性能 让我们看一下代码 foreach var item in aCollection Debug WriteLine item Name 我知道 Debug 类使用 Conditio
  • 何时使用 C++ 私有继承而不是组合?

    你能给我一个具体的例子吗 什么时候使用私有继承优于组合 就我个人而言 我将使用组合而不是私有继承 但在某些情况下 使用私有继承可能是特定问题的最佳解决方案 正在阅读C faq http www parashift com c faq lit
  • 如何在 ASP.NET Core 6.0 Web API 项目中启用 cors?

    在我的 ASP NET Core 6 0 Web API 项目中配置了 CORS 但预检请求收到 http 405 错误 换句话说 不允许使用 HTTP OPTION 看起来 cors 没有启用 我见过的例子config EnableCor
  • c 使用 lseek 以相反顺序复制文件

    我已经知道如何从一开始就将一个文件复制到另一个文件 但是我如何修改程序以按相反的顺序复制它 源文件应具有读取访问权限 目标文件应具有读写执行权限 我必须使用文件控制库 例如 FILE A File B should be ABCDEF FE
  • AcceptSocket 超时?

    是否有可能AcceptSocket on a TcpListener具有超时的对象 以便它偶尔被中断 TcpListener server new TcpListener localIP port server Start while sh
  • C#生成的csv文件通过电子邮件发送嵌入到Lotus Note中电子邮件的底部

    我遇到了一个奇怪的问题 即使用 NET SmtpClient 通过电子邮件发送的 CSV 附件出现在电子邮件底部 而不是 Lotus Note 中的附件 我只是不知道如何解决这个问题 而且我无法访问客户端计算机 这使得调试非常困难 我可以采
  • 从 Golang 调用 C 函数

    我想在 Golang 中编写控制器逻辑并处理 json 和数据库 同时在 C 中使用我的数学处理模型 在我看来 调用 C 函数的开销必须尽可能低 就像设置寄存器 rcx rdx rsi rdi 一样 执行一些操作fastcall 并获取 r
  • 多个线程访问一个变量

    我在正在读的一本教科书中发现了这个问题 下面也给出了解决方案 我无法理解最小值怎么可能是 2 为什么一个线程不能读取 0 而所有其他线程都执行并写入 1 而无论是1还是2 最后写入的线程仍然必须完成自己的循环 int n 0 int mai
  • 根据 Active Directory 策略检查密码[重复]

    这个问题在这里已经有答案了 我有一个允许用户更改其 AD 密码的前端 有没有办法获取特定用户及其属性 长度 复杂性 的密码策略 例如细粒度 有没有办法根据此特定策略检查字符串 xyz121 编辑 我不想检查活动目录中存储的当前密码 我想检查
  • 为什么 rand() 总是返回相同的值? [复制]

    这个问题在这里已经有答案了 可能的重复 在C中生成随机数 https stackoverflow com questions 3067364 generating random numbers in c 使用 rand 生成随机数 http
  • 原子的 C++ 内存屏障

    在这方面我是个新手 谁能提供以下内存屏障之间差异的简化解释 窗户MemoryBarrier 围栏 mm mfence 内联汇编asm volatile memory 内在的 ReadWriteBarrier 如果没有简单的解释 一些好文章或
  • 使用联合对 IP 地址进行多种解释?

    在工作中 我们使用以下构造来将 IP 地址解释为 4 字节数组或 32 位整数 union IPv4 std uint32 t ip std uint8 t data 4 这很好用 但是读完这本书的第 97 章 不要使用联合来重新解释表示
  • 包含从代码隐藏 (ASP.NET C#) 到 ASPX 中的图像概述的图像列表 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • boost::spirit::qi::语法和可变参数模板

    我在使用可变参数模板定义语法时面临一个问题 我首先定义一些包含在某些结构中的简单语法 例如纬度 经度 如下所示 include

随机推荐

  • html gif无限循环播放,【GIF】无限循环GIF太神奇,有人知道这是怎么做的吗?

    今天橘子君给大家介绍一位土耳其摄影艺术家Erdal Inci的GIF作品 有没有感觉是无限循环的 没错 无限循环的动态影像作品 现在使用GIF也能办到 土耳其摄影艺术家 Erdal Inci 把运动人物连续的动作合成到同一个画面 并做成循环
  • PROFIBUS DP从站开发 VPC3源程序分析---vpc3_cfg_data_not_ok(void)

    以下程序注释由成都地质学院霸王猫添加 引用时请尊重作者劳动成果 标明引用者来自成都地质学院霸王猫 UBYTE vpc3 cfg data not ok void 入口参数 无 出口参数 无 返回值 VPC3 CFG FINISHED VPC
  • Python最常用的7个框架讲解!

    众所周知 Python语言中内置了很多框架 拿来即用 为我们的工作带来了很多便利 也提高了效率 本文为大家介绍7种常见且实用的Python框架 主要包括 Django flask scrapy Diesel Cubes Pulsar和Tor
  • Apipost,更懂中国程序员的接口调试神器

    Hello 大家好 我是灰小猿 一个超会写bug的程序猿 作为一名Java后端程序猿 对接口调试简直是家常便饭 尤其是在进行接口联调的时候 往往因为和前端对接口的理解程度不同 于是乎就出现了 而且 程序员的蹩脚英语往往是不能区分Java和j
  • 修改Tomcat的默认端口号

    1 找到Tomcat的安装路径 2 打开conf文件夹 3 用记事本打开server xml文件 4 找到
  • 从Vue-cli脚手架的基本使用到vue路由的基本使用

    第一部分 Vue cli脚手架 vue2是对新手很友好的MVVM框架 有完善的官方中文文档 阅读起来也非常容易理解 由浅入 深 示例完整 同时官方也提供了一个开箱即用的 vue cli 帮我们生成一个完整的项目框架 vue js 著名的全家
  • linux运行python代码进行训练时断开服务器中断训练解决办法

    无论是远程连接服务器还是将服务资源拉取的pycharm中使用 都会存在一个问题 就是远程客户端关闭后 服务端的训练就会终止 这样对于远程客户端的限制就非常大 为了解决这个问题 只需要在训练时按照下面命令操作即可完成 第一步 nohup py
  • Pytest的乐趣

    Pytest的乐趣 前言 安装 关键词test 关键词assert 进阶一 参数 进阶二 软断言 进阶三 配置文件pytest ini 进阶四 前后设置 进阶五 并行测试 进阶六 命令行参数扩展 前言 Pytest就是为了测试已经完成的Py
  • centos7下使用yum安装mysql数据库

    分享下装mysql数据库的过程以及远程连接的方法 整合了部分网上的资源以及自己遇到的一些问题 常用的一些命令就不一 一介绍了 话不多说 马上开始 1 下载mysql的repo源 wget http repo mysql com mysql
  • Python3 如何优雅地使用正则表达式(详解四)

    更多强大的功能 到目前为止 我们只是介绍了正则表达式的一部分功能 在这一篇中 我们会学习到一些新的元字符 然后再教大家如何使用组来获得被匹配的部分文本 更多元字符 还有一些元字符我们没有讲到 接下来小甲鱼一一为大家讲解 有些元字符它们不匹配
  • 现代控制理论(4)——李雅普诺夫稳定性理论

    文章目录 一 李雅普诺夫关于稳定性的定义 1 李氏意义下的稳定 2 渐近稳定 3 大范围渐近稳定 4 不稳定 二 李雅普诺夫第一法 1 线性系统的稳定判据 2 非线性系统的稳定判据 三 李雅普诺夫第二法 1 标量函数的定号性 2 稳定性原理
  • 钓鱼篇-利用RLO隐藏exe&文件捆绑&office免杀-远程模板加载上线CS

    RLO伪装图片执行 利用msf生成木马x exe msfvenom p windows meterpreter reverse tcp LHOST 192 168 96 128 LPORT 4444 f exe o x exe Metasp
  • 使用matlab里的集成树进行数据回归预测

    当使用MATLAB时 您可以使用集成学习方法中的决策树来进行数据回归预测 决策树回归是一种基于树状结构的机器学习算法 它通过对训练数据进行分层次的决策来进行预测连续值的输出 MATLAB提供了一个称为RegressionTree的集成树回归
  • pandas数据判断是否为NaN值的方式

    实际项目中有这样的需求 将某一列的值 映射成类别型的数据 这个时候 需要我们将范围等频切分 或者等距切分 具体的做法可以先看某一些特征的具体分布情况 然后我们选择合适的阈值进行分割 def age map x if x lt 26 retu
  • SpringBoot添加过滤器详解

    目录 一 过滤器详解 二 SpringBoot 添加过滤器 一 过滤器详解 过滤器 Filter 是 Java Web 应用中的一种重要组件 用于对请求和响应进行拦截和处理 它可以用于执行各种任务 如请求预处理 请求和响应的转换 授权检查
  • CSS Day03

    1 相对定位 relative 相对于原来位置移动 元素设置此属性之后仍然处在文档流中 不影响其他元素的布局 菜鸟教程
  • React框架学习笔记

    React系列知识点 一 项目初始化 1 react script 2 TSX 3 组件化 配置React的CSS模组 1 使用React最大的优势是模组化 CSS module 2 TS的定义声明 3 css类型声明 4 CSS in J
  • APP自动化测试-3. Appium元素定位与等待

    APP自动化测试 3 Appium元素定位与等待 文章目录 APP自动化测试 3 Appium元素定位与等待 前言 一 Appium Desired Capabilities简介 1 Appium Desired Capabilities通
  • 2022年天梯赛-全国总决赛 L2-1 插松枝 (25 分)

    又来补题了哎哎哎 考试的时候卡了一小时就离谱 include
  • c#之泛型

    using System using System Collections Generic using System Linq using System Text using System Threading Tasks namespace