표기법을 사용하면 C# 속기에 대한 조건부 중단 반환 기술이 있습니까?표기법 C# 속기에 대한 조건부 중단 반환 기술이 있습니까?
좋아 : 조건이 충족이, 반환이 중단됩니다하지 않을 경우
return (a==b) ? true : abort;
.
표기법을 사용하면 C# 속기에 대한 조건부 중단 반환 기술이 있습니까?표기법 C# 속기에 대한 조건부 중단 반환 기술이 있습니까?
좋아 : 조건이 충족이, 반환이 중단됩니다하지 않을 경우
return (a==b) ? true : abort;
.
당신은이 질문을하고, 그래서 당신은이 일을하지 않으려는 이유가있을 수 있습니다 :
if (a==b) return true;
위는 할 수 어쨌든 등
유지 보수가 매우 읽을 수 (난 강력하게 그것을을 억제 있지만) 람다와 대리자를 사용하고 같은 것을 할 :
delegate bool Abort();
bool YourMethod() // not mine ;)
{
int a = 1, b = 2;
return (a == b) || new Abort(() => {
// put the rest of your 'abort' code here
return false; // or throw an exception...
})();
}
public class Program
{
static void Main(string[] args)
{
var res = Test();
}
static bool Test()
{
var a = 5;
var b = 6;
return a.TrueOrAbort(b);
}
}
public static class MyHelper
{
public static bool TrueOrAbort<T>(this T first, T second) where T : struct, IComparable
{
if (first.Equals(second))
return true;
Environment.Exit(0);
return false;
}
}
a! = b 인 경우이 중단이 실제로 발생합니까? – serefbilge
. 빈 콘솔 응용 프로그램에 코드를 붙여 넣은 다음 디버깅 할 수 있습니다. –
완전히 중단됩니다. 거기에 방법은 "반환"을 중단합니다; 즉,! = b이면 반환 후에 코드가 계속됩니다. – serefbilge
'a! = b'가 어떻게 될지 설명 할 수 있습니까? 좋아,'돌아 오겠다 '라는 말은 무엇을 의미합니까? 던져 예외? 계속되는 메소드 실행? 'Environment.FailFast();'? –
예외를 던지는 것과 같은 의미입니까? –
@WouterHuysentruit 옵션 일 필요는 없습니다. – serefbilge