2009-04-20 5 views
1

현재 열거 형 값의 배열을 CSV로 변환하기 위해 VB.NET에서 도우미 함수를 작성하고 있지만 몇 가지 어려움이 있습니다. ...열거 형 값의 일반 배열?

어떤 유형의 arguement 내가 열거 한 열거 형을 처리하기에 충분히 일반화하고 싶다면 내 함수가 필요하다.

이것은 내가 지금까지있어 무엇 :

Public Shared Function EnumArrayToCSV(ByVal values() As System.Enum) As String 
    Dim result As Generic.List(Of String) = New Generic.List(Of String) 

    For i As Integer = 0 To values.GetUpperBound(0) 
     result.Add(Convert.ToInt32(values(i))) 
    Next i 

    Return String.Join(",", result.ToArray) 
End Function 

은 내가 열거의 배열 함께 일하고 같이 아규먼트가 잘못된 것을 알고 있습니다. 이상적으로는 일반적인 enum 값 집합으로 작업하고 싶습니다.

아무도 도와 줄 수 있습니까? 이 코드에

답변

4
Public Shared Function CSVFromEnumValues(Of T)(ByVal values As IEnumerable(Of T)) As String 
    Dim sb As New StringBuilder() 

    Dim delimiter As String = "" 
    For Each item As T In values 
     sb.Append(delimiter).Append(Convert.ToInt32(item).ToString()) 
     delimiter = "," 
    Next item 

    return sb.ToString() 
End Function 

일부 노트 :이 반대보다는 그들을 포함하는 변수 근처 유형을 배치하기 때문에

  • 나는 TypeFromType() rather than TypeToType() naming convention 선호하게되었다.
  • 이 코드는 배열을 허용합니다. 또한 목록이나 생각할 수있는 대부분의 다른 컬렉션을 허용합니다. 이는 코드의 강력 함과 유연성을 향상시키는 데 도움이됩니다.
  • 이 코드는 열거 형 값으로 제한되지 않지만 열거 형 값은 형식입니다. 그들에게는 특별한 가치가 없습니다. 이것은 나쁜 것이 아닙니다. 열거 형 값에 대해 여전히 작동하므로 잘 사용할 수 있습니다. 그것은 다른 항목에 대해 작동한다는 것은 반드시 결함 일 필요는 없습니다.
+0

위의 코드에 약간의 구문 오류가 있습니다. 루프는 "각 항목에 대해 값이 있음" –

+0

고마워합니다. 최근에 C#을 작성하는 데 너무 많은 시간을 보내고 있습니다. –