2013-05-22 2 views
-3

표기법을 사용하면 C# 속기에 대한 조건부 중단 반환 기술이 있습니까?표기법 C# 속기에 대한 조건부 중단 반환 기술이 있습니까?

좋아 : 조건이 충족이, 반환이 중단됩니다하지 않을 경우

return (a==b) ? true : abort; 

.

+0

'a! = b'가 어떻게 될지 설명 할 수 있습니까? 좋아,'돌아 오겠다 '라는 말은 무엇을 의미합니까? 던져 예외? 계속되는 메소드 실행? 'Environment.FailFast();'? –

+0

예외를 던지는 것과 같은 의미입니까? –

+0

@WouterHuysentruit 옵션 일 필요는 없습니다. – serefbilge

답변

1

당신은이 질문을하고, 그래서 당신은이 일을하지 않으려는 이유가있을 수 있습니다 :

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... 
    })(); 
} 
0
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; 
     } 
    } 
+0

a! = b 인 경우이 중단이 실제로 발생합니까? – serefbilge

+0

. 빈 콘솔 응용 프로그램에 코드를 붙여 넣은 다음 디버깅 할 수 있습니다. –

+0

완전히 중단됩니다. 거기에 방법은 "반환"을 중단합니다; 즉,! = b이면 반환 후에 코드가 계속됩니다. – serefbilge