【发布时间】:2018-03-15 13:20:47
【问题描述】:
这是我的code:
public class Program
{
public static void Main(string[] args)
{
Factory factory = new Factory();
}
}
public class Factory
{
public Factory() {
Animal animal = new Animal();
MVCSender<Animal>(animal);
}
public void MVCSender<T>(object elem) {
WebAPIReceiver<T>(elem);
}
public void WebAPIReceiver<T>(object elem) {
WebAPIProcesser((T)elem);
}
public void WebAPIProcesser(Animal elem) {
elem.Speak();
}
}
public class Animal
{
public Animal() {}
public void Speak()
{
Console.WriteLine("Animal Speak!");
}
}
我跨函数传递T,在“端点”上,我尝试使用已跨函数传递的T 类型转换通用object 类型。
这是一个自学问题,整体没有任何意义。
- 为什么我不能从
T将WebAPIProcesser((T)elem)转换为Animal? - 在 C# 中写泛型(在函数名之后)是什么意思?它是否只是在任何函数声明之前替换
template <class T>(例如C++)?
【问题讨论】:
-
因为
object不是T并且T不是Animal。研究你得到的编译器错误。 -
当您已经知道 T 是为了调用参数时,为什么还要使用参数对象?他们可以是 T elem
-
2.
public void WebAPIReceiver<T>(T elem) where T : Animal { WebAPIProcesser(elem); }是传递 T 作为参数的方式。 -
@User.Anonymous 仍然不起作用rextester.com/QAUW36864
-
当您将方法
WebAPIReceiver<T>和WebAPIReceiver<T>设为通用时,您想要实现什么?哪些类型可以替代T?为什么签名M(Animal elem)不足以满足您的目的?