를 사용해야합니다 :암시 적 변환은 명시 적으로
public struct myStruct {
public static implicit operator int(Nullable<myStruct> m){
/*...*/
}
}
이 혼자 운영자 나 암시 적으로 nullable이 아닌 구조체 int로 변환하지만, 암시의 널 (NULL)로 변환하려고 할 수 있습니다
암시
int
에 유형myStruct?
을 변환 할 수 없습니다 : 대응은 여전히 컴파일 오류를 발생시킵니다. 명시 적 변환 (당신이 캐스트를 누락?)
이 분명히 언급 "명시 적"연산자 실제로 내가 선언 암시 적 연산자이 연산자를 제거 전부 또한 명시 적으로 하나의 언급을 제거 존재한다.
nullable structs에 관해서는 암시 적으로 선언 된 경우에도이 연산자를 명시 적으로 사용해야하는 이유는 무엇입니까?
편집 :
그래서 여기 은 "전체 코드", 컴파일러 오류가 사라하지 않는 모든 것을 제거합니다.
using System;
public struct boilDown {
public static implicit operator int(Nullable<boilDown> s) { return 0; }
} // END Struct
public class Sandbox {
void Update()
{
boilDown nonNullable = new boilDown();
Nullable<boilDown> NullableVersion = new Nullable<boilDown>();
int MyInt;
MyInt = nonNullable; // this work thanks to my operator
MyInt = NullableVersion; // But this line requires an explicit cast
}
}
버전 :
당신 모두가 C# 버전의 문제에서 저를 암시 구조체는 새로운 모든 내 테스트 코드, 같은 그대로 유지됩니다. Unity 2017.1.0f3에서 작업하고 있는데, .NET이 아닌 Mono 2.0.50727.1433이 사용됩니다. (분명히 NET3.5 동등한 것입니다. 그러나 실험용 NET4.6 버전에도이 문제가 있습니다.)
나는이 질문을하고 그들이 말하는 것을 보게 될 것입니다.
"int?"로 시도해보십시오. – Shubham
전체 코드를 제공하십시오. – apocalypse
전체 코드가 바로 시작됩니다. 버그까지 끓인 후에는 테스트 코드 만 구조체 자체에 새로운 내용이 없습니다. – Estecka