No internet connection
  1. Home
  2. Dúvidas Gerais

A diferença entre String nome = stdin.readLineSync()!; e String? nome = stdin.readLineSync();

Por Isis Pedroni @isis
    2023-07-20 00:25:51.933Z

    String nome = stdin.readLineSync()!;:
    Aqui, a declaração String nome indica que a variável nome é do tipo String, ou seja, espera-se que ela armazene uma sequência de caracteres. O operador ! é conhecido como operador "non-null assertion" (negação de nulidade). Ele é usado para indicar que o valor retornado por stdin.readLineSync() não pode ser nulo, mesmo que o método possa retornar um valor nulo (null). Se o valor retornado for nulo, ocorrerá um erro de tempo de execução, conhecido como "Null check operator used on a null value".

    Essa abordagem é usada quando temos certeza de que o método readLineSync() nunca retornará null ou quando queremos que o programa pare de funcionar caso ocorra alguma situação inesperada de nulidade.

    String? nome = stdin.readLineSync();:
    Aqui, a declaração String? nome indica que a variável nome é do tipo String, mas com a possibilidade de conter um valor nulo. O ? é conhecido como operador de nulidade. Ele permite que a variável possa receber o valor null caso o método readLineSync() retorne nulo.

    Essa abordagem é usada quando queremos permitir que a variável possa ser nula ou quando o método readLineSync() pode retornar null em algum cenário, e queremos tratar isso de maneira adequada no código, sem gerar um erro de tempo de execução.

    Em resumo, a principal diferença entre as duas declarações é que a primeira (String nome = stdin.readLineSync()!;) é usada quando temos certeza de que o valor não será nulo, enquanto a segunda (String? nome = stdin.readLineSync();) é usada quando a variável pode ou não conter um valor nulo e queremos tratá-la de acordo. A escolha entre os dois depende do contexto específico e dos requisitos do seu código.

    • 3 respostas
    1. Mônica Rosa da Costa @monicacosta
        2023-08-01 13:16:59.383Z

        Muito legal essa dica @isis ! Obrigada, ficou bem claro !!!

        1. Em resposta aisis:
          Ana Paula Gomes Guimarães @anaapgg
            2023-08-02 14:59:32.258Z

            Muito bom, obrigada pela dica!

            1. Em resposta aisis:
              @Grasiele
                2023-08-03 13:12:46.551Z

                Explicação muito boaaa!!! Obrigada