2010-01-04 3 views
11

을 만들어 열거 형식으로 문자열을 변환 할 수 없습니다. 과 같이 리터럴 문자열을 사용하여 해당 속성을 설정할 때 내가 열거가 나는

class TestClass 
{ 
    public Color testColor = Color.Red; 
} 

지금, 나는 컴파일러에서 매우 가혹한 경고를 얻을. : D 문자열에서 색상으로 변환 할 수 없습니다.

어떤 도움이 필요합니까?

TestClass.testColor = collectionofstrings[23].ConvertToColor?????; 

답변

29

찾고 계신 것이 있나요?

TestClass.testColor = (Color)Enum.Parse(typeof(Color), collectionofstrings[23]); 
+0

개체를 색 (열거 형)으로 암시 적으로 변환 할 수 없습니다. 이 경우 어떻게해야합니까? –

+0

@Sergio 그럼 명시 적 캐스트를 놓쳤습니다 (컬러) – pauloya

8

시도 :

TestClass.testColor = (Color)Enum.Parse(typeof(Color), collectionofstrings[23]); 

참조 documentation about Enum

편집 : .NET 4.0 당신은 예외 경우가 발생하지 않는 이상 형태 보증 된 방법 (도 하나를 사용할 수 있습니다 구문 분석에 실패 함) :

Color myColor; 
if (Enum.TryParse(collectionofstring[23], out myColor)) 
{ 
    // Do stuff with "myColor" 
} 
+0

오브젝트에서 컬러로 변환 할 수 없다고합니다. 어떤 도움이 필요합니까? –

+2

그러면 Parse 호출 앞에서 Color로 변환하는 것을 잊었을 것입니다. 이것은 문자열에서 열거 형으로 이동하는 메서드에 대한 것입니다. –

+0

@MattGreer 구문 분석이 "실패"하는 경우 * 치료 *하면 더 좋은 방법입니다. 실제로 파싱 할 수없는 경우 예외를 throw하지 않지만 대신 열거 형의 '0'항목이 무엇이든 반환하며 실제로 실패한 단서는 없습니다. – mmcrae

0

Enum.Par

TestClass.testColor = (Color)Enum.Parse(typeof(Color), collectionofstrings[23], true); 
0

다른 사람들이 말한대로 : 그 자체가 올바른 색상 열거 값에 문자열을 변환 할 collectionofstrings이 개체의 컬렉션이기 때문에

TestClass.testColor = (Color) Enum.Parse(typeof(Color), collectionofstrings[23]); 

당신은 문제가있는 경우, 시도 이 :

TestClass.testColor = (Color) Enum.Parse(
    typeof(Color), 
    collectionofstrings[23].ToString());