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!
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
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
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?
@@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.
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!
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
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...
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);
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.
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; } }
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
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);
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
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!
Muito interessante.
Ex. d1 pode ser obtido por um if/etc e depois usado.
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
A falta de um ponteiro em C# levou a toda uma estrutura pesada para substituir.
Parabéns pela iniciativa do canal e pela qualidade das aulas!
Valeu meu caro, muito obrigado
se o método tiver privado ou não for static o delegate também funciona?
Professor, obrigado pelo conteúdo! Aproveitando a quarentena para fazer o curso! Like!!
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
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?
pois é não vi nada . tmb não pois tem que usar static, antes usar MAT.SOMA (valor)
@@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.
@@robsonsilva9490 ruclips.net/video/kYUWvWXwYY4/видео.html
@@Petr_O ruclips.net/video/kYUWvWXwYY4/видео.html
Obg pelo vídeo ❤️
Muito bom e bem explicado! Otimos videos!
Me tirem uma duvida..
Qual a vantagem de utilizar o delegate? não seria mais prático chamar a própria função!?
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!
@@vitorarchanjovasconcelosch1444 mas um método estático por si só já não podw fazer isso?
@@pedrocardoso185 Né, pd sim.
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
@@pedrocardoso185 acho que eu pra poder adicionar mais de um ;-; achei essa aula meio merda. Só deixou mais dúvidas 😭
Bacana !!! -- vwl.
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...
e se eu usar o delegate com argumento params ?
funciona do mesmo jeito
outra coisa é que dá pra declarar assim: d1=mult (sem o new Op(mult))... ou seja:
Op d1 = Mat.soma;
d1(10,50);
visto
Professor, no Linux tenho que instalar o tempo de execução do .NET Core, ou somente o .NET Core?
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
CHAGUD • eu consegui usar, no linux é mais fácil do q pensei
baixe os dois, são bem uteis
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);
}
}
}
Mano, aula boa. so corrige ai. não é delegaDE é delegaTE que fala...rs... deu mó aflição aqui
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.
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;
}
}
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
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));
}
}
}
mais uma novidade pra mim, só não entendi a utilidade disso na vida real do programador rs
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