C# 是否有相當于 Java 的通配符?我知道 C# 有宣告站點差異。但是,我想知道該語言是否提供了指定使用站點差異的選項。這是我正在尋找的示例:
class Parent {}
class Child : Parent {}
class Grandchild : Child {}
interface IProducer<out T>
{
T produces();
}
interface IConsumer<in T>
{
void consumes(T p);
}
class Collection<T> : IProducer<T>, IConsumer<T>
where T:new()
{
private readonly T _v;
public Collection()
{
_v = new T();
}
public T produces()
{
return _v;
}
public void consumes(T p)
{
//
}
public static void Main(string[] args)
{
Collection<Child> coll = new Collection<Child>(); // Invariance
IProducer<Parent> producer = coll; // Producer using declaration site variance and segregating by interface
IConsumer<Grandchild> consumer = coll; // Consumer using declaration site variance and segregating by interface
// Equivalent of Collection<? extends Parent> producer = coll; ?
// Equivalent of Collection<? super Grandchild> producer = coll; ?
}
}
uj5u.com熱心網友回復:
不,C# 僅支持宣告站點差異。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/426116.html
