2013-02-07 127 views
1

我正在創建一個WCF服務,並且該服務中的一個項目是一個名爲County的Enum類,其中包含此狀態中的縣的列表。另一個項目是一個名爲Person的Object類,它使用了這個Enum數組(因爲商業原因需要一個數組,而不僅僅是一個縣)。這不是我使用的這個服務中唯一的數組,而是其他數組涉及其他對象,而不是枚舉,並且工作得很好。類型'1維陣列'錯誤的值

我收到以下錯誤:

Value of type '1-dimensional array of type LAService.County' cannot be converted to '1-dimensional array of type LAService.County?' because 'LAService.County' is not derived from 'County?'

什麼是'?'?由於使用了錯誤的類型,我之前發生過此錯誤,但問號是一件新事物。我如何克服這個錯誤?

我的代碼:

Public Enum County 
    Acadia 
    Allen 
    Ascension 
    ...and on and on... 
End Enum 

<DataContract> 
Public Class Person 
    <DataMember()> 
    Public ServiceCounty() As Nullable(Of County) 
    ...and on and on... 
End Class 

Public Function FillPerson(ds as DataSet) As Person 
    Dim sPerson as Person 
    Dim iCounty as Integer = ds.Tables(0).Rows(0)("COUNTY") 
    Dim eCounty As String = eval.GetCounty(iCounty)  'This evaluates the county number to a county name string 
    Dim sCounty As String = DirectCast([Enum].Parse(GetType(County), eCounty), County) 
    Dim counties(0) As County 
    counties(0) = sCounty 
    sPerson = New Person With{.ServiceCounty = counties} 
    Return sPerson 
End Function 

之前,我建立了代碼,視覺工作室出上述錯誤處字「counties」的「sPerson = New Person With{.ServiceCounty = counties}」線。同樣,我使用的所有其他數組都是以相同的方式創建的,但是使用Objects而不是Enums。我已經嘗試將我的Dim sCounty as String更改爲Dim sCounty As County,但我得到相同的錯誤。我也試圖擺脫DirectCast線,只使用Dim sCounty As County = County.Acadia仍然有錯誤。

回答

1

?Nullable(Of T)的簡寫。例如,Dim x As Nullable(Of Integer)的意思與Dim x As Integer?相同。

Dim counties(0) As County 

要這樣:所以,你可以通過改變這一行修復它

Dim counties(0) As Nullable(Of County) 

或者,更簡潔,這一點:

Dim counties(0) As County? 
+0

唉唉,這是我第一次曾經不得不使用Nullable。我只是想不能要求縣財產。現在我知道了(並且知道是一場戰鬥。) –

+0

The?意味着在VB.Net –

+0

@ChrisDunaway同樣的事情謝謝! –