我正在为后来接受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
答案 0 :(得分:4)
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
属于char
类型,通过泛型类型的T
类型参数,您可以为其分配实际char
,但不能c
{{1}} 1}}。也就是说,没有实现@Austin建议的其他转换方法。