8
新しいタプル機能でC#でエラーが発生しました。タプルの値を決定するために三項演算子を使用する場合は、それを括弧で囲む必要があります。私はこれを期待していませんでした。なぜなら、メソッド呼び出しではそうではないからです。C#でタプルを作成するときに三角演算子を囲む括弧のないコンパイルエラー
これには何らかの理由がありますか、それともバグですか?
セットアップ:
- のVisual Studio 2017
- ネット標準1.6クラスライブラリ
- System.ValueTuple(v4.3.0 - Nugetから)
マイコード:
public class Test
{
public bool Ok { get; set; }
public string Text { get; set; }
}
public class Class1
{
public void TestMethod()
{
//
// FROM OBJECT
//
Test obj = new Test() { Ok = true, Text = "asdf" };
StringMethod(true, obj.Ok ? obj.Text : "fsda"); // <-- OK
var result1 = (true, obj.Ok ? obj.Text : "fsda"); // <-- Error
var result2 = (true, (obj.Ok ? obj.Text : "fsda")); // <-- OK (Same as line above, but with addional brackets)
//
// FROM OTHER TUPLE
//
var tuple = OtherTuple();
StringMethod(true, tuple.ok ? tuple.text : "fdsa"); // <-- OK
var result3 = (true, tuple.ok ? tuple.text : "fdsa"); // <-- Error
var result4 = (true, (tuple.ok ? tuple.text : "fdsa")); // <-- OK (Same as line above, but with addional brackets)
}
public void StringMethod(bool state, string anyString)
{
}
public (bool ok, string text) OtherTuple()
{
return (true, "asdf");
}
}
https://github.com/dotnet/roslyn/pull/16834 – PetSerAl
また、https://github.com/dotnet/roslyn/issues/17135 – DavidG