相关疑难解决方法(0)

对值类型元组使用`is`运算符会产生错误

我正在尝试检查object变量是否是(int, int),如果可以,我将使用强制类型转换的变量,因此我尝试了以下代码:

//this one gives the error
public void MyMethodWithIs(object val)
{
    if(val is (int id, int name) pair)
    {
        ConsoleWriteLine($"{pair.id}, {pair.name}");
    }
}

//This one works
public void MyMethodWithAs(object val)
{
    var pair = val as (int id, int name)?;
    if(pair!=null)
    {
        ConsoleWriteLine($"{pair.id}, {pair.name}");
    }
}
Run Code Online (Sandbox Code Playgroud)

MyMethodWithIs方法在编辑器中给出以下错误:

找不到适用于类型的合适的解构实例或扩展方法

我的问题

为什么一个工作正常,而另一个却出现错误呢?我认为它MyMethodWithIs更具可读性,适合用于我的案子,但由于出现错误,我无法使用它。

c# valuetuple

18
推荐指数
1
解决办法
529
查看次数

如何在switch语句中使用c#tuple值类型

我在.net 4.7中使用新的元组值类型.在这个例子中,我试图为一个或多个元组的情况创建一个switch语句:

using System;
namespace ValueTupleTest
{
    class Program
    {
        static void Main(string[] args)
        {
            (char letterA, char letterB) _test = ('A','B');
            Console.WriteLine($"Letter A: '{_test.letterA}', Letter B: '{_test.letterB}'");

            switch (_test)
            {
                case ('A', 'B'):
                    Console.WriteLine("Case ok.");
                    break;
            }

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不编译.

如何正确地使用元组并在switch语句中创建案例?

c# tuples switch-statement c#-7.0

8
推荐指数
5
解决办法
4748
查看次数

标签 统计

c# ×2

c#-7.0 ×1

switch-statement ×1

tuples ×1

valuetuple ×1