1
resposta

[Dúvida] desreferencia de uma referencia possivelmente nula

bom dia!

        using System;

        class Program
        {
            static void Main()
            {
                int num = Convert.ToInt32(Console.ReadLine());
                for(int i = 0; i < num; i++)
                {
                    string[] texto = Console.ReadLine().Split(' '); // erro cs8602
                    int n1 = Convert.ToInt32(texto[0]);
                    int n2 = Convert.ToInt32(texto[1]);

                    int maior = n1, menor = n2;
                    if(n2 > n1)
                    {
                        maior = n2;
                        menor = n1;
                    }
                    Console.WriteLine(MDC(maior, menor));
                } 
            }
            static int MDC(int maior, int menor)
            {
                if(maior % menor == 0)
                {
                    return menor;
                }
                return MDC(menor, (maior % menor));
            }
        }

pessoal, bom dia! na linha comentada, está me dando um aviso, por quê? Eu rodei o código, mas quando eu executo no terminal -dotnet build- me da um aviso (cs8602), mas ele compila normalmente. Na internet não encontrei uma explicação para sanar minha dúvida, alguém poderia me explicar...

Erro: desreferencia de uma referencia possivelmente nula

:)

1 resposta

Olá, Dayana. Tudo bem?

O erro ocorre porque usar o Console.ReadLine() implica que podemos trabalhar com um valor do tipo nulo, porém, a função Split() espera separar uma string para um array. Ou seja, em algum momento a variável texto pode ser nula e o compilador tenta te avisar isso. Mas se você tiver certeza que esta variável não for nula, você pode usar o operador de ! null-forgiving, em tradução livre: "perdão nulo", que irá retirar todos os avisos de referências nulas como este que você teve.

No código, ficará da seguinte maneira:

string[] texto = Console.ReadLine()!.Split(" ");

Repare que no código acima adicionamos o operador de ! para indicar que temos certeza que esta referência não será nula.

Espero ter ajudado :)

Qualquer dúvida estou à disposição. Bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓