所以目前有一段看起来像这样的代码......
string name = GetValues(sequenceOfCodes, 0, IDtoMatch, 1)[0];
Run Code Online (Sandbox Code Playgroud)
我刚刚更新了以下行
string name = sequenceOfCodes
.Select(x => x[0])
.Where(x => x == IDtoMatch)
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
哪个应该有希望返回相同的东西.
sequenceOfCodes是a List<List<String>>,IDtoMatch也是a string.
所以希望这一切看起来都很好.
但是当我去编译时,我得到一个奇怪的错误
The type 'System.Windows.Forms.ComboBox' is defined in an assembly
that is not referenced.
You must add a reference to assembly 'System.Windows.Forms, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089'
Run Code Online (Sandbox Code Playgroud)
当我把新添加的代码带走时,编译好并运行......那么为什么它只是因为我添加了lambda expression它认为我需要引用System.Windows.Forms.ComboBox?
只是声明这是一个控制台应用程序.不是 winforms应用程序.
----------- ----------更新
好吧,所以我发现其中一个引用确实引用了System.Windows.Forms,我真的很失望,因为这是核心代码,不应该有这样的依赖:(
但是我仍然想知道为什么错误之前没有出现,直到我添加了我的代码行.
要确认,如果我删除了我的代码,我可以关闭VS并重新启动并重建,一切都很好.如果我添加我的代码行并关闭并重新启动等.错误将在重建时重新出现.
对我来说非常奇怪的错误.
谢谢你们的帮助
您提到其他项目之一确实引用了 Windows 窗体。我的猜测是,该项目还声明了一些在范围内的扩展方法(给定您的using指令),并且编译器需要探索这些扩展方法以进行重载解析 - 大概是Where, SelectorFirstOrDefault方法;含义:在将其与其他候选者进行比较之前,它无法确定其中的最佳重载System.Linq.Enumerable,并且如果无法理解竞争方法签名中使用的类型,它就无法做到这一点。
或者换句话说:是否有Select,Where或FirstOrDefault自定义扩展方法提到ComboBox?
| 归档时间: |
|
| 查看次数: |
163 次 |
| 最近记录: |