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

如何使用C#的is关键字对指定元组进行模式匹配?

解决Blazor中装箱元组的类型检查问题

问题原因

当值类型元组(如(IdentityUser, string))被装箱为object后,直接使用is (IdentityUser, string)会触发CS1061编译错误——编译器无法直接识别装箱后的元组类型,需要明确匹配值元组的具体类型或使用解构模式。

正确的类型检查语法

以下两种方式均可正确检查装箱对象是否为(IdentityUser, string)元组:

方式1:匹配具体的ValueTuple类型

object droppedObject = // 拖拽得到的装箱对象

if (droppedObject is ValueTuple<IdentityUser, string> tuple)
{
    IdentityUser student = tuple.Item1;
    string extraInfo = tuple.Item2;
    // 编写后续处理逻辑
}

方式2:使用解构模式(C# 7.0及以上版本支持)

这种写法更简洁,还能直接解构出元组内的变量:

object droppedObject = // 拖拽得到的装箱对象

if (droppedObject is (IdentityUser student, string extraInfo))
{
    // 直接使用解构后的student和extraInfo变量
    // 编写后续处理逻辑
}

同时支持IdentityUser和元组的完整逻辑

结合你需要同时兼容两种类型的场景,完整代码示例如下:

object droppedObject = // 拖拽得到的装箱对象

if (droppedObject is IdentityUser user)
{
    // 处理单个IdentityUser实例的逻辑
}
else if (droppedObject is (IdentityUser student, string extraInfo))
{
    // 处理元组类型的逻辑
}
else
{
    // 处理不支持类型的逻辑
}

内容的提问来源于stack exchange,提问作者Bennyboy1973

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:40:44