C# dilini daha iyi anlamak için bunun neden bir derleme hatası olduğunu bilmek istiyorum.C# neden "base" arayüzünü ref?
Kodumda IDisposable'tan türeyen bir arabirim (IMyInterface) var. 'ID'ye uygun' tipinde bir param olan başka bir metodum var. Ancak, bu yönteme IMyInterface türünde bir üye var geçemiyorum. İşte aşağıda benim kod örneği:
using System;
namespace CompileErrorBaseInterface
{
public interface IMyInterface : IDisposable { }
class Program
{
private IMyInterface _myInterfaceObj;
static void Main(string[] args) { }
public void ExampleMethod()
{
MyMethodBaseInterface(ref _myInterfaceObj); //compile error
MyMethodDerivedInterface(ref _myInterfaceObj); //no compile error
}
private void MyMethodBaseInterface(ref IDisposable foo) { }
private void MyMethodDerivedInterface(ref IMyInterface foo) { }
}
}
derleme hataları şunlardır:
- Tartışma 1: 'ref System.IDisposable' iyi aşırı yöntem için 'ref CompileErrorBaseInterface.IMyInterface' dan dönüştüremezsiniz maç
- 'CompileErrorBaseInterface.Program.MyMethodBaseInterface (ref System.IDisposable)' için bazı geçersiz argümanlar vardır
Herkesin buna neden izin verilmediğini açıklayabilir mi, yoksa derleyicinin yapması mümkün değil mi? Ben jenerik kullanarak bir geçici çözüm var, bu yüzden sadece bu şekilde neden yapılmasına izin olmadığını anlamak istiyorum.
Teşekkürler.