2016-04-10 68 views
5

Ho una grossa difficoltà. Ho una domanda a cui rispondere: quali caratteristiche deve avere MyClass per essere corretto?Tipi anonimi (funzioni per classi)

var myVariable = new MyClass { 25 }; 

Ho cercato di trovare la risposta da venerdì ma non ho ancora risultati. Hai qualche idea al riguardo?

risposta

5

ci sono due cose la classe ha bisogno al fine di poter beneficiare di che sintassi:

  • Si deve attuare IEnumerable (o qualche altra interfaccia che implica IEnumerable - potrebbe anche ereditare da una base classe che implementa IEnumerable)
  • Si deve attuare un metodo Add(...) grado di ricevere un valore int

Una qualsiasi delle seguenti dichiarazioni di classe avrebbe fatto:

public class MyClass1 : IEnumerable 
{ 
    public void Add(int i) { } 
    public IEnumerator GetEnumerator() => null; 
} 

public class MyClass2 : IEnumerable 
{ 
    public void Add(double i) { } 
    public IEnumerator GetEnumerator() => null; 
} 

public class MyClass3 : IEnumerable 
{ 
    public void Add(object i) { } 
    public IEnumerator GetEnumerator() => null; 
} 

Non ci sono più tipi così che il compilatore può lanciare automaticamente il valore int per, quanto sopra sono solo 3 esempi diversi.

2

Dovrebbe essere un metodo Add(int). Questo è un inizializzatore di raccolta. List piace così.

var myVariable = new List<int> { 25 };