首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能隐式转换'char‘类型为Test<char>类型,为什么?

不能隐式转换'char‘类型为Test<char>类型,为什么?
EN

Stack Overflow用户
提问于 2013-04-10 15:42:06
回答 1查看 263关注 0票数 0

我正在为那些参加C#自主学习的学生做一个样本程序。我以为我理解<T>,但显然我缺少一些神奇的秘密,让我能够充分利用它。

当我尝试创建一个变量时,它工作得很好:

代码语言:javascript
复制
 static Test<char> c = new Test<char>('n');

正如你所看到的,它是实例化的。

现在,当我通过Console.Read()将它赋值给一个不同的值时,它会给出一个错误:无法隐式地将'char'类型转换为'ConsoleApplication1.Test<char>'

我两次都试过:

代码语言:javascript
复制
c = (char)Console.Read();

以及:

代码语言:javascript
复制
c = Convert.ToChar(Console.Read());

甚至:(我知道这样做很愚蠢,但我很生气,想看看它是否管用)

代码语言:javascript
复制
c = (char)Convert.ToChar(Console.Read());

因此,我完全不明白如何继续下去。请帮帮忙。

编辑:Test类中的当前构造函数:

public Test() { }//empty constructor public Test(T obj) { variable = obj; }//filled constructor

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-10 15:52:51

Test<char>不是char。它是一种新的泛型类型(Test<T>),它(想必)使用提供的类型参数(即T)的对象做一些事情。在您的示例中,您已经说明希望使用char类型作为此泛型类型的类型参数。

假设您在Test<T>上有一个类型为T的属性

代码语言:javascript
复制
class Test<T>{
    public T MyTypeValue { get; set; }
}

然后,您可以创建这个泛型类型的新实例,并将试图获取的东西的实例分配给属性(在本例中,控制台读取):

代码语言:javascript
复制
static Test<char> c = new Test<char>(){ MyTypeValue = 'n'};

由于MyTypeValue是通过泛型类型的T类型参数类型char类型的,所以可以为它分配一个实际的char,但不能分配给c。也就是说,如果没有实现其他的转换方法,这就是它所显示的@奥斯汀所建议的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15930437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档