我正在为那些参加C#自主学习的学生做一个样本程序。我以为我理解<T>,但显然我缺少一些神奇的秘密,让我能够充分利用它。
当我尝试创建一个变量时,它工作得很好:
static Test<char> c = new Test<char>('n');正如你所看到的,它是实例化的。
现在,当我通过Console.Read()将它赋值给一个不同的值时,它会给出一个错误:无法隐式地将'char'类型转换为'ConsoleApplication1.Test<char>'
我两次都试过:
c = (char)Console.Read();以及:
c = Convert.ToChar(Console.Read());甚至:(我知道这样做很愚蠢,但我很生气,想看看它是否管用)
c = (char)Convert.ToChar(Console.Read());因此,我完全不明白如何继续下去。请帮帮忙。
编辑:Test类中的当前构造函数:
public Test() { }//empty constructor public Test(T obj) { variable = obj; }//filled constructor
发布于 2013-04-10 15:52:51
Test<char>不是char。它是一种新的泛型类型(Test<T>),它(想必)使用提供的类型参数(即T)的对象做一些事情。在您的示例中,您已经说明希望使用char类型作为此泛型类型的类型参数。
假设您在Test<T>上有一个类型为T的属性
class Test<T>{
public T MyTypeValue { get; set; }
}然后,您可以创建这个泛型类型的新实例,并将试图获取的东西的实例分配给属性(在本例中,控制台读取):
static Test<char> c = new Test<char>(){ MyTypeValue = 'n'};由于MyTypeValue是通过泛型类型的T类型参数类型char类型的,所以可以为它分配一个实际的char,但不能分配给c。也就是说,如果没有实现其他的转换方法,这就是它所显示的@奥斯汀所建议的。
https://stackoverflow.com/questions/15930437
复制相似问题