在 C# 中表示什么[重复]

2024-01-11

我是 C# 新手,直接深入修改我收到的项目的一些代码。但是,我不断看到这样的代码:

class SampleCollection<T>

我无法理解

<T> 

意思也不是什么。

如果有人愿意帮我说出这个概念的名称,我可以在线搜索。不过,我现在还一无所知。


It is a 通用类型参数 https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/generic-type-parameters.

泛型类型参数允许您在编译时向方法指定任意类型 T,而无需在方法或类声明中指定具体类型。

例如:

public T[] Reverse<T>(T[] array)
{
    var result = new T[array.Length];
    int j=0;
    for(int i=array.Length - 1; i>= 0; i--)
    {
        result[j] = array[i];
        j++;
    }
    return result;
}

反转数组中的元素。这里的关键点是数组元素可以是任何类型,并且该函数仍然可以工作。您在方法调用中指定类型;类型安全仍然得到保证。

因此,要反转字符串数组:

string[] array = new string[] { "1", "2", "3", "4", "5" };
var result = Reverse(array);

将产生一个字符串数组result of { "5", "4", "3", "2", "1" }

这与调用普通(非泛型)方法具有相同的效果,如下所示:

public string[] Reverse(string[] array)
{
    var result = new string[array.Length];
    int j=0;
    for(int i=array.Length - 1; i >= 0; i--)
    {
        result[j] = array[i];
        j++;
    }
    return result;
}

编译器看到array包含字符串,因此它返回一个字符串数组。类型string被替换为T类型参数。


泛型类型参数也可用于创建泛型类。在你给出的例子中SampleCollection<T>, the T是任意类型的占位符;代表着SampleCollection可以表示对象的集合,其类型是您在创建集合时指定的。

So:

var collection = new SampleCollection<string>();

创建一个可以保存字符串的集合。这Reverse上面说明的方法(以稍微不同的形式)可用于反转集合的成员。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# 中表示什么[重复] 的相关文章

随机推荐

  • Mongo 类不会在 Yii 控制台应用程序中自动加载

    我正在使用 Yii 和 mongodb YiiMongoDbSuite 扩展 并创建了一个控制台应用程序 但它不起作用并给出错误 include Mongo php 无法打开流 没有这样的文件或目录 在文件 var www yii fram
  • 如何从日志文件中制作 JMeter 输出图表?

    我需要生成与 JMeter 相同的图表 但来自我的应用程序 C VB 等 随时间变化的响应时间 https i stack imgur com qDJj9 png 响应时间分布 https i stack imgur com ujcy3 p
  • ASP.NET 解析来自 ajax 调用 javascript 日期的 DateTime 结果

    介绍 我有一个WebMethod在我的 ASP NET 页面上返回一个Person目的 其中一个字段是Birthday这是一个DateTime财产 网络方法 WebMethod public static Person GetPerson
  • 简单注入器:在基类中注入属性

    几个星期以来我一直在使用简易注射器 https simpleinjector org依赖注入容器 取得了巨大成功 我喜欢它的简单配置 但现在我有一个设计 我不知道如何配置 我有一个基类 其中派生出许多类型 并且我想将依赖项注入到基类的属性中
  • PowerShell将字符串拆分为二维数组

    TL DR 使用 PowerShell 我想首先用换行符 n 拆分文本字符串 将其存储到数组中 然后用逗号将这些数组条目拆分为二维数组 我在访问 或可能创建 第二维中的任何信息时遇到问题 INFO 我有以下字符串 存储为 services
  • 将另一个提交导入到我的存储库

    抱歉 新手问题 但是有没有办法将其他人提交 到他自己的存储库 导入到我的存储库 手动更改 900 多个文件将是一件困难的事情 您需要将对方的存储库添加为您的远程存储库 并获取其更改 git remote add matefork
  • Docker - Dockerfile 中使用 RUN 的 MySQL 命令(错误 2002)

    我正在使用 Docker 创建一个以 mysql 作为基础镜像的 dockerfile FROM mysql set root pass ENV MYSQL ROOT PASSWORD password update linux RUN a
  • 远程服务器返回错误:(407) 需要代理身份验证

    我将此代码与 NET 3 5 一起使用并收到错误 远程服务器返回错误 407 需要代理身份验证 using WebClient client new WebClient WebRequest DefaultWebProxy Credenti
  • 如何动态添加分页符到打印页面?

    打印页面上的内容很长 但是我们在打印时将文本的一些内容剪掉了 替代文本 http img694 imageshack us img694 6766 printpage jpg http img694 imageshack us img694
  • Magento - 根据环境加载local.xml

    我想要 3 个app etc local xml文件 将它们称为 local xml staging xml 和 live xml 我想根据我在 vhosts 或 htaccess 中设置的环境变量加载它们 这样我就可以拥有单独的数据库等
  • 为什么 SqlParameter 名称/值构造函数将 0 视为 null?

    我在一段代码中观察到一个奇怪的问题 其中即席 SQL 查询没有产生预期的输出 即使其参数与数据源中的记录匹配 我决定在立即窗口中输入以下测试表达式 new SqlParameter Test 0 Value 这给出了结果null 这让我摸不
  • 如何在WPF中的特定位置添加菜单项?

    我想添加一个像这样的菜单项 AddChild new MenuItem Header Test 然而 问题是菜单项出现在最后 逻辑上 现在我正在寻找一种将其添加到特定位置的方法 A B C 我想将它添加到 A 和 B 之间 XAML 如下所
  • 在 R 中封装 sqldf

    是否可以在sqldf中的字符串内添加注释 就像是 sqldf select ProductID count distinct SalePrice as num regPz from MYDF where SalesFlag 0 coded
  • AndroidStudio - Gradle 中的模块依赖关系

    我在 Android Studio 中使用模块依赖项编译 Android 应用程序时遇到了一些问题 所以 我希望我的应用程序使用 slidingmenu 库 链接here https github com jfeinstein10 Slid
  • 确定 Delphi 中的 WPD 设备类型

    我正在尝试确定我的 WPD 设备在 Delphi 中的类型 在我的应用程序中 我需要知道该设备是手机还是相机或者什么 根据这篇 MSDN 文章 https msdn microsoft com en us library windows h
  • Nginx 无法通过 Ansible 重新启动

    我在剧本中有一个任务 尝试像往常一样通过处理程序重新启动 nginx name run migrations command bash lc some command notify restart nginx 然而 剧本因这个错误而中断 N
  • Feedback.js 服务器 API

    反馈 js http experiments hertzen com jsfeedback 是一个很棒的 jquery 插件 允许您创建反馈表单 其中包括在客户端浏览器上创建的屏幕截图以及表单 如何将捕获的图像和用户的评论发送到服务器端 a
  • 如果未设置变量,则使用函数对其进行初始化 - PHP

    执行脚本时 有时会设置变量 有时不会 有时情况并非如此 我会收到一个通知 表明该变量未定义 为了清除通知 我简单地添加了以下代码 if isset var var NULL 它可以根据需要工作 因为它测试变量是否尚未设置 这样我们就不会设置
  • 有没有办法知道 iOS 中的应用程序何时被删除?

    我的问题是这样的 我在 iOS 应用程序上安排了一些 UILocalNotifications 问题是 如果我删除应用程序而不删除与通知关联的对象 并因此从 ScheduledNotifications 数组中删除通知 通知仍然会触发 尽管
  • 在 C# 中表示什么[重复]

    这个问题在这里已经有答案了 我是 C 新手 直接深入修改我收到的项目的一些代码 但是 我不断看到这样的代码 class SampleCollection