0

我正在为以后学习 C# 进行独立学习的学生制作一个示例程序。我以为我明白<T>了,但显然我缺少一些能让我充分利用它的神奇秘密。

当我尝试创建一个变量时,它工作正常:

 static Test<char> c = new Test<char>('n');

如您所见,它已被实例化。

现在,当我通过 then 将其分配给不同的值时,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
4

1 回答 1

4

Test<char>不是一个char。这是一个新的泛型类型 ( Test<T>),它(大概)对提供的类型参数 (ie T) 的对象做了一些事情。在您的示例中,您已声明要使用该char类型作为此泛型类型的类型参数。

想象一下,你有一个Test<T>类型的属性T

class Test<T>{
    public T MyTypeValue { get; set; }
}

然后,您可以创建此泛型类型的新实例,并将该属性分配给您尝试获取的事物的实例(在这种情况下,控制台读取):

static Test<char> c = new Test<char>(){ MyTypeValue = 'n'};

由于MyTypeValueis 是char通过泛型类型的T类型参数进行的类型,因此您可以为其分配一个实际值char,但不能为c. 也就是说,没有实现@Austin 所建议的其他一些转换方法。

于 2013-04-10T15:52:51.743 回答