struct const 数组的初始化

2024-01-13

如何对结构类型的数组进行常量初始化?例如,在 C 中我会做这样的事情:

struct Item {
    int a;
    char const * b;
};
Item items[] = {
    { 12, "Hello" },
    { 13, "Bye" },
};

我一直在查看各种 C# 参考资料,但找不到等效的语法。有吗?


示例代码:

struct Item
{
    public int a;
    public string b;
};
Item[] items = {
    new Item { a = 12, b = "Hello" },
    new Item { a = 13, b = "Bye" }
};

引入参数化构造函数的附加选项:

struct Item
{
    public int a;
    public string b;

    public Item(int a, string b)
    {
        this.a = a;
        this.b = b;
    }
};
Item[] items = {
    new Item( 12, "Hello" ),
    new Item( 13, "Bye" )
};

正如@YoYo 建议的那样,删除了new[] part.

棘手的方法(对于以下情况new Item太打扰你了)

声明新类:

class Items : List<Item>
{
    public void Add(int a, string b)
    {
        Add(new Item(a, b));
    }
}

然后你可以将其初始化为:

Items items = new Items {
    { 12, "Hello" },
    { 13, "Bye" }
};

您还可以申请.ToArray的方法List得到一个数组Items.

Item[] items = new Items {
    { 12, "Hello" },
    { 13, "Bye" }
}.ToArray();

该技巧基于集合初始值设定项(http://msdn.microsoft.com/en-us/library/bb384062.aspx http://msdn.microsoft.com/en-us/library/bb384062.aspx):

通过使用集合初始值设定项,您不必指定对Add源代码中类的方法;编译器添加调用。

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

struct const 数组的初始化 的相关文章

  • 通过 CMIS (dotCMIS) 连接到 SP2010:异常未经授权

    我正在使用 dotCMIS 并且想要简单连接到我的 SP2010 服务器 我尝试用 C 来做到这一点 如下所示http chemistry apache org dotnet getting started with dotcmis htm
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 按成员序列化

    我已经实现了template
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall

随机推荐

  • 获取 boto.cfg 中的 Python 凭据文件

    我是第一次使用 AWS 刚刚安装了 python 的 boto 我陷入了它建议的步骤 您可以将此文件放置在 etc boto cfg 中供系统范围使用 也可以放置在执行命令的用户的主目录中 boto 老实说 我不知道该怎么办 首先 我找不到
  • 使用 newID() 创建函数

    我不断收到此错误 有什么想法吗 在函数内的 newid 中无效使用副作用或时间相关运算符 我正在与MS SQL Server 2005 这里是T SQL陈述 Create Function dbo GetNewNumber RETURNS
  • 触发多事件

    我可以在trigger 中触发多个事件或在JQuery 中链接它们吗 例如 element trigger event1 event2 event3 or element trigger event1 trigger event2 or e
  • =~ 在 Perl 中做什么?

    我猜标签是一个变量 它正在检查9eaf 但这在 Perl 中存在吗 这里的 符号是做什么的 前后的 字符是什么9eaf doing if tag 9eaf Do something 是测试正则表达式匹配的运算符 表达方式 9eaf 是一个正
  • 什么都没有,WithEvents 字段和内存泄漏

    是否需要设置为Nothing 在 Dispose 中 所有WithEvents fields 显然Handles关键字将处理程序添加到此类字段 但不会将其删除 直到该字段不再存在为止 Nothing 这会产生内存泄漏 这对于像这样的情况应该
  • fork() 后处理子进程中 std::thread 终止的正确方法

    你想皱多少皱眉就皱多少 无论如何我都会这么做 我的问题是 在下面的代码中 处理终止的正确方法是什么std thread在生成的子进程中fork std thread detach or std thread join include
  • 如何在 Rails 1.2.3 中使复选框默认为“选中”?

    如何使复选框在最初显示时默认为 选中 我还没有找到一种 Rails 方法来做到这一点 有效 所以我用 JavaScript 做到了 Rails 有没有正确的方法来做到这一点 我正在使用 Rails 1 2 3 导轨 3 x form for
  • 在 Android 上刷新地图活动中的覆盖对象

    我必须构建一个地图活动 最重要的是 我需要显示一些位置点 这些位置是从另一个类的哈希表中检索的 该哈希表的内容始终会发生变化 因此 我希望看到地图活动上的这些位置点随着哈希表的修改而移动 代码如下所示 Override public voi
  • 动态数据表到实体*无需*提前进行硬编码...?

    问题 问 为什么不能 如何动态使用 DataTable 中的数据在使用反射 的函数中创建 LINQ EF 以根据可用内容创建实体实例 我看到了很多很多的问题和关于硬编码 但没有人这样做动态地 我正在寻找一种替代方法 不必为我的所有实体维护硬
  • Angular 2+:IE11 严格模式下不允许对属性进行多重定义

    我安装了 pollyfills 但在 main bundle js 中的 Internet Explorer 11 中收到此错误 它位于第 9692 行 但是查看编译后的代码 我无法理解它 这里是 styles nng select cus
  • 计算每个组的 data.table 窗口中的值数量

    我正在尝试添加新列data table 其中行中的值取决于行中值的相对关系 更准确地说 如果一行中有一个值 X 我想知道同一列 和组 中有多少个其他值在 X 30 范围内 也就是说 考虑到 DT lt data table X c 1 2
  • 在 PyQt 中播放声音文件

    我在 PyQt 中开发了一个播放声音的软件 我使用 Phonon Library 来播放声音 但它有一些滞后 那么如何在不使用 Phonon Library 的情况下在 PyQt 中播放声音文件 这就是我目前使用 Phonon 的方式 de
  • 尝试使用 Powershell 从 csv 导入信息,但不幸的是某些结果出现错误

    AuditSuccess Import Csv Path G LabLog csv Where Object Keywords like Audit Success Measure Object Select Object count Au
  • Node.js 和使用 Q 进行异步编程

    以下是正确的处理方式吗 这是一个注册控制器操作 我正在创建一个用户和一个组以将用户添加到其中 请注意 我有称为用户和组的方法级别变量 其余代码使用 Q 模块进行异步 是否可以使用方法级别变量 或者它们会被同时注册的其他人覆盖吗 export
  • setup.py 不遵守 PIP_INDEX_URL

    我正在运行本地pypi服务器 https pypi python org pypi pypiserver 我可以通过使用以下命令指定它来从该服务器安装软件包 i的选项pip命令或通过设置PIP INDEX URL环境变量 当我安装具有先决条
  • 在 R 中的 data.table 中执行 := by group 时如何更改目标列的类型?

    我正在尝试对 整数 类型的现有列执行 by group 操作 其中新值的类型为 double 但失败了 我的场景是根据其他列中的值将表示时间的列转变为 POSIXct 我可以修改 data table 的创建作为解决方法 但我仍然对如何实际
  • 如何获取联网设备的“型号名称”(可能使用 Bonjour)?

    Apple 的 Finder app 能够一致地确定每台使用 bonjour 的物理计算机的确切型号 每个设备类型的图标都是唯一的 这证明了这一点 iMac MacPro MBP 等 他们如何做到这一点以及他们使用哪些 API 顺便说一句
  • void*可以用来存储函数指针吗? [复制]

    这个问题在这里已经有答案了 void 的定义方式使得它可以指向任何东西 那么它可以用来指向一个函数 int send 吗 int send void p send 是否可以 当我这样使用时 它没有显示错误 为什么 如果没有 有没有办法将所有
  • 角度材质表自定义过滤器添加和删除多个术语

    我正在使用 Angular 的material ui 表和material chip 实现自定义过滤器 其中涉及能够通过多个关键字的匹配来搜索数据 用户应该能够添加关键字 并且表格应该过滤适当的匹配项 并且用户还应该能够删除任何关键字 并且
  • struct const 数组的初始化

    如何对结构类型的数组进行常量初始化 例如 在 C 中我会做这样的事情 struct Item int a char const b Item items 12 Hello 13 Bye 我一直在查看各种 C 参考资料 但找不到等效的语法 有