Aviso do compilador (nível 1) CS1060
Uso de campo 'name' possivelmente não atribuído. As variáveis de instância struct são inicialmente não atribuídas se struct não for atribuído.
Os membros de struct são inicializados em seus valores padrão se você não inicializá-los explicitamente. O valor padrão de tipos de classe (e outros tipos de referência) é nulo. Se a classe não for inicializada antes de qualquer tentativa de acessá-la, um NullReferenceException
será gerado em tempo de execução. O compilador não pode determinar definitivamente se o membro da classe será inicializado ou não, por isso, o CS1060 será um aviso e não um erro.
Para corrigir este erro
- Fornecer um construtor para o
struct
que inicializa todos os seus membros.
Exemplo
O código a seguir gera o erro CS1060 porque o tipo de classe U
é um membro de struct S
, mas nunca é inicializado.
// cs1060.cs
namespace CS1060
{
public class U
{
public int i;
}
public struct S
{
public U u;
// Add constructor to correct the error.
//public S(int val)
//{
// u = new U() { i = val };
//}
}
public class Test
{
static void Main()
{
S s;
s.u.i = 5; // CS1060
//Try these lines instead, and uncomment the constructor in S
// S s = new S(0);
// s.u.i = 5;
}
}
}
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de