2008-09-19 3 views
1

VB.NET 문 "과"매우 편리한 가지고에서 With 문에 사용되는 인스턴스를 얻을뿐만 아니라이 같은 익명의 변수를 사용할 수 있도록하는 방법 :VB.NET - 직접 실행 창

With New FancyClass() 
    .Level = "SuperSpiffy" 
    .Style = Slimming 
    .Execute() 
End With 

"숨겨진"인스턴스를 가져 오는 방법이 있습니까? 즉, 직접 실행 창에서 해당 속성을 볼 수 있습니까? 시계 창문에 넣을 수 있을지 의심스럽고 즉각적입니다.

? .Style 
'With' contexts and statements are not valid in debug windows. 

가져 오는 데 사용할 수있는 트릭이있다 : 당신이 직접 실행 창에서 (.Execute() 예외를 throw 할 때, 말) 인스턴스를 동일한 방식으로 액세스하려고하면

, 당신은 오류 이 코드를 다른 스타일로 변환해야합니까? WithUsing 문과 같이 작동하는 경우 (예 : 'v = New FancyClass()'와 같은 경우) 문제가되지 않습니다.

나는 With이 어떻게 작동하는지, 어떤 대안이 존재하는지, 컴파일러가 무엇을하는지 등을 알고 있습니다. 이것이 가능한지 알고 싶습니다.

답변

1

대답에 따르면 간단한 대답은 "아니오"이다.

그러나 다른 방법으로 선언하지 않고 변수를 정리하는 대신 "사용"을 사용하는 것이 좋습니다.

Using fc as new FancyClass() 
    With fc  
    .Level = "SuperSpiffy"  
    .Style = Slimming  
    .Execute() 
    End With 
End Using 

그런 다음 직접 실행 창에서 FC를 사용할 수 있으며,

fc=nothing 

라인을 작성 기억할 필요가 없습니다.

거기에 그냥 몇 가지 더 생각, 쉬운 대답은 "아니오"이기 때문에)

1

한 줄에 변수를 정의하고 그 변수를 다음 행의 with 문에서 사용하는 것이 잘못된 이유는 무엇입니까? 나는 변수가 더 오래 살아 있음을 알지만 그래서은 소름 끼치는가?

Dim x = new SomethingOrOther() 
With x 
    .DoSomething() 
End With 
x = Nothing ' for the memory conscious 

두 여분의 줄은 실 거예요) =

편집을 당신을 죽일 : 당신은 단지 예를 찾고 있다면/아니, 내가 말을해야 할 것 : 아니요가 만드는

+0

감사합니다.하지만 실제로 질문에 대한 답변이 필요합니다. 변수를 선언하는 방법과 컴파일러의 관점에서 명령문이 어떻게 작동 하는지를 알고 있습니다. –

+0

수정 됨. 아니, ""을 붙잡는 구문이 없습니다. 그 자체로. – Oli

0

을 어느 쪽이든 변수 - 첫 번째 경우 (예제) 컴파일러에서 실제로 얻을 수없는 암시 적 변수를 만들고 두 번째 경우 (다른 대답, Oli)에서는 변수를 명시 적으로.

명시 적으로 만들면 직접 실행 창에서 사용할 수 있습니다.이 작업을 수행 할 때 명시 적으로 삭제할 수 있습니다 (메모리를 의식한 것 중 하나입니다!). 세부 정보를 마법 프로세스에 정리하십시오. 즉각적인 창에 암시 적 변수를 가져올 방법이 없다고 생각합니다. (그리고 나는 마법 과정을 신뢰하지 않는다.이 이유 때문에 다중 도트 표기법이나 암시 적 변수를 사용하지 않는다.)

+0

고마워,하지만 실제로 질문에 대한 답변이 필요해. 변수를 선언하는 방법과 컴파일러의 관점에서 명령문이 어떻게 작동 하는지를 알고 있습니다. 마찬가지로, 당신은 실제로 당신이 선언 한 모든 함수의 끝에 var = 아무것도 넣지 않았습니까? 생각하지 않았다. –

1

정말 거기에 희망은 그것을 얻을 수있는 방법이 아니며, 아직 어느 방법을 발견하지 않았습니다.어느 쪽이든, 아무도 지금까지는 "아니오"에 대한 이론적 근거가 없지만 아무도 = 없습니다.) 고전적인 "with"가 =라는 점을 감안할 때 VB 디버거 팀이 넣을 것이라고 생각하는 것 중 하나 일뿐입니다.

어쨌든, 내가 사용하는 것과 Idisposable에 대해 모두 알고 있는데, 코드를으로 수정하는 방법을 알고 있습니다. 일부는이를 호출 할 것이지만 항상 원하지는 않을 것입니다.

사용 방법은 약간의 설탕을 얻기 위해 수업에 IDisposable을 구현하는 것을 좋아하지 않습니다.

우리가 정말로 필요로하는 것은 "var = New FancyClass()"이지만, 그것은 혼란 스러울 수도 있습니다!

관련 문제