Delegates - Curso Programação Completo C# - Aula 50

Поделиться
HTML-код
  • Опубликовано: 23 янв 2025

Комментарии • 42

  • @youngc4rlos861
    @youngc4rlos861 3 года назад +6

    Brabo demais, seu curso e sua didática são muito bons
    não fiz ele do começo, mas quando dou uma pesquisada sobre C# eu caio nas suas aulas, e me ajuda demais
    Valeu mesmo!

  • @lamaspacos
    @lamaspacos 6 месяцев назад +1

    Muito interessante.
    Ex. d1 pode ser obtido por um if/etc e depois usado.

  • @bartsilva5513
    @bartsilva5513 2 года назад +4

    excelente aula como sempre, ainda estou engatinhando nessa linguagem...não consegui enxergar ainda na prática a vantagem fiz um comparativo entre usar e não usar, vou pesquisar mais sobre esse assunto pra tentar entender o uso por necessidade real.........
    using System;
    // funciona como o switch / seletor
    // permite apontar para uma determinada função
    // na pratica não vi ainda real funcionalidade
    // porque poderia fazer direto... (ver em ****)
    delegate int Op(params int[]n);
    class Mat{
    public static int soma(params int[]n)
    {
    int resu=0;
    for (int i=0;i

  • @ricardoerickrebelo3380
    @ricardoerickrebelo3380 11 месяцев назад +2

    A falta de um ponteiro em C# levou a toda uma estrutura pesada para substituir.

  • @dricupero15
    @dricupero15 4 года назад +3

    Parabéns pela iniciativa do canal e pela qualidade das aulas!

    • @cfbcursos
      @cfbcursos  4 года назад +4

      Valeu meu caro, muito obrigado

  • @jokerphoenix3788
    @jokerphoenix3788 День назад

    se o método tiver privado ou não for static o delegate também funciona?

  • @josebruno2170
    @josebruno2170 4 года назад +1

    Professor, obrigado pelo conteúdo! Aproveitando a quarentena para fazer o curso! Like!!

  • @cartolanegra
    @cartolanegra 4 года назад +8

    qual o lado bom de usar o delegade se ele apenas cria um objeto de um metodo static?ja qe o metodo e static nao precisa fazer isso tudo ai n precisa apenas colocar a classe.metodo(); e pronto

    • @robsonsilva9490
      @robsonsilva9490 3 года назад +2

      Então cara, eu cheguei a mesma conclusão que você(só que estou começando agora), seu pensamento sobere isso mudou neste último ano? Apareceu no seu caminho alguma justificativa para usar um recurso aparentemente desnecessário como esse?

    • @Petr_O
      @Petr_O 3 года назад +1

      pois é não vi nada . tmb não pois tem que usar static, antes usar MAT.SOMA (valor)

    • @TROYON_LEO
      @TROYON_LEO 3 года назад

      @@robsonsilva9490 Delegate pode ser usado com herança, polimorfismo, para você usar dentro da classe mãe um método implementado na classe filha passando o método como parâmetro em forma de delegate, assim a clase mãe pode ser genérica e tratar casos específicos.

    • @kleberleite3401
      @kleberleite3401 3 года назад

      @@robsonsilva9490 ruclips.net/video/kYUWvWXwYY4/видео.html

    • @kleberleite3401
      @kleberleite3401 3 года назад

      @@Petr_O ruclips.net/video/kYUWvWXwYY4/видео.html

  • @leaords8538
    @leaords8538 3 года назад

    Obg pelo vídeo ❤️

  • @brotherleobmx6280
    @brotherleobmx6280 5 лет назад

    Muito bom e bem explicado! Otimos videos!

  • @Ary_1984
    @Ary_1984 5 лет назад +13

    Me tirem uma duvida..
    Qual a vantagem de utilizar o delegate? não seria mais prático chamar a própria função!?

    • @vitorarchanjovasconcelosch1444
      @vitorarchanjovasconcelosch1444 5 лет назад +16

      Ao utilizar o delegate você pode fazer referência a um determinado método de uma classe sem ter um objeto instanciado. No exemplo da aula ele usou o "delegate: Op d1" para referenciar os métodos de soma e multiplicação, que é diferente de se instanciar um objeto da classe Mat (Mat exemplo = new Mat();) e depois referenciar o método "exemplo.soma(3,4);"
      // delegate int Op (int n1, int n2);
      // Op d1 = new Op(soma);
      É equivalente à:
      // Mat exemplo = new Mat( );
      // exemplo.soma(3,4);
      Este cenário pode ser útil em um sistema orientado a eventos como uma interface gráfica onde um código é executado quando um usuário clica em um botão, já que usando delegates você tem a flexibilidade para implementar qualquer funcionalidade em tempo de execução.
      Resumindo, o delegate consegue chamar um método de uma classe, ou struct, sem a necessidade de se ter um objeto, flexibilizando o programa em tempo de execução. Espero te ajudado!

    • @pedrocardoso185
      @pedrocardoso185 5 лет назад +8

      @@vitorarchanjovasconcelosch1444 mas um método estático por si só já não podw fazer isso?

    • @okmerendo5175
      @okmerendo5175 4 года назад

      @@pedrocardoso185 Né, pd sim.

    • @israelfe3938
      @israelfe3938 4 года назад +3

      aparentemente, vc pode facilitar a repetição no código, ao invés de ficar escrevendo a classe e método toda vez vc só escreve o nome do delegate e coloca os parâmetros

    • @kleberleite3401
      @kleberleite3401 3 года назад

      @@pedrocardoso185 acho que eu pra poder adicionar mais de um ;-; achei essa aula meio merda. Só deixou mais dúvidas 😭

  • @Goliank4987KatiUchaDiedy
    @Goliank4987KatiUchaDiedy 5 лет назад

    Bacana !!! -- vwl.

  • @mauro5378
    @mauro5378 5 лет назад

    Muito TOP! Excelente qualidade, didática excepcional! Desta vez aprendendo de verdade. Uma dúvida: O módulo de implementação gráfica será com .NetCore? O mais recente da microsoft e um dos top do mercado, no que se diz respeito framework, desenvolvimento web...

  • @sivispacemparabelum78
    @sivispacemparabelum78 4 года назад

    e se eu usar o delegate com argumento params ?

    • @uddy9865
      @uddy9865 4 года назад

      funciona do mesmo jeito

  • @r.m.2000
    @r.m.2000 2 года назад

    outra coisa é que dá pra declarar assim: d1=mult (sem o new Op(mult))... ou seja:
    Op d1 = Mat.soma;
    d1(10,50);

  • @primata83
    @primata83 2 года назад

    visto

  • @LuizSilva-ev8cu
    @LuizSilva-ev8cu 5 лет назад

    Professor, no Linux tenho que instalar o tempo de execução do .NET Core, ou somente o .NET Core?

    • @chagud
      @chagud 4 года назад +1

      cara ele nem ta usando dotnet pra nada ainda o mue dotnet mesmo ta dando erro depois vou resolver por qe por enquanto ta dando tudo certo

    • @LuizSilva-ev8cu
      @LuizSilva-ev8cu 4 года назад

      CHAGUD • eu consegui usar, no linux é mais fácil do q pensei

    • @uddy9865
      @uddy9865 4 года назад +1

      baixe os dois, são bem uteis

  • @israelribeirojunquera3360
    @israelribeirojunquera3360 3 года назад

    Com params ficaria assim...
    using System;
    namespace Delegates
    {
    delegate double Operação(params double[] n); // essa linha e o delegate
    class matematica
    {
    public static double soma(params double[] n)
    {
    double s = 0;
    for (int i = 0; i < n.Length; i++)
    {
    s += n[i];
    }
    return s;
    }

    }
    class Program
    {
    static void Main(string[] args)
    {
    double res;
    Operação operação=new Operação(matematica.soma);//declarei o delegate
    res = operação(10,20,20,30,40,50.5);
    Console.WriteLine("Soma:{0}",res);

    }
    }
    }

  • @r.m.2000
    @r.m.2000 2 года назад

    Mano, aula boa. so corrige ai. não é delegaDE é delegaTE que fala...rs... deu mó aflição aqui

  • @imthedaniels
    @imthedaniels 3 года назад +3

    Coragem aprender a programar sem o Visual Studio Community, acho que os iniciantes perdem muito tempo digitando coisas que o vsc já preenche automático.

  • @diogopereira1650
    @diogopereira1650 2 года назад +1

    Os meus métodos com o argumento params abaixo:
    Obs: Foi bem interessante trabalhar com isso descobri o namespace Linq durante essa brincadeira.
    using System;
    using System.Linq;
    class Math {
    public static double Add(params double[] ns) {
    double result = 0;
    foreach(double n in ns) result += n;
    return result;
    }
    public static double Sub(params double[] ns) {
    double result = ns[0];
    foreach(double n in ns.Skip(1)) result -= n;
    return result;
    }
    public static double Mult(params double[] ns) {
    double result = ns[0];
    foreach(double n in ns.Skip(1)) result *= n;
    return result;
    }
    public static double Div(params double[] ns) {
    double result = ns[0];
    foreach(double n in ns.Skip(1)) result /= n;
    return result;
    }
    }

  • @jubileudacachaca7777
    @jubileudacachaca7777 9 месяцев назад +1

    using System;
    class Program {
    delegate void Op(int x, int y);
    static void Main() {
    Op d1;
    d1 = Sub;
    d1 += Add;
    d1(20, 10);
    }
    static void Sub(int x, int y) {
    Console.WriteLine(x - y);
    }
    static void Add(int x, int y) {
    Console.WriteLine(x + y);
    }
    }
    //Creio que dessa forma seja mais simples e melhor de usar o delegate

  • @composisom5582
    @composisom5582 2 года назад

    namespace Aula54
    {
    delegate int Opera(params int[] Numeros);
    public class Calcula
    {
    public static int Soma(params int[] Numeros)
    {
    int Res=0;
    for(int i=0; i < Numeros.Length;i++)
    {
    Res+=Numeros[i];
    }
    return Res;
    }
    }
    public class Executa
    {
    static void Main()
    {
    Opera OP = new Opera(Calcula.Soma);

    Console.WriteLine(OP(1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9));

    }
    }
    }

  • @DiegoOliveiraProf
    @DiegoOliveiraProf 4 года назад +5

    mais uma novidade pra mim, só não entendi a utilidade disso na vida real do programador rs

  • @elenacalcadaevangelista1420
    @elenacalcadaevangelista1420 3 года назад

    Caso interesse, segue o código com o params.....
    using System;
    namespace delegates
    {
    delegate int Op(params int[]n);
    class Mat{
    public static int soma(params int[]n){
    int s =0; //elemento neutro da soma
    for(int i=0;i