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

if ternário em C#

Por Antonio Jose da Silva Almeida @ajsalmeida
    2022-12-21 11:35:31.698Z2022-12-21 11:42:34.928Z

    Olá pessoal.
    Trazendo uma forma interessante sobre como fazer um código alternativo if, else em c# utilizando operador ternário. Resumindo... é poder fazer um if e else compactados em uma linha.

    Exemplo:
    Esse seria um código if, else no método tradicional:

    if(condicao)
    { 
    codigo a;
    }
    else
    {
    codigo b;
    }
    

    e esse seria o código com if ternário:

    condicao ? codigo a: codigo b;
    
    

    Obs.: o codigo logo após ao sinal de interrogação representa o if e o depois dos dois pontos representa o else.

    Não encontrei informações sobre como fazer um if, else if, else utilizando essa estrutura, mas mesmo assim é algo interessante de usar.

    Mais informações sobre o operador condicional ternário aqui: https://learn.microsoft.com/pt-br/dotnet/csharp/language-reference/operators/conditional-operator

    • 8 respostas
    1. André Filipe @andresantos
        2022-12-21 12:41:20.675Z

        O ternário é uma forma abreviada do if else. Logo, não é possível escrever apenas if.
        Veja que poderá definir else if e else:

        int numero = 1;
        string resultado = numero > 0 ? "número positivo" : numero < 0 ? "número negativo" : "igual a zero";
        Console.WriteLine(resultado);
        
        1. Em resposta aajsalmeida:
          Lucas Ferreira @lksferreira
            2022-12-21 16:22:04.206Z

            E tem o if com apenas um termo também:

            if (condicao) codigo;

            bool teste = true;
            
            if(teste) Console.WriteLine("Teste verdadeiro");
            
            

            Nesse caso não precisamos atribuição

            1. TThiago Nebuloni @thiagonebuloni
                2023-01-01 03:19:05.086Z

                Esse é meu favorito kkkk tento usar sempre que possível.
                Funciona com o else também, na mesma linha.

              • Em resposta aajsalmeida:
                Larissa Leal @LariLeal
                  2022-12-21 14:20:34.515Z

                  O operador ternário facilita muito em casos quando o código é pequeno, mas em casos com várias condições acho que piora a legibilidade do código.
                  Se optar por utilizar com mais de uma condição é recomendado o parênteses, para não causar tanta confusão ao ler
                  Tem um exemplo de como usar varias condições aqui:
                  https://www.youtube.com/watch?v=uAyfj46vOJE&t=385s
                  No minuto 06:25

                  1. Em resposta aajsalmeida:

                    É recomendado usar o operador Ternário em ocasiões específicas, é igual o uso do switch onde não pode ser substituido pelo if else, mas o switch em certas regiões é melhor para dar mais legibilidade ao código.

                    Este operador pode ser útil em situações em que desejamos atribuir a uma variável, valores diferentes de acordo com determinada condição. Já vi sendo bastante utilizado quando precisavam dar uma instrução a uma expressão e utilizar if else deixaria muito extenso e incoveniente pro caso, então utilizavam os ternários.

                    O @andresantos deu um bom exemplo de uma situação onde atribuimos uma variável uma condição ternária, e dependendo do valor retornado, já muda o valor da variável que está carregando a expressão com o ternário.

                    int numero = 1;
                    string resultado = numero > 0 ? "número positivo" : numero < 0 ? "número negativo" : "igual a zero";
                    Console.WriteLine(resultado);
                    
                    • Sem o uso do ternário alonga muito o código
                                    if(numero > 0) 
                                    {
                                        resultado = "número positivo";
                                    } 
                                    else if(numero < 0) 
                                    {
                                        resultado = "numero negativo"
                                    } 
                                    else 
                                    {
                                        resultado = "igual a zero"
                                    }
                                    Console.WriteLine(resultado);
                    
                    1. Em resposta aajsalmeida:
                      Saulo Emídio @sauloemidio
                        2022-12-21 11:49:04.910Z

                        Isso mesmo, parabéns pela contribuição!

                        1. Em resposta aajsalmeida:

                          Eu vi isto este final de semana no curso da udemy e achei bem interessante o uso!
                          O exemplo que o professor deu em aula foi:

                          var nota2 = 9.0;
                          bool bomComportamento = true;
                          string resultado2 = nota2 >= 7.0 && bomComportamento ? "Aprovado" : "Reprovado";
                          Console.WriteLine(resultado2);

                          nesse caso de nota de aluno, usamos muito if/else, mas no exemplo acima veio muuuito a calhar o uso do operador ternário!

                          1. L
                            Em resposta aajsalmeida:
                            LENNAN @lennanrnz
                              2023-03-02 22:49:08.641Z

                              Isso mesmo, parabéns pela contribuição!