ser*_*0ne 11 .net c# abstract-class compiler-errors interface
考虑以下示例 - 这使用一个接口:
public interface IAlgorithm<TResult, TInput>
{
TResult Compute(TInput input);
}
class A : IAlgorithm<int, byte[]>
{
// Notice the use of params...not strictly what the interface specifies but it works.
public int Compute(params byte[] input)
{
// no sane developer would go to this length to prove a point
return input[0];
}
}
A inst = new A();
Console.WriteLine(inst.Compute(1, 2, 3));
// 1
Run Code Online (Sandbox Code Playgroud)
这个例子显示了一个接口,它的方法implementation(params byte[])deos与接口契约(byte[])不完全匹配......但是它有效!
考虑以下示例 - 它使用抽象类:
public abstract class Algorithm<TResult, TInput>
{
public abstract TResult Compute(TInput input);
}
class A : Algorithm<int, byte[]>
{
// Notice the use of params...not strictly what the abstract class specifies, and it causes the compile to burst into tears!
public override int Compute(params byte[] input)
{
// no sane developer would go to this length to prove a point
return input[0];
}
}
A inst = new A();
Console.WriteLine(inst.Compute(1, 2, 3));
//Compiler error: No overload for method 'Compute' takes 3 arguments
Run Code Online (Sandbox Code Playgroud)
我想知道为什么这适用于接口,但不适用于抽象类?
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |