prendere questo esempio:Var tipo parola inferenza ambiguità quando entrambi interfaccia e implementazione sono presenti
interface IEntity {
string Name { get; set; }
}
class Product : IEntity {
public string Name { get; set; }
public int Count { get; set; } // added member
}
class Client {
void Process() {
var product = new Product();
int count = product.Count; // this is valid
}
}
Nell'esempio precedente, qual è il tipo di prodotto? È IEntity o prodotto? Sembra che il prodotto sia di tipo implementazione concreta (prodotto). Se questo è il caso, non var dovrebbe essere usato solo in circostanze particolari. Ma vedo che strumenti come il resharper raccomandano l'uso di var di default. Non dovrebbe un programma per un'interfaccia?
Il punto è, la variabile "prodotto" sarà sempre predefinita per tipo di "Prodotto" (piuttosto che IEntity) indipendentemente da se la classe implementata (Prodotto) ha membri aggiuntivi, quando si utilizza var. – Mank
È possibile creare un'interfaccia 'IProduct' che includa i membri aggiunti da' Product'. – ironsam