2016-10-07 2 views
-1

이것은 합리적인되지 않을 수도 있습니다, 하지만 나는 어디에서 그것이 방법을 반환 값이 사용되지 않는 경우 컴파일 오류가되고 싶습니다 상황을 찾고 있어요.C# - 반환 된 형식을 L 값에 할당해야합니까?

IEnumerator myCoroutine() {... yield break;} 

당신이 myCoroutine()를 호출하고 반환 된 값 (예를 들어, 당신이 아닌 다른 수율 내부에서, 보통의 방법처럼 전화하는거야으로 아무것도하지 않는 경우 :

특히, Unity3D는 다음과 같이 코 루틴을 구현 절 또는 StartCoroutine() 메서드를 통해) 결과적으로 myCoroutine() 내부의 모든 코드가 실행되지 않습니다. 그러나에는 컴파일 또는 런타임 경고가 없습니다. 이 시나리오에서 컴파일 타임 오류를 얻고 싶습니다. 난 생각

하나 개의 접근법은 몇 가지 방식으로 전달되어야하는 속성을 추가 발언권의 MyIEnumerator로 IEnumerator를 하위 클래스이다 - 하나

등 L 자 값을 할당하거나 메소드에 전달 그러나 나는 그러한 요구 사항이 존재 하는지를 발견 할 수 없었다.

+0

어떻게'myCoroutine' 함수를 호출하고 있습니까? 또한 그 안의 코드가 실행되지 않는다는 것을 어떻게 알 수 있습니까? 귀하의 진술에'Debu.Log '를 넣으십시오. – Programmer

+0

@Programmer 그가 말했듯이 누군가가 iterator 블록으로 구현 된 IEnumerable을 반환하는 메서드를 호출 한 다음 반복하지 않으면 반복기 코드가 실행되지 않습니다. 원한다면 그러한 프로그램을 직접 작성할 수 있습니다. 꽤 명확한 동작입니다. – Servy

+0

@Programmer, 로깅으로 테스트했기 때문에 코드가 실행되지 않는다는 것을 알고 있습니다. 내가 코 루틴을 호출하는 방법을 설명했습니다. 정상적인 방법처럼, 코 루틴이 아닙니다. 이 경우 컴파일 타임 오류가 발생하여 실수를 저에게했는지 알려드립니다. –

답변

3

C#에는 이러한 기능이 없습니다. 이런 경우를 찾기 위해 제 3 자 코드 분석 도구를 만들어야합니다.

+0

나는 약간의 빛을 찾아서 린터 (linter) 또는 유사품을 찾았지만 비어있게되었습니다. 그것은 내가 생각한 것입니다. 결정적인 대답에 감사드립니다. –

관련 문제