이것은 좋은 접근 방식을 사용하여 반품해야 호출하십시오 인사이드라면 {} 기술서임을?

I just want to know is it / 좋아 "사용 '블록' 안전 '안에 복귀하십시오 외곽진입) 이라 할 수 있습니다.

Emailxtender 대한.

using(var scope = new TransactionScope())
{
  // my core logic
  return true; // if condition met else
  return false;
  scope.Complete();
}

마지막 순간 우리가 알고 있는 대부분의 중괄호 '폐기 ()' 가 될 경우, 위의 것은 무엇인가 '라는 확보하십시오 끄기입니다.' 점프를 복귀하십시오 제어 아웃해야 이후 주어진 범위 (아파이크).

  1. '내' () 는 스코프스콤프레티 프레젠테이션이든 호출됨?
  2. 그래서 scope& 대한 처리 () ',' s # 39 메서드입니다.
Shai
그는 8년 전 댓글을 달았습니다
1

일단 ',' 관련 객체에는 사용하여 유효범위 끝났다네, {} ',' 가 프레젠테이션이든 폐기합니다 복귀하십시오 &quot break&quot. 그래서 객체에는 예상대로 폐기합니다 확보하십시오 범위

Andy
그는 8년 전 댓글을 달았습니다
2

항상 염두에 두어야 할 수 있는 '히트' 를 제공한 샘플링합니다 호출하십시오 스코프스콤프레티 (), re 트랜잭션까지 도왔으매 you& # 39 는 항상 롤백에서.

Superbest
그는 8년 전 댓글을 달았습니다
0

"사용 '& # 39 의 폐기 여부에 관계없이' () 함수를 사용하여 '이 포함된', '호출됨 복귀하십시오 할 때, 블록 반환되었습니다 속하는 것, 그 않습니다. 그래서 '에서 "사용', '유효범위 없었던 경우에도 &quot 폐기합니다 &quot. (다른 사람이 될 수 없다 "고 등) 이 될 수 있기 때문에 무조건 폐기합니다 함수은 끝났다. 만약 C # 인도하심이라만일 '이동' 기술서임을 - 다 끝나셨습니까 웃음 아직이라구요? 그 후 수 있습니다 '-' goto 대신에 좋은 복귀하십시오 닫기와 중괄호 리스토어하지 않습니다. 논리적으로 수 있지만, 여전히 유효범위 ',' 그냥 '이동' 동일팔레트에 폐기합니다 you& # 39 번 C # 에서 그럼 누가 그 단계에서 논리를 신경 쓰지 않을까.

답변 7 개

39 의 it& 완벽하게 안전한 복귀하십시오 블록 내의 "사용 '블록' 콜 '하기 때문에 단순히' 블록 '사용하여 시도하시겠습니까 / 마지막으로.

위에서 예를 얻을 수 있는 범위 및 가치 보답받는단다 폐기합니다 반품해야 후 'true' 프레젠테이션이든 '가 아닌' 거짓 '및' 복귀하십시오 스코프스콤프레티 () 이라고 합니다. 그러나 '폐기' 를 마지막으로 블록이어야 내부에 불렀으매 때문에 상관 없이 됩니다.

이 코드에서 본질적으로 같은 경우 쉽게 이해할 수 있게 해 주는):

var scope = new TransactionScope())
try
{
  // my core logic
  return true; // if condition met else
  return false;
  scope.Complete();
}
finally
{
  if( scope != null) 
    ((IDisposable)scope).Dispose();
}

, # 39 는 해당 트랜잭션까지 염두에 두어야 합니다 커밋합니다 there& 결코 볼 수 있다 () '을' s 무리라구 스코프스콤프레티 커밋합니다 트랜잭션입니다.

Øyvind Bråthen
Konrad Rudolph
그는 8년 전 댓글을 달았습니다
11

분명히 해야 한다 '는' 불렀으매 처분할 수 있습니다. 그는 "사용 '의 op 싫어하겠어 무슨 일이 있었는지 알 경우, 마지막으로' 와 '무슨 일이 있었는지 알 싫어하겠어 승산이 있다.

Øyvind Bråthen
그는 8년 전 댓글을 달았습니다
0

이제 내 텍스트 보다 선택해제합니다 브라운아저씨의 @konradrudolph -:)

thewhiteambit
그는 5년 전 댓글을 달았습니다
0

이를 두고 있지만,) 은 블록 함께 사용하는 경우 얻을 수 있습니다 복귀하십시오 트란스카션스코프 기술서임을 사용하여 문제가 있는 것. http://blogs.msdn.com/b/florinlazar/archive/2008/05/05/8459994.aspx

MikeTeeVee
그는 4년 전 댓글을 달았습니다
0

내 경험상 이 doesn& # 39, SQL Server 와 컬러 어셈블리들 빗나갔다. Udf 대한 결과를 반환할 때 데릭쉐퍼드와 필드에 미모리스트림 스크리스마르 포함된 개체 참조. 저도 &quot Cannot 액세스함으로써 폐기합니다 object"; 시도 및 ";, 그래서 저는 Invalid closed.&quot 쓸 때 읽을 호출하십시오 일반적으로 이 새는 이 시나리오에서의 기술서임을 사용하여 코드 및 포기하고 말았다. : (내 유일한 희망은 다뤄야 할 SQL CLR 이 객체에는 폐기. 하지만, d, s # 39 한 독특한 시나리오를 it& 돌아보 I& # 39 공유하지는.

ToolmakerSteve
그는 4년 전 댓글을 달았습니다
1

청정 솔루션은 @miketeevee 인컨텍스트 (a) 은 "사용 '을 사용하여 못하며창조된 요청자에게' (var 캘러스바르 = 미풍크 (.)) (예: , 있기 때문에, 대신 사용하여, MyFunc&quot &quot 인사이드라면. ' - I '는 말은 요청자에게 스트리밍합니다 및 책임이 있는 점을 고려할 때, 또는 (b)' 또는 '통해 이를 사용하여 명시적으로 닫기와 %s/dbase/ext_table. 푸십시오 미풍크 안전하게 다시 전달할 수 있는 모든 정보를 쉽게 다른 오브젝트에도 요구되는가 - 그럼 기본 데이터 객체뿐 또는 스트리밍합니다 폐기합니다 "사용' 에 따라 수 있습니다. 새는 코드를 쓰지 않을 수 없습니다.

39, 마지막으로 '-' s fine that& 조항, 즉 '의' 는 조항을 통해 어떤 닫기와 중괄호 후드 아래에) 때 항상 프레젠테이션이든 실행됨을 아무리 유효범위 남아 있다.

그러나 이는 진정한 발언들로 있는 마지막으로 블록 (명시적으로 사용할 때 사용할 수 없는 '설정'). 따라서, 예를 들어 '스코프스콤프레티 ()' 에 결코 프레젠테이션이든 호출됨 (I 작성되지는 컴파일러를 수 없는 코드 표시되어도 경고자로서 확인할 수 있습니다).

전에 복귀하십시오 스코프스콤프레티 말해둘꼐요 한다 '' 라고 불리기도 한다. 이 코드는 컴파일러에서 경고를 표시하고 결코 않도록 해야 한다.

'-' 자체에 대한 복귀하십시오 그러하너라 호츨 집 안에서 "사용 '기술서임을 것이 안전합니다. 이 장면을 통해 공감대를 형성하고 있는 것이 분명 블록이어야 결국 시도하시겠습니까 블록 뒤에 마지막으로 처형되었다.

일반적으로 좋은 외곽진입. 그러나 케이스에 돌아오면 스코프스콤프레티 () ',' 를 호출하기 전에 그냥 쓰레기 트란스카션스코프 것입니다. 설계에 따라 다르다.

따라서 이 샘플 () 는 폐기합니다 것으로 가정 및 범위, 완료하십시오 요구되지 않는 유일한 리디스포사블 인터페이스입니다.

Chriseyre2000
그는 8년 전 댓글을 달았습니다
0

리디스포사블 또는 사용 습관 컴파일하십시오 구현하십시오 합니다.

예를 들어, 제공했는지, 문제가 있습니다. '는 절대 스코프스콤프레티 ()' 이라고 합니다. 둘째, '리턴' 기술서임을 사용할 수 있는 좋은 방법이 아니다 "사용 '명령문입니다. 는 다음과 같은 뜻이 있다.

using(var scope = new TransactionScope())
{
    //have some logic here
    return scope;      
}

이 간단한 예를 들어, 이 점은. '가치' 가 사용할 때 유효범위 널일 기술서임을 완료되었습니다.

그래서 사용하는 것은 좋지 않습니다 반환되기를 인사이드라면 명령문입니다.

Preet Sangha
그는 8년 전 댓글을 달았습니다
1

39, & # 39 scope& 반품하십시오 해서. # 39, t 는 무의미한 얻게된다면 doesn& 기술서임을 반환 문제가 있다는 것을 의미한다.

daryal
그는 8년 전 댓글을 달았습니다
0

그냥 뭔가 잘못 수행한 모범 사례를 통해 않았기 때문에 것을 의미하지는 않습니다. 예상치 못한 결과를 초래할 수 있으므로 피하는 것이 가장 좋은 it 의미하는 것이다.

Lucero
그는 8년 전 댓글을 달았습니다
0

Scope) '의 값을 가질 수 있는 유일한 심아이엔큐 널일 않습니다' - ' ()' 가 되어 있는 것은 그동안 들어온넘 호출되었을, 따라서 더 이상 사용하지 않는 인스턴스입니다 인스턴스입니다 한다 (하지만 isn& # 39, t nulll 및 there& # 39 의 아무것도아니야 합니다 시도하시려면 및 사용할 경우에도 사용할 수 있다 이 랑하니 폐기합니다 객체에는 부적절한 버릴 수 있는 객체).

ThunderGr
그는 8년 전 댓글을 달았습니다
0

루세로 매우 정확하다. 일회용 객체에는 알려지면서 폐기합니다 nulll 않습니다. True, false, 그리고 그 이디스 프로스트 속성은 신앙이니라 너회가 견제가 nulll 확보하십시오 복귀하십시오 that 객체에는 유효범위 '' 대한 참조를 반환합니다. 이런 방식으로 지정할 경우 이 GC 에서 참조하는 복귀하십시오 클린업하기 폐기합니다 객체에는 대한 것을 방지할 수 있습니다.

스코프스콤프레티 있는지 확인하기 위해 ' ()' 을 (를) '이 마침내 불렀으매, 랩 / 시도하시겠습니까'. 이 때문에 랩 (wrap it 의 경우 '폐기' 호출됨 "사용 '즉' 대체 '종료기 / 드디어 블록.

using(var scope = new TransactionScope())
{
  try
  {
  // my core logic
  return true; // if condition met else
  return false;
  }
  finally
  {
   scope.Complete();
  }
}

Aristos

내 생각엔 u want to say?) 을 스케쳐내 won& # 39 아닌 경우, t. 코드에 따라. )

이 예에서 내시경이요 전체 () 은 배반자들의 autoexec. 그러나 모든 것을 지우는중 복귀하십시오 명령은 할당되었는지 stack. Gc 는 모든 것을 알아서 비참조. 그래서 객체에 의해 선택될 수 없는 경우가 아니면 GC, 문제가 없다.