No entiendo este error en C#¿Qué significa "un inicializador de campo no puede hacer referencia a campos no estáticos" significa en C#?
CS0236 de error: Un inicializador de campo no puede hacer referencia al campo no estático, método o propiedad 'Prv.DB.getUserName (largo)'
Para obtener el siguiente código
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) { }
}
Piense en lo sucedería si el cdigo de MyDictionary invoca el delegado pasado inmediatamente. ¡Llamaría a un método en un objeto cuyo constructor aún se estaba ejecutando! _ Eso podría ser muy malo. Por lo tanto, es ilegal pasar un delegado a un miembro de instancia como este. –