【发布时间】:2015-03-02 20:55:08
【问题描述】:
我是学习 C# 的新手,并且来自 C++ 背景。我以下列方式使用别名:
using CreationFunction = Func<Microsoft.Xna.Framework.Vector2, GAShooter.Entity>;
然后在我的课堂上我有一本像这样的字典:
private Dictionary<String, CreationFunction> creators;
但是,当我尝试像这样在构造函数中初始化它时:
creators = new Dictionary<String, CreationFunction>();
我得到一个错误。它说它不能隐式转换类型。是什么赋予了?
编辑:完整代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CreationFunction = Func<Microsoft.Xna.Framework.Vector2, GAShooter.Entity>;
namespace GAShooter
{
class EntityFactory
{
private Dictionary<String, CreationFunction> creators;
public EntityFactory()
{
creators = new Dictionary<String, CreationFunction>();
}
public void RegisterCreator(String name, CreationFunction function)
{
creators[name] = function;
}
public Entity Create(String name)
{
var creator = creators[name];
return creator();
}
}
}
错误的全文是:
无法将类型
'Dictionary<string,Func <Microsoft.Xna.Framework.Vector2, GAShooter.Entity>隐式转换为类型'Dictionary<String, CreationFunction>'
【问题讨论】:
-
错误的全文是什么?那应该可以。
-
提供错误消息的确切文本,以及一个完整的代码示例并演示所描述的问题。
-
@RufusL 请确保您的编辑不会使问题变得更糟,通过将其转换为引号,您将无法查看 标记中的内容。
-
@ScottChamberlain 哦,谢谢 - 我会注意的!
-
@user3355098 你的例子仍然很差。它要求应答者安装并准备好使用 XNA。您可以轻松地创建一个使用
Func<object, object>的玩具控制台程序并演示相同的问题,并且其他用户复制到 VS 并直接运行会容易 100 倍。