2017-05-01 92 views
0

這個問題是關於什麼是由不同類型的VB屬性聲明語法創建的。但首先我想在某些情況下引用C#。我不是很能夠與C#,但我看到,我們可以這樣寫:VB屬性聲明沒有Get和Set與C#相同?

public string myString {get; set;} 

是同樣的事情,接下來該具有阻斷變量顯式聲明上一行:

public string myString { 
    get { return m_myString; } 
    set { m_myString = value; } 
} 
private string m_myString; 

現在轉向VB,下面的VB和這篇文章頂部的第一行C#是一樣的嗎?

Public Property myString() As String 

還是必須將所有內容寫出來,如:

Public Property myString() As String 
    Get 
     Return m_myString 
    End Get 
    Set 
     m_myString = Value 
    End Set 
End Property 

Private m_myString As String 

這個問題是不是真正的一個是否希望使用後盾變量,而只是如何語法聲明屬性在VB中工作。

+0

也就是說四次相同的語句。唯一的區別是私有字符串不可用於第一個和第三個語句。 –

+4

您要搜索的詞是「自動實施的屬性」。它適用於VB和C#。 – TnTinMn

+0

VB和C#之間的區別:VB有能力給屬性添加參數,Property procedures:https://msdn.microsoft.com/en-us/library/bc3dtbky.aspx –

回答

0

它們並不完全相同。 VB.Net爲自動實現的屬性myString生成一個隱藏的專用支持字段,稱爲_myString。這個例子將編譯:

Public Property myString As String 

Public Function Foo() As String 
    Return myString 
End Function 

Public Function _Foo() As String 
    Return _myString 
End Function 

在C#中嘗試相同。它不會編譯。

public string myString { get; set; } 

public string Foo() 
{ 
    return myString; 
} 

public string _Foo() 
{ 
    return _myString; //The name '_myString' does not exist in the current context 
} 

適當地,那麼您需要能夠聲明在C#領域_myString,但不是在VB.Net。

所以

Private _myString As String 

Public Property myString As String 
    Get 
     Return _myString 
    End Get 
    Set 
     _myString = Value 
    End Set 
End Property 

=

Public Property myString As String 

=

private string _myString; 

public string myString 
{ 
    get { return _myString; } 
    set { _myString = value; } 
} 

!=<>你VB.Net人)

public string myString { get; set; } 
+0

爲什麼這是低估的,當它完全正確時? –

+0

我想知道同樣的事情:) – djv

+0

@djv非常說明性的迴應。謝謝。你的示例真的顯示了VB的聲明創建了支持變量並且它是可用的,儘管我懷疑它永遠不會被使用。我也讚賞你的!=/<>確認與簡寫C#聲明有所不同。我想所有的事情都是投下來的(甚至是我的問題)B/C有人認爲它太基本或者研究得不好,但正如我上面評論的那樣,我嘗試了。我只是不知道如何正確地搜索它;我認爲這是SO的一部分。不錯,有針對性的回答很好。 – Alan

0

是的C#public string MyString { get; set; }相當於VB.NET中的Public Property MyString() As String

注意,屬性名稱應該是上層駱駝案例,AKA Pascal案例。

+2

不完全。現在,嘗試用兩種語言聲明字符串「_MyString」。 – djv

+0

@djv感謝您在下面添加下面的解釋 – Alan