편집해야 할 필드와 동일한 두 개의 목록 <이 있습니다. 이 목록에 대해 공통 기능을 작성하는 방법은 무엇입니까?두 개의 일반 함수 목록 <>
public List<?> CutField(List<?> list)
{
foreach(var element in list)
{
element.Field = // ;
}
return List<?>;
}
편집해야 할 필드와 동일한 두 개의 목록 <이 있습니다. 이 목록에 대해 공통 기능을 작성하는 방법은 무엇입니까?두 개의 일반 함수 목록 <>
public List<?> CutField(List<?> list)
{
foreach(var element in list)
{
element.Field = // ;
}
return List<?>;
}
가장 좋은 방법은 제네릭을 사용하는 것입니다 :
public List<T> CutField<T>(List<T> list) where T : MyInterface
{
foreach(T element in list)
{
element.Field = // ;
}
return list;
}
가능한 모든 유형 목록에서 물론
public interface MyInterface
{
object Field { get; set; } // or whatever datatype you need for the field
}
으로 해당 인터페이스를 구현해야합니다.
매개 변수로 전달 된 목록을 이미 수정하고 있으므로 반환 유형을 CutField
에서 생략 할 수도 있습니다.
안녕하세요. 나는 그것을 썼다. 그러나 T는 적색이고 VS는 나에게 글을 쓴다. cfnnjt는 기호 T를 해결하고 빨간색은 어디 있는가? : 비 제네릭 선언에는 제약이 허용되지 않는다. – jack
Ooops, 나는 내 대답을 업데이트했다. – HimBromBeere
예, 이제 작동 중입니다! 하지만 이제는이 일반 목록에서 두 목록을 전달할 수 있습니까? – jack
이 두 유형은 속성을 지정하여 동일한 인터페이스를 구현합니까? (어쨌든 필드를 공개적으로 노출하고 싶지는 않습니다 ...) 또한 목록 요소가 참조하는 객체를 수정하는 경우 목록을 반환하는 이유는 무엇입니까? –
두 가지 유형이 동일한 인터페이스를 구현하고 목록을 'List'으로 선언하도록하십시오. –
@TimSchmelter : 또는 형식 매개 변수에 형식 제약 조건이있는 일반 메서드가 있습니다. –