Professional Documents
Culture Documents
C# 4.0
Por Fabiano Belmonte
O Visual Studio 2010 e .NET Framework 4,0 em breve estará em fase beta, e
existem alguns novos recursos excelentes que todos nós podemos esperar
animados com este novo lançamento. Juntamente com o Visual Studio 2010 e do.
NET Framework 4,0 veremos a versão 4.0 da linguagem de programação C #.
Neste artigo eu gostaria de olhar um pouco a trás de onde começou a linguagem de
programação C # e olhar para onde Anders Hejlsberg do C # e sua equipe querem
chegar.
A versão 2.0 da linguagem evoluiu de mais, particularmente acho que e umas das
maiores evoluções em tão pouco tempo de uma linguagem e passou a dar suporte
aos genéricos, métodos anônimos, iterators, tipos parciais e tipos anuláveis.
Chega de papo e vamos olhar para algum exemplos em C # 4.0 utilizando essas
inovações língua ...
Em C # Hoje você pode ter, o seguinte código que é uma instância de uma classe
escrita estaticamente . NET então chama o método Add em que a classe para obter
a soma de dois inteiros:
Nosso código fica ainda mais interessante se a classe Calculadora não é escrita
estaticamente, mas está escrito em COM, Ruby, Python, ou mesmo JavaScript.
Mesmo se soubéssemos que a classe é uma calculadora. objeto NET, mas não
sabemos qual o tipo específico que é, então, teria de utilizar reflection para
descobrir atributos e o tipo em tempo de execução e, em seguida, dinamicamente
invocar o método Add.
No exemplo acima declaramos uma variável calc, cujo tipo estático é dinâmico.
Sim, você leu corretamente que nós escrevemos estaticamente nosso objeto a ser
dinâmico. Teremos então dinâmico usando método invocação para chamar o
método Add e em seguida, dinâmico conversão para converter o resultado da
dinâmica de uma invocação digitado estaticamente inteiro.
Você está ainda encorajado a usar tipagem estática sempre que possível, porque os
benefícios que oferecem línguas escrita estaticamente nós. Usando C # 4,0 no
entanto, deve ser menos doloroso nessas ocasiões em que você tem de interagir
com objetos dinamicamente digitado.
Outro grande benefício do uso de C # 4.0 é que a linguagem suporta agora
facultativa e parâmetros nomeados e por isso vamos agora dar uma olhada em
como esta característica irá mudar a maneira de conceber e escrever o seu código.
Um desenho padrão você ver como muitas vezes que um determinado método está
sobrecarregado, porque o método deve ser chamado com um número variável de
parâmetros.
Vamos assumir que temos o seguinte método OpenTextFile juntamente com três
sobrecargas do método com diferentes assinaturas. Sobrecargas do método
primário em seguida chame o método primário de passar os valores padrão no
lugar desses parâmetros para os quais um valor não foi especificado na chamada
para o método sobrecarregado.
No C # 4.0 O método primário pode ser refactored para usar parâmetros opcionais
como mostra o seguinte exemplo:
OpenTextFile("foo.txt", Encoding.UTF8);
Também é possível usar o C # 4,0 suporte para parâmetros nomeados e, como tal,
o método pode ser chamado OpenTextFile omitindo um ou mais dos parâmetros
opcionais, enquanto especificando também outro parâmetro pelo nome.
O nome dos argumentos deve ser fornecido somente estância última embora desde
quando eles podem ser fornecidas em qualquer ordem.
Se você alguma vez escrito qualquer código que executa um certo grau de
interoperabilidade COM você provavelmente visto como o código seguinte.
doc.SaveAs("foo.txt");
Ao realizar a interoperabilidade COM você perceber que você é capaz de omitir a ref
modifer embora o uso do modificador ref ainda é necessário quando não exerçam
COM interoperabilidade.
Desde versão 1.0 em um array o. NET Framework foi co-variante significando que
uma matriz de strings, por exemplo, pode ser passada para um método que espera
um array de objetos. Como tal, a matriz acima pode ser transmitida para o
seguinte Escreve método que espera um array de objetos.
Infelizmente, em matrizes. NET não são co-seguro variante como podemos ver na
seguinte código. Partindo do pressuposto de que os objetos variável é uma matriz
de strings da seguinte terá êxito.
Embora se uma tentativa é feita para atribuir um inteiro à matriz de strings uma
ArrayTypeMismatchException é jogado.
objects[0] = 1024;
Em ambos os C # 2.0 e C # 3,0 invariantes são genéricos e, portanto, um erro
compilador iria resultar o seguinte código:
{
IEnumerator<T> GetEnumerator();
}
public interface IEnumerator<out T>
{
T Current { get; }
bool MoveNext();
}
Dado que IComparer <in T> é segura contra-variante podemos agora escrever o seguinte código:
Embora o actual build CTP do Visual Studio 2010 e do. NET Framework 4,0 tem
suporte limitado para a variância melhorias em C # 4,0 a próxima versão beta
permite que você use o novo para dentro e para fora contextuais tais como
palavras-chave em tipos IComparer <in T>. O. NET Framework equipa está a
atualizar os tipos, no âmbito de ser co-seguro e contra-variante.
Eu mostrei aqui alguns recursos que você pode achar útil para explorar as
capacidades da linguagem de programação C # 4,0 e gostaria de encorajá-lo a
também fazer download e instalar a versão beta.
Bons Códigos...