'Out Double?'에서 변환 할 수 없습니다. '더블 아웃'
-
05-07-2019 - |
문제
내가 작성하는 앱에 다음 코드 섹션이 있습니다.
...
String[] Columns = Regex.Split(CurrentLine, Delimeter);
Nullable<Double> AltFrom;
...
if (AltFrom == null)
{
Double.TryParse(Columns[LatIndex].Trim(), out AltFrom);
}
...
IF 절의 선이 컴파일되지 않고 오류를 보여줍니다. 'Out Double?'에서 변환 할 수 없습니다. '더블 아웃'
내가 무효 유형으로 만들지 않고 오히려 그것을 두 배로 명시 적으로 명시하지 않으면 모든 것이 행복합니다.
확실히 이것은 유효한 코드입니다. 이것은 단지 C#의 버그입니까 아니면 내가 뭔가 잘못하고 있습니까?
해결책
먼저 암시 적으로 변환 할 수 없습니다 double?
a double
. 그 이유는 double
만약 double?
대표 null
가치 (즉, value.HasValue
거짓입니까)? 즉, a에서 변환합니다 double?
a double
정보 손실을 초래합니다 (좁은 전환입니다). 암시 적 좁은 전환은 일반적으로 프레임 워크에서 눈살을 찌푸립니다.
그러나 실제로 여기서보고있는 문제는 다른 것입니다. 당신이 수락하는 메소드가있을 때 out
유형의 매개 변수 T
, 당신은 유형의 변수로 전달해야합니다 T
; 이 경우에는 비가 없기 때문에 유형의 변형이 없습니다.ref
그리고 비out
매개 변수.
문제를 해결하려면 다음을 사용하십시오.
if (AltFrom == null) {
double value;
Double.TryParse(Columns[LatIndex].Trim(), out value);
AltFrom = value;
}
다른 팁
아웃 매개 변수는 실제로는 필요하지 않습니다 double
, Nullable<double>
.
double? altFrom = null;
double temp = 0;
if (double.TryParse( Columns[LatIndex].Trim(), out temp))
{
altFrom = temp;
}
제휴하지 않습니다 StackOverflow