2017-02-23 1 views
0

配列の値を設定したい、関数からプロパティに返す。返された配列のプロパティを使用

プロパティ:

Public Property Labels()() As String() 

機能:(戻り最後の3日間)

Public Function LabelDays(count As Integer) 
    Dim days(count) 

    days(0) = Date.Now.ToString("ddd") 
    count -= 1 

    If count > 0 Then 
    For i As Integer = 0 To count 
     days(i) = DateAdd(DateInterval.Day, i * -1, Date.Now).ToString("ddd") 
    Next 
    End If 

    Return days 
End Function 

用途:

Labels = LabelDays(3) 

私は、ERを取得します"オブジェクトは文字列に変換できません"のようなものです。 値を直接設定すると動作します。

'Labels = New String() {"We", "Tu", "Mo"} 

答えて

0

あなたはあなたの日の配列定義でAs Stringが欠落しているので、あなたはあなたの関数に戻ってきている配列は、オブジェクトの配列です。

Dim days(count-1) As String 
:それはあなたが必要な1以上のアイテムの配列を作成しているので、実際に行がなければならないことも注目に値するのです

Dim days(count) As String 

:この中へ

Dim days(count) 

:ちょうどこの行を変更

+0

おかげで、それは動作します:)ヒントについて – juri

0

既存のコードでは0のインデックスを2回設定し、countの値が3の場合はの4つを設定しようとします ind exes(0,1,2、および3)。しかし、具体的なエラーはdays配列のデータタイプを設定しなかったためです。明示的な型がなければ、コンパイラはObjectを選択します。それを文字列に代入しようとすると、質問からObject cannot be converted to Stringエラーが発生します。関数定義にも型がありません。

常には、型推論だけを使用していても、変数のデータ型を設定します。 オプション厳守をオンにしてください。

ます。また、ワンライナーにダウン全体の機能を得ることができます:それは読みやすく、維持するために作るために、私は少しそれを破ると思いますけれども

Function LabelDays(ByVal Count As Integer) As String() 
    Return Enumerable.Range(0, Count).Select(Function(d) Today.AddDays(d * -1).ToString("ddd")).ToArray() 
End Function 

を:

Function LabelDays(ByVal Count As Integer) As String() 
    Dim range = Enumerable.Range(0, Count) 
    Dim result = range.Select(Function(d) Today.AddDays(d * -1).ToString("ddd")) 
    Return result.ToArray() 
End Function 

rangeresultの変数は、タイプ推論とOption Inferのために明示的な型を持ち、宣言したのと同時に割り当てたので注意してください。

あなたはまた、イテレータを楽しんでいることができます。

Iterator Function LabelDays(ByVal Count As Integer) As IEnumerable(Of String) 
    Dim current = Today 
    While Count > 0 
     Yield current.ToString("ddd") 
     current = current.AddDays(-1) 
     Count -= 1 
    End While 
End Function 

そして、このようにそれを呼び出す:

Labels = LabelDays(3).ToArray() 
+0

感謝を!彼は少し速かったので、私はピコの答えをマークし、それはまた助けた:) – juri

関連する問題