首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#从TIn解析通用TOut

C#从TIn解析通用TOut
EN

Stack Overflow用户
提问于 2012-11-24 08:27:37
回答 2查看 3.2K关注 0票数 0

可能重复: 为什么C#不推断我的泛型?

假设我们有这样一个方法和一个类:

代码语言:javascript
复制
Result<TOut> SendMessage<TIn, TOut>(TIn message)
    where TIn : IMessage<TOut>
{
}

class Message : IMessage<string> 
{
}

为什么当我这样调用它时,它不能解析类型:

代码语言:javascript
复制
var message = new Message();
var result = SendMessage(message);

我们有锡,我们对锡也有限制,所以从那里我们就可以知道如何推销。但为什么不起作用?

如果我写

代码语言:javascript
复制
var result = SendMessage<Message, string>(message);

这显然有效,但这不太方便。

EN

回答 2

Stack Overflow用户

发布于 2012-11-24 09:13:52

基于规格说明,类型推断发生在输入参数上,而不是返回类型。

可以通过在参数列表中包含输出泛型类型参数来解决问题:

代码语言:javascript
复制
 public static Result<TOut> SendMessage<TOut>(IMessage<TOut> message)
票数 0
EN

Stack Overflow用户

发布于 2012-11-24 08:43:31

我认为这是泛型方法的语法规则。如果将方法声明为泛型,则始终需要在调用该方法时提供该类型。

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

https://stackoverflow.com/questions/13539594

复制
相关文章

相似问题

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