2012-08-29 2 views
0

두 스 니펫의 차이점은 무엇입니까? 이 중복 또는 바보 같은 질문 경우 VB에서 속성을 선언하는 두 가지 방법 - 그 차이점은 무엇입니까?

Public Property User As String 
    Get 
     Return _User 
    End Get 
    Set(ByVal value As String) 
     _User = value 
    End Set 
End Property 

Public Property UserName As String 

나는 죄송합니다. 나는 VB.NET에 익숙하지 않다. 나는 C#에 익숙하다. 이 문제를 C#으로 변환하려고하고 있으며 실수 할 여지가 없습니다. 그 중

+5

우선 한 짧은로서 (C에서) 동일한이다 – CodesInChaos

+0

http://msdn.microsoft.com/en-us/library/ dd293589.aspx – Dominik

답변

3

아무런 차이가 없습니다. 첫 번째 버전은 두 번째 버전의 짧은 버전입니다.

그러나 변수를 얻거나 설정하는 것보다 설정자를 제한하거나 속성에서 더 많은 작업을 수행하려면 두 번째 버전을 사용해야합니다.

그래서 그것은

public string UserName { get; set; } 

Auto-Implemented Properties (Visual Basic)

Auto-Implemented Properties (C# Programming Guide)

+0

입니다.이 기능은 배타적이라고 생각했습니다. ~ C#. 감사. – codingbiz

+0

VB 자동 속성에 가시성 설정 도구를 추가하는 방법이 있습니까? 그렇지 않은 경우이 기능은 거의 쓸모없는 것으로 들립니다. – CodesInChaos

+0

@ CodeInChaos : getter/setter에 대해 다른 액세스 수준이 필요한 경우 두 번째 방법을 사용해야합니다. 하지만 당신은 짧은 버전에서'readonly'을 만들 수 있고 VB.NET에서 기본값을 지정할 수 있습니다 (C#과 달리). –

1

하나는 참조하거나 백업 필드를 사용할 수 없습니다 제외하고 짧은 : 첫 번째 경우에

, 그것은, 두 번째 경우와 같은 일을 자동으로 구현 숙박 시설의입니다.

는 C# 상당, 그런데,이다 :

public string UserName { get; set; } 
1

이 바로 VB version of automatically implemented properties입니다.

그래서는 C# 동등한은 다음과 같습니다 VB는 C#을하지 않는 반면, 자동으로 구현 된 속성에 대한 기본값을 허용

public string UserName { get; set; } 

주 - 생성자의 기본 값으로 속성을 설정해야 할 것 .

+0

이 예제에서는 VB 자동 속성이 동일한 줄에서 기본값을 얻을 수 있지만 C#에서는 생성자에서 설정해야한다는 점에 흥미 롭습니다. –

+0

나는 VB.Net에 이와 동등한 기능이 있다는 것을 몰랐다. C#에서만 독점이라고 생각했습니다.감사합니다 – codingbiz

+0

나는 C#을하지 않는 반면에 _을 테스트 할 것입니다 - 당신은 생성자에서 디폴트 값으로 속성을 설정할 필요가 있습니다 "_ – codingbiz

4

첫 번째 필드 (자동 구현 된 속성)는 자동으로 보조 필드를 생성하므로 두 번째 예제와 같이 _User을 직접 선언 할 필요가 없습니다. MSDN에서

는 :

당신이 자동 구현 속성을 선언, Visual Basic의 자동으로 숨겨 개인 필드 속성 값을 포함하는 백업 필드 라는 만듭니다. 후행 필드 이름은 밑줄 (_)이 앞에 붙는 자동 구현 속성 이름입니다. 의 경우 ID라는 자동 구현 된 속성을 선언하면 후행 필드의 이름은 _ID입니다.

+0

적어도 '_User'에 대한 유일한 대답은 –

관련 문제