2012-05-23 2 views
1

나는 차이가 사이에 무엇인지 잠시 동안 궁금했던 두 가지를 다음GET SET 속성의 목적은 무엇입니까?

Public Property ProgressMaxValue() As Integer 
    Get 
     Return maxval 
    End Get 
    Set(ByVal Value As Integer) 
     maxval = Value 
    End Set 
End Property 

Dim progressMaxValue as Integer 
ProgressMaxValue = 1184 

(가) 똑같은 일을 잘 할 대? 나는 다른 사람들의 규범을 살펴보고, 첫 번째 예제가 점점 더 많이 보입니다. 요점, 차이점 및 사람들이 그것을 사용하는 이유를 알아 내려고 시도합니다. 메모를 놓친 것일까 요?

답변

1

는이 경우

에는 "정상"없다 ... 정상적인로 선언. 두 문장은 실제로 일리노이 주까지 완전히 다른 물건, 즉 속성과 필드입니다. 읽기 또는 할당을 통해 속성의 getter 또는 setter를 사용하면 실제로 메서드가 호출됩니다.

특정 예에서 속성의 getter/setter 메서드는 필드를 읽고 업데이트하지만 메서드이므로 메서드에서 원하는 모든 작업을 수행 할 수 있습니다. 이유에 관해서

는이 광대 등 herehere 및 (C# 1 문서를하지만,이 경우에 교환 VB.Net) 논의되었다. 프로퍼티 사용에 대한 광범위한 (그러나 좋은) 정당화는 외부 호출자로부터 클래스의 내부를 숨기는 것입니다.

+1

답장을 보내고 유용한 게시물에 링크 해 주셔서 감사합니다. 나는 그것의 첫 번째 부분을 읽고 전체 페이지를 읽려고합니다. 그것에는 많은 상세한 정보가 있습니다, 그래서 당신이 공유 한 훌륭한 링크. – IncomePitbull

+0

나는 더 정교한 대답과 두 개의 가치있는 기사로 연결되어 있기 때문에 이것을 완전히 대답 할 수있는 대답으로 썼다. 두 사람의 답변에 감사드립니다. 단 1 개만 선택할 수 있습니다 :) – IncomePitbull

+0

@IncomePitbull - 나는 다른 대답을 당신에게 줄 것입니다. –

1

첫 번째 코드에 Property을 생성합니다. 또한 인스턴스화 된 다른 클래스에서이 클래스를 노출 할 수 있습니다. 두 번째 변수는 클래스 내에서 사용 가능한 변수이거나 프로 시저 내의 범위 일뿐입니다. 이 둘에는 차이가 있습니다. 속성에 계산을 추가 할 수도 있습니다.

+1

본인의 회신에 감사드립니다. 때로는 코드의 정확한 문제와 관련된 질문이 없지만 언어 및 프로그래밍 개념을 더 잘 이해할 수있는 이유 또는 이유는 무엇입니까? 두 번째 예제를 다른 클래스에서 사용할 수 있도록 만들 수 있지만 더 많은 검색을 수행하고 첫 번째 예제에 계산을 추가한다는 의미를 알게되었습니다. 마지막 질문인데, 첫 번째 예는 threadsafe입니까? 나는 보통 거의 모든 응용 프로그램에 멀티 스레딩을 사용합니다. – IncomePitbull

관련 문제