You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#可为空元组赋值null报错:元组长度影响错误触发

奇怪的C#可空元组编译错误

最小复现示例(MRE)

var outputs = new (
    (Typing First, Typing Second) a,
    (Typing First, Typing Second) b,
    (Typing First, Typing Second) c,
    (Typing First, Typing Second) d,
    (Typing First, Typing Second)? e,
    (Typing First, Typing Second) f,
    (Typing First, Typing Second)? g,
    (Typing First, Typing Second)? h
)[2];

outputs[0] = (
    (new Typing(), new Typing()),
    (new Typing(), new Typing()),
    (new Typing(), new Typing()),
    (new Typing(), new Typing()),
    (new Typing(), new Typing()),
    (new Typing(), new Typing()),
    (new Typing(), new Typing()),
    (new Typing(), new Typing())
);

outputs[0].h = null;  // 错误:无法将 null 转换为类型参数“T1”,因为它可能是值类型。请考虑改用“default(T)”。

class Typing
{
}

注意:该错误具有特殊性,若缩小元组结构(比如移除f或g字段),错误会消失。

错误复现条件

需在项目的.csproj文件中添加以下配置:

<Nullable>enable</Nullable>
<WarningsAsErrors>CS8600;CS8602;CS8603</WarningsAsErrors> <!-- 将可空警告视为错误 -->

验证情况

  • 报错截图:显示编译错误提示“无法将 null 转换为类型参数‘T1’,因为它可能是值类型。请考虑改用‘default(T)’”
  • 无报错截图:移除f或g字段后,代码无编译错误提示

环境详情

JetBrains Rider 2024.3.3
Build #RD-243.22562.250, built on December 23, 2024
Licensed to **************************
Subscription is active until *******************
Runtime version: 21.0.5+8-b631.28 amd64 (JCEF 122.1.9)
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Toolkit: sun.awt.windows.WToolkit
Windows 11.0
.NET Core v8.0.4 x64 (Server GC)
GC: G1 Young Generation, G1 Concurrent GC, G1 Old Generation
Memory: 4078M
Cores: 16
Registry:
  ide.experimental.ui=true
  i18n.locale=
  llm.show.ai.promotion.window.on.start=false
Non-Bundled Plugins:
  com.jetbrains.space (243.21565.122)
  com.chesterccw.excelreader (2024.11.1-243)
  me.lensvol.blackconnect (0.6.2)
  com.github.copilot (1.5.30-242)
  com.intellij.resharper.azure (4.3.8)

内容的提问来源于stack exchange,提问作者FluidMechanics Potential Flows

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 00:33:18