Non capisco questo errore in C#Che cosa significa "un inizializzatore di campo non può fare riferimento a campi non statici" significa in C#?
CS0236 errore: Un inizializzatore di campo non può fare riferimento il campo non statico, metodo o proprietà 'Prv.DB.getUserName (lungo)'
Per il seguente codice
public class MyDictionary<K, V>
{
public delegate V NonExistentKey(K k);
NonExistentKey nonExistentKey;
public MyDictionary(NonExistentKey nonExistentKey_) { }
}
class DB
{
SQLiteConnection connection;
SQLiteCommand command;
MyDictionary<long, string> usernameDict = new MyDictionary<long, string>(getUserName);
string getUserName(long userId) { }
}
Pensate a che cosa accadrebbe se il responsabile di MyDictionary invocasse il delegato passato immediatamente. _ Chiamerebbe un metodo su un oggetto il cui costruttore era ancora in esecuzione! _ Potrebbe essere molto brutto. Pertanto, è illegale passare un delegato a un membro di istanza come questo. –