我正在尝试检查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更具可读性,适合用于我的案子,但由于出现错误,我无法使用它。
我在.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语句中创建案例?