结构与类中使用的泛型

2023-12-28

假设我们有以下内容struct使用泛型的定义:

public struct Foo<T>
{
    public T First; 
    public T Second;

    public Foo(T first)
    {
        this.First = first;
    }

}

编译器说

在控制权返回给调用者之前,必须完全分配“Foo.Second”

然而,如果Foo是一个类,那么就编译成功了。

public class Foo<T>
{
    public T First; 
    public T Second;

    public Foo(T first)
    {
        this.First = first;
    }

}

为什么?为什么编译器会以不同的方式对待它们?此外,如果第一个中没有定义构造函数Foo然后它就编译了。为什么会有这种行为?


这是因为编译器规则强制要求必须在控制权离开任何构造函数之前分配结构中的所有字段。

您可以通过执行以下操作使代码正常工作:

public Foo(T first)
{
    this.First = first;
    this.Second = default(T);
}

另请参阅为什么必须使用非默认构造函数初始化 C# 结构中的所有字段? https://stackoverflow.com/questions/721246/why-must-i-initialize-all-fields-in-my-c-sharp-struct-with-a-non-default-constru

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

结构与类中使用的泛型 的相关文章

  • 求 a 范围内的 pow(a^b)modN

    对于给定的b and N以及一系列a say 0 n 我需要找到ans 0 n 1 where ans i 没有a s为此pow a b modN i 我在这里搜索的是可能的重复pow a b modN对于一系列a 以减少计算时间 例子 i
  • 在子目录中构建共享库

    我正在尝试构建一个使用一些 C 代码的 R 包 我有一个编译为可执行文件的 C 库 可以从命令行调用 有一个与之关联的 Makefile 我正在尝试获取信息here http cran r project org doc manuals R
  • 以编程方式更改 Excel 中的字体(Trebuchet MS、Calibari)C#

    我目前正在使用一个 C 应用程序 该应用程序有一个将生成 Excel 文件的类 一切都很顺利 Excel 工作表上填充的数据具有 Times New Roman 字体 我想将其更改为其他字体 Calibari 我怎样才能以编程方式做到这一点
  • 如何将 CroppedBitmap 转换为 BitmapImage

    我正在尝试将 CroppedBitmap 转换为 BitmapImage 编辑 不使用内存流 我尝试过直接转换它 似乎这不是一个选择 这应该没那么难 我正在尝试剪切 BitmapImage 的一部分 并创建一个仅包含新裁剪的 Bitmap
  • 将标准库添加到C++ eclipse项目中

    一个 非常 新手 C 问题 有没有办法自动将标准库添加到 C eclipse 项目中 我安装了 CDT 主要功能插件 您可以手动添加 STL 标头的路径路径和符号 gt 包含选项卡 http help eclipse org galileo
  • 在 C/C++ 中绘制填充椭圆的简单算法

    在SO上 找到了以下绘制实心圆的简单算法 for int y radius y lt radius y for int x radius x lt radius x if x x y y lt radius radius setpixel
  • MVVM 同步集合

    是否有一种标准化方法可以将 Model 对象集合与 C 和 WPF 中匹配的 ModelView 对象集合同步 我正在寻找某种类 可以使以下两个集合保持同步 假设我只有几个苹果 并且可以将它们全部保存在内存中 换句话说 我想确保如果我将 A
  • 持续运行的 C# 代码 - 服务还是单独的线程?

    我有一个 NET 4 Web 应用程序 它有 3 个关联的独立项目 DAL BAL 和 UI 我正在使用实体框架进行数据库交互 我有代码循环遍历一堆数据库数据 根据找到的内容调用方法 然后更新数据库 我希望这段代码一直运行 同时 我希望用户
  • 第三方引用的 dll 未被复制来构建

    我有一个第三方 net dll 被我的 dll 类库项目 A 引用和使用 我的控制台应用程序项目 B 引用项目 A 我的问题是第三方 dll 没有被复制到控制台应用程序项目 B 的构建中 这里有什么问题呢 我的 dll 类库中引用的第三方
  • Excel 2007 中的数值 - 底层 xml 文件中的表示与存储

    这个问题与 NET和OpenXml有关 我已经阅读了以下文章 它有很好的解释 但没有回答我的问题 Excel 2007 中数值的可视化与底层 xml 文件不一致 https stackoverflow com questions 58594
  • OpenMP 循环数组访问中的错误共享

    我想利用 OpenMP 来并行执行我的任务 我需要将数组的所有元素减去相同的数量并将结果写入另一个向量中 两个数组都是动态分配的malloc第一个填充了文件中的值 每个元素都有类型uint64 t pragma omp parallel f
  • 如何在 C++ 中初始化嵌套类的构造函数

    我在初始化嵌套类构造函数时遇到问题 这是我的代码 include
  • 内存不足异常

    我正在使用 C 和 asp net 开发一个网络应用程序 我一直收到内存不足的异常 该应用程序的作用是从数据源读取一堆记录 产品 可能是数百 数千 通过向导中的设置处理这些记录 然后使用处理的产品信息更新不同的数据源 虽然有多个 DB 类
  • WPF MVVM后台打印数据绑定问题

    我正在使用 wpf mvvm 开发一个销售点应用程序 在交易生命周期的许多阶段 都会在后台打印收据 我已经使用其他示例在后台生成和打印收据 我正在后台打印一个 UserControl 一切看起来都很棒 然后 我为该控件创建了 ViewMod
  • 除法时的小数舍入误差 (C#)

    我基本上有四个数字 比如 100 200 300 400 我需要计算概率为 100 100 200 300 400 200 100 200 300 400 等等在 当我使用小数数据类型来存储这些概率时 由于舍入问题 它们不会达到 1 在不使
  • 合并大文件的最佳方法是什么?

    我必须合并数千个大文件 每个大约 200MB 我想知道合并这些文件的最佳方法是什么 行将有条件地复制到合并文件中 可以使用 File AppendAllLines 或使用 Stream CopyTo 吗 使用 File AppendAllL
  • 预览MouseMove 与 MouseMove

    我有相当多的 XAML 经验 但最近我注意到我的大多数同事都使用预览鼠标移动代替鼠标移动事件 我一直用鼠标移动它对我很有帮助 但我忍不住问我什么时候应该使用预览鼠标移动什么时候鼠标移动 有什么区别 各自有什么优点和缺点等等 PreviewM
  • 如何以一对一/零关系更新员工和身份用户

    我正在尝试更新员工记录 也想更新身份用户 如果我先单独更新身份用户 例如 UserManager Update user Context Entry employee State System Data Entity EntityState
  • 从不同的线程访问对象

    我有一个服务器类 它基本上等待来自客户端的连接 在该类中 我创建了一个 NetworkStream 对象 以便能够从客户端接收字节 由于 NetworkStream Read 方法不是异步的 这意味着它将等到从客户端读取字节才能继续执行类似
  • 如何从与 C# lambda 集成(而非代理集成)的 Amazon API 网关获取正确的 http 状态代码?

    我正在使用 C lambda 与 API 网关集成 我希望 API 网关返回正确的错误代码 例如 400 404 500 等 API网关模块tf文件 provider aws version lt 2 70 0 region var aws

随机推荐

  • Linux 中 C 代码的大括号用法(include/linux/list.h)的用途?

    我在 Linux 中遇到了以下代码 include linux list h 我对第 713 行感到困惑 特别是 我不明白 n pos gt member next 1 大括号是做什么的 为什么这个语句中有一个 1 如果有人能解释这条特定的
  • sqlsrv 通过网络非常慢

    我在 PHP 5 5 12 中使用 sqlsrv php pdo sqlsrv 55 ts dll 和 php sqlsrv 55 ts dll 通过 VPN 隧道连接到 MSSQL 2012 服务器 但大型结果集的传输速度非常慢 在同一台
  • FabricJS:当我更改路径坐标时,路径的边界框不会更新

    我们在处理结构中的路径时遇到问题 当用户拖动第一个点或最后一个点时 我们需要始终更改二次线 路径 的坐标 路径会像往常一样更新 但问题是路径的边界框不会随着 object path 的每次更改而更新 参见图片 function var ca
  • 如何删除已安装的 Visual Studio 2013 扩展 .vsix 文件?

    我刚刚安装了生产力电动工具 2013 http visualstudiogallery msdn microsoft com dbcb8670 889e 4a54 a226 a48a15e4cace对于我的 Visual Studio 20
  • 如何立即将信号捕获到交互式 Bash shell?

    我尝试从一个终端 A 向另一个终端 B 发送信号 两者都运行交互式外壳 在终端 B 中 我捕获信号 SIGUSR1 如下所示 trap source mycommand SIGUSR1 现在在终端 A 我发送一个信号 如下所示 kill S
  • 如何将 go.mod 中的 Go 模块依赖项指向存储库中的最新提交?

    从 v1 11 开始 Go 添加了对模块的支持 命令 go mod init
  • 从 R 中的 data.table 的列中删除序列号[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个数据表 dt 有三列 nm seqn 和 obj gt nm lt letters 1 22 gt seqn lt c 32
  • 如何检测以编程方式生成的 UIView 的旋转

    我有一个UIView这是以编程方式创建的 id initWithFrame CGRect frame self super initWithFrame CGRectMake 0 0 frame size width frame size h
  • Gmail 网址中的“shva”是什么?

    Gmail 网址的以下部分有何用途 https mail google com mail zx 1efobg68r40co shva 1 inbox 如果你改变它 什么也不会发生 我知道 Gmail 不是开源程序 因此我们无法追踪代码 但每
  • python - 返回默认值

    我正在寻找模仿内置函数的行为 例如getattr 允许用户指定 默认 返回值 我最初的尝试是这样做 def myfunc foo default None do stuff if default is not None return def
  • MVC 3 不绑定可为 null 的 long

    我创建了一个测试网站来调试我遇到的问题 看来要么是我传入的 JSON 数据错误 要么是 MVC 无法绑定可为 null 的 long 当然 我使用的是最新的 MVC 3 版本 public class GetDataModel public
  • UISearchController iOS 11 定制

    在 iOS 11 之前我一直使用以下代码来自定义外观UISearchController搜索栏 var searchController UISearchController searchResultsController nil sear
  • 使用 HTML5 语义标记搜索结果列表

    如果您只需要一些有用的东西 那么制作搜索结果列表 例如在 Google 中 并不难 然而现在 我想利用 HTML5 语义的优势来完美地做到这一点 目标是定义标记搜索结果列表的事实上的方式 该列表可能被任何未来的搜索引擎使用 对于每一次点击
  • Azure 权限中的“变体”是什么

    在关于这个的例子中https learn microsoft com en us powershell microsoftgraph find mg graph command view graph powershell 1 0 https
  • java到底有没有指针? [关闭]

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

    我正在寻找问题的解决方案 但找不到 它可以是 AngularJS 或 Javascript 然后我将其翻译成 AngularJS 问题是我必须限制简单文本区域的行数 HTML5 的属性 rows x 仅限制视图 我必须限制线路 问题是 即使
  • urllib2 基本身份验证的奇怪之处

    我正用这个把头撞在墙上 我一直在尝试每个示例 阅读我可以在网上找到的有关 urllib2 基本 http 授权的所有最后一点 但我无法弄清楚是什么导致了我的特定错误 更令人沮丧的是 该代码适用于一个页面 但不适用于另一页面 登录 www m
  • Python 2.7 尝试并排除 ValueError

    我使用 int raw input 查询预计为 int 的用户输入 然而 当用户没有输入整数 即只是按回车键时 我会得到一个 ValueError def inputValue inputMatrix rangeRows rangeCols
  • 尝试在 woocommerce Analytics -> 订单报告表中添加订单项目名称列(并输出到 csv 文件)

    我正在尝试向 WooCommerce Analytics gt 订单提供的表中添加一列 并且该订单的商品名称 不是产品名称 显示在其上 我添加了一个钩子并尝试提取订单中商品的所有名称 这个钩子是我之前使用过的 它在 WooCommerce
  • 结构与类中使用的泛型

    假设我们有以下内容struct使用泛型的定义 public struct Foo