Ben jenerikler için yeni ve küçük bir kendi kendine çalışma kodu uygulamakta sorun yaşıyorum.Bir int değerini, char gibi eşdeğer bir jenerik tür parametresine nasıl atarım?
Bağlı bir liste oluşturuyorum. Char veya int değerlerini depolamasını istiyorum. I (86 T ile belirtilen tip değer dönüştürülmesi, aralık [33.127) rastgele değerlerinin üretilmesi ile bağlantılı liste oluşturan bir yöntem, örneğin eğer
public class Node<T> where T : struct, IConvertible
{
public Node<T> next = null;
public T data = default(T);
public Node(T value) { this.data = value; }
}
: Bu yüzden genel bir uygulama yapmaya karar oluşturulan ve T Char, sonra bağlı liste düğümünde depolanacak değer 'V' olacak, T Int32 ise, o zaman değer sadece 86 olacaktır.
static Node<IConvertible> CreateList<T>(int len) where T : struct, IConvertible
{
Random r = new Random((int)DateTime.Now.Ticks);
T value = (T)r.Next(33, 127); // Problem #1
Node<T> head = new Node<T>(value);
Node<T> n = head;
for (int i = 1; i < len; i++)
{
n.next = new Node<T>(value);
n = n.next;
}
return head; // Problem #2
}
Bu problemler şunlardır:
1) Normal olarak bu mümkündür: (int) değeri = (char) r.Next (33, 127) iki sorunlarla karşı karşıya ediyorum. Neden T türü Char ise, derleyici "Nerede T: struct, IConvertible" belirtmiş olsam bile "int 'int', 'T' türünü dönüştüremiyor" diyor.
2) T Int32 veya Char ve bunların her ikisi IConvertible uygulamak ise "örtük 'LinkedList.Node<System.IConvertible>
' için 'LinkedList.Node<T>
' türü dönüştürülemez", Node<IConvertible>
için Node<Int32>
veya Node<Char>
döküm yolu nedir?
Çok teşekkürler!