No C# 3.0 e .NET 3.5 tem uma grande novidade quando queremos declarar um método, trata-se do métodos de extensão (extension methods).
Quando se usa o this (na declaração do primeiro parametro do método), nâo se passa a variável no paramentro mais sim declara antes: variável.método();
Abaixo um exemplo simples de um código:
Using Saudacao;
public class Programa
{
public class MetotoQualquer()
{
String Nome = “Túlio”;
Nome.Ola();
Console.Write(nome);
}
}
namespace Saudacao
{
public static class Saudacao
{
public static string Ola(this nome)
{
return String.Format(”Olá {0}”, nome);
}
}
}
Quando você dê o Using no namespace Saudacao você terá o método Ola() disponivel para todos os Objetos String do escopo.
Uma caracterÃstica muito importante dos métodos de extensão é que eles podem ser adicionados a tipos base. A classe object, por exemplo, pode ser estendida para ter um método qualquer e consequentemente ele estará disponÃvel para todas as outras classes do framework e da aplicação.
Em certas situações e muito útlil fazer uma váriavel aceitar o tipo Null.
No C# para uma variável aceitar Null basta adicionar “?” após a definição da tipagem da variável.
Exemplos:
string? Nome = null;
Nome = “Túlio”;
int? valor = null;
if (valor == null)
{
valor = 1;
}