나는 다음과 같은 유형이 말 :제네릭 형식을 포함하는 배열을 선언하는 방법?
public class Field<T>
{
public string Name { get; set; }
public T Value { get; set; }
}
어떻게 이러한 필드의 배열을 포함하는 변수를 선언 할 수 있습니까?
var customFields = new Field[]
{
new Field<string> { Name = "nickname", Value = "Bob" },
new Field<int> { Name = "age", Value = 42 },
new Field<DateTime> { Name = "customer_since", Value = new DateTime(2000, 12, 1) }
};
하지만 다음과 같은 컴파일 시간 예외가 얻을 : 나는 다음과 같은 시도 제네릭 형식 '필드'를 사용
을 요구 한 형태 인수를
나는 또한 var customFields = new Field<object>[]
을 시도했지만 다음 오류가 발생합니다 :
암시 적으로 'Field'유형을 'F' 의 ield '
암시 적 타입 변환 할 수 없습니다'필드 '에'필드 '
암시 적 타입 변환 할 수 없습니다'마티아스는 그렇게 때문에 일을 할 수없는 말했듯이 필드를 '
각 일반 유형은 * 다른 유형 *입니다. 따라서 서로 다른 유형의 인스턴스 배열을 만들려고합니다. 이건 불가능 해. 이것은'string'과'int' 값을 저장할 배열을 만드는 것과 같습니다. 그러나 [공분산] (https://msdn.microsoft.com/en-us/library/dd799517(v=vs.110) .aspx)을 살펴볼 수 있습니다. –