Joe*_*Joe 4 c# collections delegates casting
我有一个MyCollection<T>我已经制作的通用集合,除了Apply我正在添加的这个新功能外,一切正常:
class MyCollection<T> {
T value;
public MyCollection(T starter) { value = starter; }
public MyCollection<S> Apply<T, S>(Func<T, S> function) {
return new MyCollection<S>(function(value)); // error in function(value)
}
}
Run Code Online (Sandbox Code Playgroud)
这给了我一个我以前从未见过的错误:
Argument 1: cannot convert from 'T' to 'T [C:\folder\code.cs (line number)]'
Run Code Online (Sandbox Code Playgroud)
这两种T类型是什么?我正在尝试的转换有什么问题?
你的问题是类型参数T in
class MyCollection<T>
Run Code Online (Sandbox Code Playgroud)
与T in的类型参数不同
Apply<T, S>
Run Code Online (Sandbox Code Playgroud)
所以你function需要的是另一种类型value
如果你改变
Apply<T, S>
Run Code Online (Sandbox Code Playgroud)
至
Apply<S>
Run Code Online (Sandbox Code Playgroud)
你的代码将编译
| 归档时间: |
|
| 查看次数: |
450 次 |
| 最近记录: |