Le cascate di metodo sono mai state considerate per C #?

2

Smalltalk supporta una funzione di sintassi chiamata "message cascades". Le cascate vengono adottate dal Lingua programmazione dart .

Per quanto ne so, C # non supporta questo. Erano mai stati presi in considerazione durante la progettazione della lingua? È concepibile che possano apparire in una versione futura della lingua?

    
posta dharmatech 15.07.2012 - 02:09
fonte

1 risposta

16

Le interfacce fluenti sono facilmente supportate in C # utilizzando return this .

In Linq, i metodi di estensione sono usati per realizzare la stessa cosa. I metodi di estensione oltre IQueryable o IEnumerable sono facilmente concatenati.

Cascades, come descritto dalla pagina al link che hai fornito, sembra essere semplicemente un sottile perfezionamento di un'interfaccia Fluent ordinaria in cui return this non è richiesto per farlo funzionare, poiché tutte le chiamate di metodo iniziano con .. si riferisce al primo risultato restituito:

query('#my-form').query('button')
    ..classes.add('toggle')
    ..text = 'Click Me!'
    ..labels.add(toggleLabel);

C # supporta questo? No, non esattamente. Ma puoi ancora scrivere il seguente codice equivalente:

var result = query('#my-form').query('button')
result.classes.add('toggle')
result.text = 'Click Me!'
result.labels.add(toggleLabel);

ed è solo leggermente più prolisso (e probabilmente più facile da leggere).

Per quanto riguarda la domanda, "Erano mai stati presi in considerazione per C #," dovresti chiedere a Anders Hejlsberg o Eric Lippert a riguardo. La mia ipotesi è che lo vedano come zucchero sintattico, che in effetti lo è.

    
risposta data 15.07.2012 - 07:22
fonte

Leggi altre domande sui tag