Domanda

Ho notato che si può fare questo genere di cose in C#:

XNamespace c = "http://s.opencalais.com/1/pred/";

Notare il valore di stringa è convertito implicitamente di tipo diverso.Ci sono altri posti dove questo può essere fatto?Quali sono alcuni modelli comuni e pratiche di questo genere di cose?

È stato utile?

Soluzione

Questo può accadere ogni volta che un operatore di conversione implicito è definito.Tutto sommato è abbastanza raro.

Altri suggerimenti

questo dovrebbe aiutare http://msdn.microsoft.com/en-us/library/z5z9kes2.aspx

edit:Matt ninja piacerebbe farlo :)

Sorprendentemente, la prima volta che ho visto questo è stato il Articolo di Wikipedia su C# gli operatori di Conversione, non ho mai visto nessuno usare questo prima.Sembra che avrebbe danneggiato la leggibilità e confondere un sacco di sviluppatori...

Fondamentalmente XNamespace fornire un operatore che esegue la conversione implicita.

Immagino che la maggior parte del senso comune linee guida si applicano, uso solo dove ha senso ed evitare confusione.Il problema più grande è involontaria la conversione implicita che potrebbe potenzialmente aprire per gli errori di programmazione.È possibile evitare questo e ancora fornire una conversione con un esplicito operatore di conversione.

Un esempio di un caso in cui si desidera utilizzare una conversione esplicita operatore invece di un implicito sarebbe un intero classe che permette la conversione da un tipo a virgola mobile;una conversione implicita e nascondere il troncamento/arrotondamento che avrebbe dovuto prendere posto e così potrebbe rendere l'utente molto confuso (e probabilmente la fonte di bug.)

Nel mio codice ho usato un paio di volte, per esempio in una convalida molto semplice risultato di una struttura che ha fornito la conversione implicita di tipo bool (ma non dal).Questo mi ha permesso di fare if (result) { ... } (la giuria è ancora fuori su l'utilità di questo però :)).

Immagino la maggior parte di il suo uso è per il "semplice" tipi di dati, come i grandi numeri interi, decimali e allo stesso modo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top