Arquivo da categoria ‘C#’


Para inserir uma imagem como background de um asp.net linkbutton é muito simples

No seu arquivo .css ou na própria página é só colocar a instrução abaixo

.Fundolink
{
background-image:url(‘images/logo.png’);
}

É isso…

Grande abraço

@pmoraesjr


Existem três diferenças importantes quando utilizamos o operador as:

1 – O operador as retorna null quando o objeto que você esta tentando converter não é do tipo solicitado, já o cast lança uma exceção.

2 –  O operador as só pode ser utilizado para converter objetos de referencia para objetos de referencia.

3 – O operador as também não permite conversões definidas pelo usuário como conversões implícitas e explicitas, que o cast permite.

Existe de fato duas operações completamente diferentes definidas no IL que gerencia essas duas situações.
Não são apenas “perfumarias de código” escritas em C#.

O operador as é ligeiramente mais rápido nas versões 1.0 e 1.1 do Microsoft CLR comparado ao cast, mesmo em casos onde há conversões invalidas que diminuem severamente a performance devido as exceções.

É isso…

Grande abraço

@pmoraesjr


A resposta é não

Todas declarações constantes já são estáticas implicitamente, e na especificação da linguagem não permite redundância do “static
Com isso evitamos confusão de alguém ver um código com  static const teste 

Grande abraço…

@pmoraesjr


Tudo isso é relacionado com polimorfismo.
Quando um método virtual é chamado em uma referência, o objeto referenciado decide qual método sera implementado.

Quando um metodo de uma classe base é sobrecarregado (overridden) em uma classe “filha” a versão da classe derivada é utilizada, mesmo que o codigo de chamada “não sabe” que o objeto era uma instancia da classse derivada:

Por exemplo:

No exemplo acima os dois resultados são “classe filha” ou seja existe apenas uma referencia apontando para a ClasseDerivada

Agora vejam o exemplo abaixo

O resultado é “classe base” e “classe filha” ou seja com o operador new o método não foi reescrito, fazendo com que tenhamos duas referencias, uma para ClasseBase e a outra para ClasseDerivada.

Espero ter ajudado..

Grande abraço

@pmoraesjr


Nenhuma diferença, o C# define vários alias (apelidos) para os tipos CLR. Eles podem ser utilizados de formas alternadas ou até mesmo juntos em uma mesma expressão.

Abaixo os apelidos definidos…

Alias CLR type
string System.String
sbyte System.SByte
byte System.Byte
short System.Int16
ushort System.UInt16
int System.Int32
uint System.UInt32
long System.Int64
ulong System.UInt64
char System.Char
float System.Single
double System.Double
bool System.Boolean
decimal System.Decimal

Abraços

@pmoraesjr


Usamos o @ antes de uma string para representar a forma literal do texto por exemplo @“c:/Arquivos de Programas” se não utilizar o @ você “c://Arquivos de Programas”

O @ faz com que não se aplique nenhuma interpretação de caracteres na frase utilizada.

É isso…

Grande abraço

@pmoraesjr


O “group by” permite agrupar os resultados com base em um valor especificado. Por exemplo listar todos os alunos agrupados por cidade. Ele cria grupos baseados na chave informada.

Para este exemplo irei utilizar a mesma classe do post anterior

imagem1

Agora vou criar uma lista genérica e preencher com dados fictícios.Imagem2

Criei a consulta abaixo: E nela atribui todos os alunos agrupados por Cidade.
Então neste caso abaixo nossa chave é a propriedade Cidade.

Imagem1

Então quando você terminar uma consulta com um group, seus resultados assumem a forma de uma lista de listas. Cada elemento na lista é um objeto que tem uma propriedade Key e uma lista de elementos que estão agrupadas sob esta chave (Cidade). Quando você itera através de uma consulta que produz uma seqüência de grupos, você deve usar um aninhadas foreach loop. O loop externo itera em cada grupo, e o loop interno itera sobre membros do grupo.

Agora vou varrer os itens, na lGrupos eu tenho todos os alunos, agora vou percorrer ela criando um subgrupo chamado gruposAlunos que está separado pela chave Cidade.

Vou exibir as chaves em uma MessageBox(Obs. desenvolvi esse exemplo em Windows Forms).

E no foreach interno eu separei os grupos em objetos da classe Alunos.

Imagem2

Percebam que o primeiro grupo exibido foi do de Ribeirão Preto, isto acontece pq o primeiro aluno da adicionado na lista genérica é de Ribeirão Preto.

Se você deve consultar os resultados de uma operação de grupo, você pode usar a palavra-chave para criar um identificador que pode ser consultado ainda mais. Neste caso só agrupo quando existe mais de 2 alunos na cidade.

Imagem3

 

O exemplo a seguir mostra o padrão para ordenar os dados de origem em grupos quando nenhuma lógica de consulta adicional é aplicada aos grupos.

Isso é chamado um agrupamento sem uma continuação. Os elementos em uma matriz de sequências são agrupados de acordo com sua primeira letra. O resultado da consulta é um IGrouping(Of TKey, TElement) que contém um dados do tipo Key propriedade do tipo char e um IEnumerable(Of T) coleção que contém a cada item no agrupamento.

O resultado de uma group cláusula é uma sequência de sequências. Portanto, para acessar os elementos individuais dentro de cada grupo retornado, use um foreach aninhado dentro do loop que itera as chaves de grupo, conforme mostrado no exemplo a seguir.

Imagem4

Agora iremos fazer uso de uma lógica condicional para isso utilizaremos uma continuação para nosso agrupamento com a clausula into.

O exemplo a seguir agrupara os alunos pela primeira letra da Cidade, porem somente os alunos cujo nome da cidade inicie com ‘B’ (Batatais) ou ‘R’ (Ribeirão Preto)

Imagem5

É isso pessoal, espero ter ajudado com este grande recurso do linq

Um grande abraço.

@pmoraesjr


Este post oferece uma breve introdução as consultas LINQ.

Em uma consulta de LINQ, a primeira etapa é especificar a origem de dados.

Em C# como na maioria das linguagens de programação uma variável deve ser declarada antes que ele possa ser usado.

Em uma consulta de LINQ , a cláusula from vem primeiro na ordem para apresentar os dados de origem (nosso vetor numeros) e o intervalo variável (n).

Abaixo uma consulta simples de todos os números do vetor.

Imagem 1

Ao final a instrução foi convertida para um Array para o resultados ser atribuído no vetor int[] todosNumeros.

Provavelmente a operação de consulta mais comum são os filtros. O filtro faz com que a consulta retornar apenas os elementos para os quais a expressão for verdadeira.
O resultado é produzido usando a cláusula where.
O filtro no efeito especifica quais elementos podem excluir a sequência de origem.
No exemplo a seguir, somente números iguais a três são retornados.

Imagem2

Nos filtros podemos utilizar também os operadores “E” e “OU” utilizando assim muitas outras expressões.

Por exemplo, para retornar apenas os números entre 3 e 10. Você deve escrever o código a seguir:

Imagem3

É isso ai, ficamos por aqui por hoje.

No próximo post irei escrever sobre orderby e agrupamentos

Grande abraço

@pmoraesjr


O nome parece um pouco fora do comum, mas apenas reflete o comportamento da linguagem quando esta lida com a definição de vários tratamentos para o mesmo identificador, que, neste caso, é o símbolo do operador.

Portanto, sobrecarga de operador é a definição de novas tarefas para o mesmo operador.

Digamos que temos uma classe chamada Coordenada e nela temos duas propriedades X e Y

Imagem1  

Se eu tivesse dois objetos e quisesse somar essas coordenadas em um terceiro ficaria desta forma.

Imagem2

Agora na minha classe Coordenada eu criei um método que retorna um objeto da classe Coordenada e que sobrecarrega o operador +

Imagem3

Observação importante: Todo método que sobrecarga um operador deve ser estático

Agora que criei esta sobrecarga posso simplesmente somar os dois objetos da minha classe Coordenada da mesma forma que somaria duas variáveis.

Imagem4

Grande abraço.

@pmoraesjr


LINQ (consulta integrada à linguagem) é um conjunto de recursos introduzidos no Visual Studio 2008 que amplia os recursos de consulta poderosa para a sintaxe da linguagem de C# e Visual Basic.

LINQ apresenta um padrão que pode ser aprendido facilmente para consultar e atualizar dados, e a tecnologia pode ser estendida para oferecer suporte a potencialmente qualquer tipo de armazenamento de dados.

Visual Studio inclui LINQ os “assemblies” que permitem o uso de LINQ com coleções do .Net Framework, bancos de dados de SQL Server e todos os documentos XML.

O Linq foi apresentado na versão 3.5 do .Net Framework e também com o lançamento do Visual Studio 2008 e ele preenche a lacuna entre o mundo dos objetos e o mundo dos dados.

Tradicionalmente, consulta a dados são expressas como simples strings sem verificação do compilador em runtime ou até mesmo suporte do IntelliSense. Além disso você tinha que aprender uma linguagem de consulta diferente para cada fonte de dados diferente (Sql Server, arquivos Xml e etc.).

Com o Linq você faz uma consulta utilizando o C# ou VB.NET em coleções de objetos fortemente tipados utilizando linguagens e operadores familiares. A imagem abaixo mostra uma consulta Linq parcialmente concluída em um banco de dados SQL Server com uma verificação completa de tipos e suporte do IntelliSense

Exemplo linq

No Visual Studio você pode escrever consultas LINQ em Visual Basic ou C# com Banco de Dados SQL, documentos XML, datasets e qualquer coleção de objetos que ofereça suporte as interfaces IEnumerable ou a genérica IEnumerableT. Também tem  suporte ao Entity Framework, além de outros provedores LINQ que estão sendo escritos por terceiros para vários Web Services e outras implementações de banco de dados.

Você pode usar consultas LINQ em novos projetos, ou juntamente com consultas não-LINQ em projetos existentes. O único requisito é que o destino do projeto .NET Framework 3.5 ou posterior.

Grande Abraço….

@pmoraesjr