에서 지정된 메소드를 제기 F #으로 사용이 지원되지 않는 예외 내가 사용하는 F에 #이 일반적인 기능을 가지고 C 번호 :연산자 (- -)() 연산자 C#
:Unhandled Exception: System.NotSupportedException: Specified method is not supported. at ProjA.MainClass.Main (System.String[] args) [0x00000] in <4f209fa43741462db3b8f73ac83c35a2>:0 [ERROR] FATAL UNHANDLED EXCEPTION: System.NotSupportedException: Specified method is not supported. at ProjA.MainClass.Main (System.String[] args) [0x00000] in <4f209fa43741462db3b8f73ac83c35a2>:0
int a = sub<int, int, int>(4, 1);
이 오류가 발생합니다
이것은 (+) 연산자 또는 인라인 키워드 없이는 잘 작동합니다.
1) 잘못된 것이 있습니까? 아니면 버그입니까?
2)이 문제를 극복 할 수있는 방법이 있습니까? (하지만이 함수를 일반화하려면 인라인 키워드가 필요합니까?)
3) C#에서 f # 함수를 호출 할 때 비슷한 점이 있었습니까? 어떻게 해결 했습니까?
macOS Sierra에서 Mono 4.8을 사용하고 있습니다.
@EJoshuaS 컴파일러는 반환 형식에 대해 마지막 세 가지 매개 변수를 적용합니다. 형식 인수는 컴파일러에서 자동으로 유추 할 수 없습니다. 앞에서 언급했듯이 이상한 일은 예외없이 (-)을 (+)로 변경하면 모든 것이 올바르게 작동한다는 것입니다. – mateuszlewko
예, 이전 코멘트를 무시하십시오. 한번 시도한 것을 보았습니다. 나는 그런 종류의 행동 (나는 나의 기계에서 똑같은 것을 보았다)에 조금 놀랐다. 분명히 "인라인"키워드는 [약간 이상 할 수 있습니다] (http://stackoverflow.com/questions/4413324/how-does-f-inline-work) C#에서 F #로 호출 할 때 - 사실, 제거하면 인라인 함수는 올바르게 동작하지만, 왜 이것이 "+"가 아닌 "-"에서 작동하는지에 대해 다소 당혹 스럽다. 나는 실제로 누군가가 알고있는 경우에 이것이 왜인지에 대한 설명을 실제로보고 싶습니다. – EJoshuaS
이것도 작동한다는 것에 놀랄 것입니다. + 당신이 +를 사용한다면 당신이 뭔가 다른 것에 대한 정의를 숨길 것이라고 의심합니다. 인라인의 경우 F # 컴파일러는 실제로 함수를 만들지 않고 사용할 수있는 메타 데이터 만 만듭니다.C# 컴파일러가이 코드를 전혀 볼 수 없다는 사실은 놀랍습니다. –