8
새 튜플 기능으로 C#에서 오류가 발생했습니다. 튜플 값을 결정하기 위해 삼항 연산자를 사용한다면, 괄호로 묶어야합니다. 메서드 호출에서 이것이 사실이 아니기 때문에 나는 이것을 기대하지 않았다.C에서 튜플을 만들 때 괄호없이 컴파일 오류가 발생했습니다.
이유가 있습니까? 아니면 버그입니까?
설정 :
- 비주얼 스튜디오 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