2010-12-29 3 views
0

나는 이것이 쉽다고 확신합니다. 가리키고 나는설정 목록 <CustomObject> = 목록 <String> - 뇌사 상태가 있습니다.

어딘가에, 다른 클래스에서 내가 List<MyClass> MyClassListList<String> StringList

선언

나는 2 개 매개 변수 TheString 및 SomeInt을 가지고 MyClass의 클래스를 가지고 ... 내가 전에 이런 짓을 한거야

둘 다 같은 수의 항목을 가지고 있습니다. 나는 이것이 내가 서로 다른 종류이기 때문에 나는이 늘 일을 알고 이제

MyClassList = StringList

을 설정 StringList

에서 해당 문자열과 동일 MyClassList 각 MyClass의 모든 "TheStrings"로 설정합니다. 할당 (=) 연산자를 오버로드해야한다고 생각하지만 어떻게 처리되는지는 알 수 없습니다. 나는 항상 MyClass에서 호출하는 메소드를 제공 할 수 있다고 생각하지만, 그렇게 우아하지는 않습니다. 가장 우아한 해결책은 무엇입니까?

감사 토마스

답변

3

당신은 = 연산자를 오버로드 할 수 없습니다. 최적의 솔루션을 사용하는 LINQ입니다

public static implicit operator double(Digit d) 
{ 
    return d.val; 
} 

그러나 목록의 경우 내 생각 : 당신은 MSDN에서, 예를 암시 적 변환을 할 수

List<MyClass> list = (from value in StringList 
        select new MyClass { TheString = value }).ToList(); 
1

아무데도 충분한 정보에 가까운,하지만 :

var customObjects = new List<CustomObject>(TheStringList.Select(s => new CustomObject { TheString = s })); 

나는 이것을 테스트하지 않았지만 마음에 떠오른 아이디어를 보여주고 싶었습니다.

0

단순한 for 루프와 같이 들릴 때 우아함과 꽤 가능성이있는 마법을 찾는 것 같습니다. 당신은 문제가 두 개의 똑같은 크기의리스트, 하나는 특정 클래스, 또 하나는 문자열이라는 것을 설명했다. 각 클래스에 대한 문자열 속성을 반대 목록의 해당 문자열로 설정하려고합니다 (아마도 정렬 및 일치하는 색인에서 발생합니다). 루프 만 있으면됩니다.

for (int index = 0; index = MyClassList.Count; index++) 
{ 
    MyClassList[index].TheString = StringList[index]; 
} 
+0

나는 그 사실을 알고 있습니다. 결국 나는했다. 분명히 C#에서 대입 연산자를 오버로드 할 수 없습니다! 나는 MyClassList에 갔다. ForEach (item => {...}); 그냥 부 풀리는 느낌 :( – Prof