2015-02-03 5 views
4

학교에서 C#을 배웠고 지금은 Java를 배우기 시작했습니다.-Statement와 Javas try-with-ressources를 사용하는 .NET의 차이점

Java에서는 더 이상 사용하지 않을 때 스캐너와 같은 물건을 닫거나 처분 할 수있는 "resour sources로 시도하십시오"가 있습니다.

동일한 C#은 기본적으로 동일한 기능을하는 using 문입니다.

실제적으로 정확히입니까? 아니면 백그라운드에서 수행중인 것과 같은 차이점이 있습니까?

+1

물론 차이점이 있습니다. 언어가 다르며 다른 플랫폼에서 실행되는 서로 다른 진술입니다. * 구체적으로 알고 싶은 것은 무엇입니까? 여기에 구체적인 질문이 무엇입니까? –

답변

10

아니요, 그들은 정확히이 아닙니다.

  • try-with-resources 문은 여러 유형의 여러 변수를 선언 할 수 있습니다. using 문은 여러 변수를 선언 할 수 있지만 모두 동일한 유형이어야합니다.
  • using 문이 없습니다. 어떤 변수도 선언하려면 이 있어야합니다. using (foo)은 괜찮습니다. 리소스가있는 try 문의
  • using 문에 선언 된 변수는 여전히 블록 끝에있는 값이 아니라 초기 값이지만 여전히 할당 할 수 있습니다. try-with-resources 문에서 선언 된 변수는 C#에서 별도의 try/catch 또는 try/catch/finally 블록이 필요합니다 것입니다 반면 try-with-resources 문, catchfinally 블록을 가질 수
  • 블록 내에서 할당 할 수 없습니다
  • using 문의 본문에서 예외가 발생하고 Dispose 메서드가 예외를 throw하면 후자의 예외 만 사용할 수 있습니다. try-with-resources에서 닫는 예외는 "억제"됩니다 (따라서 문 결과는 try 블록의 예외입니다). 닫는 예외는 여전히 Throwable.getSuppressed을 사용하여 검색 할 수 있습니다.
관련 문제