Salve Marco,
non replico la premessa... ho chiesto proprio perche' mi piace imparare qualche cosa per me nuovo...
il convertitore Telerik l'ho guardato perche' NON riesco a "tradurre" in un linguaggio diverso da quello "mio abituale" un determinato costrutto.
se, leggendo la conversione, avessi capito il contesto, avrei "imparato" qualche cosa... ma non e' questo il caso .
detto questo, anche guardando la sinossi del costrutto switch, non riesco a capire "come mai" il confronto booleano
case (button == this.tStripButXXX): // errato per "a costant value is expected"
non soddisfi le condizioni come nel costrutto SELECT CASE di VB; "a costant value is expected" non mi e' affatto chiara come eccezione sollevata.
questo per il "mio" codice.
per il codice di Telerik, invece, sto ancora cercando il significato dell'underscore "_" nell'espressione
case object _ when (ToolStripButton)sender == this.tStripButEnd:
non ho ancora trovato riferimenti in rete...
comprendo che il pattern matching di switch sia diverso da SELECT CASE, ma non riesco per comprendere il significato...
tendenzialmente
case (ToolStripButton)sender == this.tStripButEnd:
dovrebbe essere sufficiente, ma a quanto pare mi manca la comprensione di tutta la parte precedente. il "when" aggiunto risulta una seconda condizione addizionale (che poi e' quella a me interessante), ma di nuovo, "perche' e cos'e'" [case object _ ]
hai la grazia di indirizzarmi da qualche parte, perche' un confronto di questo tipo nella sinossi e nella language specification?
grazie e saluti omnia
[EDIT]
come non detto... trovato... espresso in maniera alla mia bassezza...
https://spin.atomicobject.com/2018/01/11/csharp-pattern-matching-7-0/
case object _ when (ToolStripButton)sender == this.tStripButEnd:
viene risolto come (semanticamente in mio_finto_pseudocodice)
case { cast_di_type( in questo caso object) nomeIstanza "_" | when (epressione booleana) }
che mi pare un "arzigotolo" in quanto
case { cast_di_type( in questo caso object) nomeIstanza "_" | when
((ToolStripButton)sender == this.tStripButEnd) }
diventa la parte rilevante di questa particolare espressione ...
complicato
grazie comunque
[/EDIT]
--
Andrea