Se faccio una classe di test vuoto:Cosa significa il compilatore C# quando stampa "esiste una conversione esplicita"?
public class Foo
{
}
E cerco di compilare il codice con questa affermazione:
Foo foo = "test";
Allora ottengo questo errore come previsto:
non può implicitamente convertire il tipo 'stringa' in 'ConsoleApplication1.Foo'
Tuttavia, se cambio la dichiarazione di Foo
dalla classe di interfacciarsi, i cambiamenti di errore a questo (sottolineatura mia):
Non può convertire implicitamente il tipo 'stringa' a 'ConsoleApplication1.Foo'. Esiste Una conversione esplicita (stai manca un cast?)
che cosa è questa "conversione esplicita", che si suppone di esistere?
aggiornamento: il problema è un po 'più sottile di quanto pensassi inizialmente. Per riprodurlo, inserire questo codice in una nuova applicazione console in Visual Studio 2008:
namespace ConsoleApplication1
{
class Foo
{
}
interface IFoo
{
}
class Program
{
static void Main(string[] args)
{
Foo b = "hello";
}
}
}
studio visivo mostrerà automaticamente l'errore corretto a questo punto (prima di costruire il codice). Ora inserisci "I" per trasformare "Foo" in "IFoo" e attendi alcuni secondi senza creare. La versione di "conversione esplicita esistente" dell'errore verrà ora visualizzata automaticamente nella finestra di output degli errori e nella descrizione dello strumento per l'errore di assegnazione.
L'errore errato di scompare nuovamente quando si preme esplicitamente F6 per creare.
Da segnalare, questo errore viene visualizzato nella finestra di output non il (build) LISTA ERRORI. – gingerbreadboy
Non riesco ancora a visualizzare l'errore con il codice modificato, sono presenti componenti aggiuntivi o impostazioni speciali? –
quali sono i plugin VS in esecuzione? Non riesco a riproporre questo problema in VS2008 SP1, Win XP SP3 x32. Ottengo l'errore previsto in entrambi i casi. FWIW, sto anche eseguendo ReSharper 5.0RC EDIT: Ron mi ha battuto per farlo! :) –