May 2008 - Posts
Para quem quiser se orientar melhor no tratamento refinado de exceções ou simplesmente compreender quais são os erros que ocorrem na aplicação, segue alguns links úteis:
Hierarquia das Exceções: http://msdn.microsoft.com/pt-br/library/z4c5tckx.aspx
Tipos de Exceções: http://msdn.microsoft.com/pt-br/library/9ztbc5s1.aspx
Review: http://msdn.microsoft.com/en-us/library/ms229007(VS.80).aspx
Espero que ajude :)

Este é o cara:

Ray Ozzie, Arquiteto chefe da Microsoft des de 2006, ocupando o lugar que antes era de Bill Gates!
Ele declarou um fim do PC (lógico que a imprensa exagerou um pouco né, como sempre fazem!).
Ele reconheceu que a era do PC acabou e deu lugar à era da web.
A declaração foi feita num memorando interno da empresa. Ozzie diz que para os indivíduos o conceito de “meu computador” será substituído por dispositivos variados (telefones, TVs, consoles de games, carros) concatenados e administrados através da web. “A web é o hub”, afirma.
Para a Microsoft, que vem migrando lentamente do mundo do software para o dos serviços web, é uma guinada e tanto. Ozzie reconheceu também a ascensão da computação de nuvem, muito ligada ao Google, às redes sociais e aos sites da web 2.0 em geral.
No memorando, ele afirma que as empresas estão numa fase de transição, indo de servidores de aplicação dedicados e às vezes muito caros para o uso da virtualização e do hardware commoditizado. É utility computing, agora com as bênçãos da Microsoft.
...Esperem um pouco e respondam: O que ele e a Microsoft tem feito a respeito!?
Percepitivelmente temos a linha Live, más Ozzie esta de cabeça mesmo no projeto Live Mesh!
Referências:
http://info.abril.com.br/blog/internetbuzz/20080423_listar.shtml
https://www.mesh.com/Welcome/Welcome.aspx
Abraços
Dae pessoal, peguei aqui um gráfico da Tiobe Software (uma organização de standards de codificação).
Esta empresa divulga em seu site um ranking das linguagens mais usadas por programadores do mundo todo. E ainda faz um comparativo com o ranking de 12 meses atrás.
Gráfico de Maio/2008:

Java e C continuam sendo as campeãs de popularidade no mundo das linguagens de programação.
Na lista do mês de março, as duas primeiras colocadas continuam sendo Java e C, com taxa de utilização de 20,6% e 15,5%, respecticamente. O Visual Basic ganhou duas posições em comparação com março de 2007. Trocou de lugar com o C++, agora na quinta posição. PHP ficou em quarto, com taxa de utilização de 10,1%.
As quatro primeiras linguagens estão com tudo. São escolhidas por nada menos que 56,93% dos programadores. Entre as top 10 ainda aparecem: Perl (6ª), Python (7ª), C# (8ª), Delphi (9ª) e Ruby (10ª).
O gráfico que você vê aí em cima acaba de ser divulgado pela empresa.
Pode ser uma boa fonte de consulta para quem está definindo em qual linguagem investir na carreira profissional ou dentro na empresa.
... Más cuidado, as linguagens do momento podem não serem as do futuro promissor ;)
E no meio de tudo isso eu achei muito estranha a pequena participação do C#. E não é porque eu adoro a linguagem e programo muito com ela... é simplesmente pelo fato do C# ser o carro chefe da tecnologia .NET!
Fontes:
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
http://info.abril.com.br/blog/silvia/20080303_listar.shtml
Abraços
Pois é, A famosa Instituição Bancária Bradesco vai de ASP.NET, SQL Server e IIS. O Problema foi o jeito que descobri isto:

Será que algum programador foi demitido!? =X
Fonte: http://weblogs.pontonetpt.com/galante/posts/27485.aspx
O CERN (Conselho Europeu para a Pesquisa Nuclear), como já citei antes, é um grande ninho de tecnologias, que chegarão em um futuro próximo.
Então aqueles geeks mais antenados devem ficar atentos há algumas revoluções que o pessoal do CERN propõe.
Eles agora planejam construir fissuras no tempo (exageradamente comparadas a portais de tempo) e "mini buracos negro".
Para tal façanha eles tem projetos como Internet2 (http://www.baboo.com.br/absolutenm/templates/content.asp?articleid=12767&zoneid=4&resumo=), uma outra rede de computadores que prometem velocidades de transmissão de dados que promete uma velocidade 10 mil vezes superior a atual Internet (http://sharpcode.com.br/blogs/spoky/archive/2008/05/14/off-topic-internet-10-mil-vezes-mais-r-225-pida.aspx) e o Large Hadron Collider (LHC, ou Grande Colisor de Hádrons: http://idgnow.uol.com.br/mercado/2007/06/04/idgnoticia.2007-06-01.6665970862/).
Fiquem com fotos do LHC:




Este topic foi para esfriar a cabeça... t+
Referências:
http://lhc.web.cern.ch/lhc/
http://www.baboo.com.br/absolutenm/templates/content.asp?articleid=12767&zoneid=4&resumo=
http://idgnow.uol.com.br/mercado/2007/06/04/idgnoticia.2007-06-01.6665970862/
Repassando a dica então...
Já me perguntaram duas vezes como fazer para atribuir um valor para um TextBox que esteja configurado para passwords.
Por uma questão de segurança, os campos de passwords no ASP.NET não recebem valor algum, mesmo se fizermos algo como:
txtSenha.Text = "Senha123";
Para formulários de login isto faz sentido! Para outras realidades não!
Para estas outras realidades procedemos assim:
txtSenha.Attributes.Add("value", "Senha123");
... Ou seja, atribuindo um valor, pelo próprio atributo HTML!
Testando isto, podemos reparar que, o campo de password vem preenchido com os caracteres típicos de campos desta natureza.
Referência: http://www.bufaloinfo.com.br/dicas.asp?cod=606
Espero que tenham gostado... abraços!
Pessoal, um resumão rápido para que vocês vejam o incrível poder da formatação correta de strings... isto irá abrir a amente de vocês... façam bom uso!
Obs: Eu traduzi parcialmente, para evitar de perder a essência técnica da linguagem.
Strings
Alinhamento
| Exemplo |
Resultado |
| String.Format(”->{1,10}<-”, “Hello”); |
-> Hello<- |
| String.Format(”->{1,-10}<-”, “Hello”); |
->Hello <- |
Números
| Especificador |
Tipo |
Format |
Output (Passed Double 1.42) |
Output (Passed Int -12400) |
| c |
Currency |
{0:c} |
$1.42 |
-$12,400 |
| d |
Decimal (Whole number) |
{0:d} |
System.FormatException |
-12400 |
| e |
Scientific |
{0:e} |
1.420000e+000 |
-1.240000e+004 |
| f |
Fixed point |
{0:f} |
1.42 |
-12400.00 |
| g |
General |
{0:g} |
1.42 |
-12400 |
| n |
Number with commas for thousands |
{0:n} |
1.42 |
-12,400 |
| r |
Round trippable |
{0:r} |
1.42 |
System.FormatException |
| x |
Hexadecimal |
{0:x4} |
System.FormatException |
cf90 |
Customizando:
| Specifier |
Type |
Example |
Output (Passed Double 1500.42) |
Note |
| 0 |
Zero placeholder |
{0:00.0000} |
1500.4200 |
Pads with zeroes. |
| # |
Digit placeholder |
{0:(#).##} |
(1500).42 |
|
| . |
Decimal point |
{0:0.0} |
1500.4 |
|
| , |
Thousand separator |
{0:0,0} |
1,500 |
Must be between two zeroes. |
| ,. |
Number scaling |
{0:0,.} |
2 |
Comma adjacent to Period scales by 1000. |
| % |
Percent |
{0:0%} |
150042% |
Multiplies by 100, adds % sign. |
| e |
Exponent placeholder |
{0:00e+0} |
15e+2 |
Many exponent formats available. |
| ; |
Group separator |
|
|
|
Datas
Variam de acordo com a regionalidade do Windows.
| Specifier |
Type |
Example (Passed System.DateTime.Now) |
| d |
Short date |
10/12/2002 |
| D |
Long date |
December 10, 2002 |
| t |
Short time |
10:11 PM |
| T |
Long time |
10:11:29 PM |
| f |
Full date & time |
December 10, 2002 10:11 PM |
| F |
Full date & time (long) |
December 10, 2002 10:11:29 PM |
| g |
Default date & time |
10/12/2002 10:11 PM |
| G |
Default date & time (long) |
10/12/2002 10:11:29 PM |
| M |
Month day pattern |
December 10 |
| r |
RFC1123 date string |
Tue, 10 Dec 2002 22:11:29 GMT |
| s |
Sortable date string |
2002-12-10T22:11:29 |
| u |
Universal sortable, local time |
2002-12-10 22:13:50Z |
| U |
Universal sortable, GMT |
December 11, 2002 3:13:50 AM |
| Y |
Year month pattern |
December, 2002 |
Datas Customizadas:
| Specifier |
Type |
Example |
Example Output |
| dd |
Day |
{0:dd} |
10 |
| ddd |
Day name |
{0:ddd} |
Tue |
| dddd |
Full day name |
{0:dddd} |
Tuesday |
| f, ff, … |
Second fractions |
{0:fff} |
932 |
| gg, … |
Era |
{0:gg} |
A.D. |
| hh |
2 digit hour |
{0:hh} |
10 |
| HH |
2 digit hour, 24hr format |
{0:HH} |
22 |
| mm |
Minute 00-59 |
{0:mm} |
38 |
| MM |
Month 01-12 |
{0:MM} |
12 |
| MMM |
Month abbreviation |
{0:MMM} |
Dec |
| MMMM |
Full month name |
{0:MMMM} |
December |
| ss |
Seconds 00-59 |
{0:ss} |
46 |
| tt |
AM or PM |
{0:tt} |
PM |
| yy |
Year, 2 digits |
{0:yy} |
02 |
| yyyy |
Year |
{0:yyyy} |
2002 |
| zz |
Timezone offset, 2 digits |
{0:zz} |
-05 |
| zzz |
Full timezone offset |
{0:zzz} |
-05:00 |
| : |
Separator |
{0:hh:mm:ss} |
10:43:20 |
| / |
Separator |
{0:dd/MM/yyyy} |
10/12/2002 |
Enumerations
| Specifier |
Type |
| g |
Default (Flag names if available, otherwise decimal) |
| f |
Flags always |
| d |
Integer always |
| x |
Eight digit hex. |
Alguns exemplo mais...
String.Format(”{0:$#,##0.00;($#,##0.00);Zero}”, value);
This will output “$1,240.00″ if passed 1243.50. It will output the same format but in parentheses if the number is negative, and will output the string “Zero” if the number is zero.
String.Format(”{0:(###) ###-####}”, 8005551212);
This will output “(800) 555-1212″.
Referência: http://blog.stevex.net/index.php/string-formatting-in-csharp/
Parece um off topic não é!
Estava visitando o blog do Ramon Durães (Consultor/Amigo) e comecei a olhar com outros olhos este gadget.
Este aparelho vem equipado com Windows Mobile e .NET Compact Framework, ou seja, abre uma gama de exploração para nós, programadores .NET.
Na verdade fiquem atento aos smartphones da HTC, pois grande parte dos grandes lançamentos deles vem com win mobile :D
Tive a oportunidade de explorar um smartphone deles recentemente e ele é incrivel, rápido, dinâmico e bonito!
E posso falar com segurança disto, pois já trabalhei em uma empresa (www.vsell.com.br) que trabalha unica e exclusivamente com desenvolvimento de sistemas para pocket pc e smatphones!!!
Estou louco poara desenvolver para este mobile xD
Confiram mais alguns detalhes...
"Depois da febre do iPhone que estabeleceu um novo padrão para o mercado de dispositivos chega ao mercado um grande concorrente da HTC baseado em Windows Mobile. O HTC Touch Diamond chegou em grande estilo e em um ótimo momento no mercado com a chegada do 3G no Brasil estaremos cada vez mais conectados e nada melhor que um dispositivo baseado em Windows Mobile para que você possa desenvolver suas aplicações usando o Visual Studio 2008 e .NET Compact Framework 3.5. O grande potencial da plataforma .NET é justamente aproveitar seu conhecimento existe da plataforma .NET e explorar os mais diversos cenários de negócios. Com a possibilidade de construção de aplicações comerciais 100% conectadas usando a rede 3G você explorar ao Maximo desse novo mercado de negócios no Brasil!"
- GPS
- 3G
- WIFI
- GPRS
Para saber mais sobre esse grande lançamento da HTC:
http://www.digitaldrops.com.br/drops/2008/05/htc_touch_diamond_um_celular_3.html (Bom review)
http://www.engadget.com/2008/05/06/htc-touch-diamond-all-gussied-up-and-official/
http://info.abril.com.br/blog/gadgets/20080506_listar.shtml?84326
Para saber mais sobre Windows Mobile:
http://www.microsoft.com/windowsmobile/default.mspx
Explorem, abram a mente ^^
abraços e sucesso!!!
Após a finalização do desenvolvimento de um app (sto não é utópico, abordarei sobre Application Lifecycle Management em outro post), ou a finalização de um ciclo de desenvolvimento, a aplicação tem de ser distribuída.
A distribuição pode ser feita de várias maneira como web, installer ou ClickOnce (farei um post específico sobre isto).
Quando se prepara um build da sua aplicação, devemos nos atentar em alguns detalhes para distribuir uma aplicação winforms...
Debug ou Release:

Release! Por que!? Simples, o Release é uma compilação totalmente otimizada e não contêm nenhuma informação dos símbolos para debug. Isto torna o software mais leve e muito mais rápido.
O Debug por sua vez é uma versão da aplicação que é compilada com a informação completa dos símbolos para debug e não é realizada nenhuma otimização. A otimização dificulta o debug, já que a relação entre o código fonte e as instruções geradas são mais complexas. Por não ter a otimização o programa se torna mais lento.
Vale nos atentar que ambas as distribuições ficam em suas respectivas pastas dentro do diretório Bin do projeto principal.
Arquivos:
Como abordado em outro post: http://sharpcode.com.br/blogs/spoky/archive/2008/05/14/vshost-exe-pdb-o-que-ocorre-com-minha-aplica-231-227-o.aspx
... ou seja, nada de arquivos "pdb" ou "vshost".
Base de dados e Infra:
É importante preparar uma estrutura do banco de dados e/ou script de alterações caso necessário.
No post:
http://sharpcode.com.br/blogs/spoky/archive/2008/05/15/dicas-de-desenvolvimento-e-distribui-231-227-o-de-apps.aspx
... falei do gerenciador gráfico do Sql Server, darei algumas dicas em um post específico sobre detalhes do banco de dados.
... E mais a frente veremos um detalhe sobre a string de conexão com a base de dados.
Sobre a infra estrutura, no caso de um app .NET temos de ter o .NET Framework instalado onde a aplicação for rodar, no link já citado pode ser efetuado o download!
Controle de Versão:
Isto vai muito da política de cada empresa.
O controle de versão é importante em muitos aspéctos, como: distribuição, teste, reutilização, controle de mudanças; controle de clientes... diria que é fundamental!
O Visual Studio propões atravéz do AssemblyInfo.cs uma política de Copyright e controle de versão:
<Assembly: AssemblyVersion("1.0.2.1")>
baseada em:
<Versão Maior>.<Versão Menor>.<Número do Build>.<Revisão>
... sendo:
- Versão Maior: o primeiro dígito do AssemblyVersion, no exemplo acima 1
- Versão Menor: o segundo dígito do AssemblyVersion, no exemplo acima 0
- Número do Build: Número de dias a partir de uma data inicial randômica. Este valor é incrementado por dia.
- Revisão: Baseado no número de segundos desde a meia-noite.
Uma vez explciado técnicamente o controle de versão, explciarei concentualmente em uam próxima oportunidade, talvez quando falar de ALM!
Arquivos de Configuração (.config):
Cuidado com os arquivos de config pois eles contém informações (como a string de conexão à base de dados) que são únicas em cada cliente/caso.
Se você deu manutenção nela precisa se antenar e analisar o que precisa ser re-configurado no cliente também, caso houver necessidade. Ex:
Houve a adição de mais um atributo de configuração, logo deverá ser adicionado este atributo no cliente com um valor default!
... Ou Houve uma reformulação no sistema de configuração da app, então terá que substituir o arquivo e reconfigurar coisas como a conexão à base de dados.
Referências:
http://www.romarconsultoria.com.br/artigos/Artigo2/artigo2.htm
Espero que tenham gostado :)
Qualquer dúvida...e-mail!
Abraços...
Usuários poderão sugerir traduções para os serviços do Windows Live no Brasil.
Mais para frente abordarei o desenvolvimento de aplicações multi-idiomas...
Enquanto isto todos temos consciência desta importante prática em um mondo globalizado e conecatdo!
Eu particularmente acho sofrível e deprimente a situações de softwares traduzidos para o português
...quando posso dou preferência aos softwares em inglês.
Inclusive, para se ter idéia da importância disto, recursos como o reconhecimento de voz do Windows e Service Packs est]ão disponíveis somente em inglês, no caso dos SPs, depois de alguns meses após o lançamento eles ficam disponíveis.
Pois bem, acho que um passo importante no quesito qualidade das traduções foi dado pela equipe do Windows Live.
A Microsoft anunciou nesta terça-feira (13/05) a criação do Fórum de Terminologia de Windows Live, que pretende envolver os usuários dos produtos na escolha das traduções e termos utilizados na interface dos produtos da marca.
A partir deste espaço, os internautas decidirão se os termos que a Microsoft vem utilizando fazem sentido, além de sugerir terminologias mais adequadas e intuitivas, enviar comentários e votar em traduções já existentes. O fórum já está aberto e funcionará até o dia 16 de maio deste ano.
Para participar: http://members.microsoft.com/wincg/pt-br/mtcf_home.aspx?s=1&langid=1219
Portanto, participem =)
Asimo, o “robô cool” desenvolvido pela Honda, conseguiu conduzir a Orquestra Filarmônica de Detrit na última terça-feira. Ele é o primeiro autômato do mundo a conseguir tal proeza.

Mais info em: http://www.techguru.com.br/Robo-desenvolvido-pela-Honda-dirige-concerto-orquestra-sinfonica.htm
..a moral disto tudo!? Façam um deste com a SDK Robotics da MS ^^
http://sharpcode.com.br/blogs/spoky/archive/2008/04/14/robotics-studio-sdk.aspx
...e daí, quem toda o desafio!?
Vale lembrar algumas coisinhas quando se desenvolve uma palicação com .NET
O Visual Studio 2005/2008 tem um pacote de ícones e figuras para desenvolvimento de sistemas, deve ficar em um diretório semelhante ao:
C:\Program Files\Microsoft Visual Studio 9.0\Common7\VS2008ImageLibrary\1033\VS2008ImageLibrary.zip
Se for usar o SQL Server, existe o gerênciador gráfico dele, o SQL Server Management Studio:
Download em (41.3 MB): http://go.microsoft.com/fwlink/?LinkId=65110
Download do SQL Server 2005 Express (36.5 MB): http://go.microsoft.com/fwlink/?LinkId=65212
E quando for instalar a Release (Falarei mais sobre distribuição de aplicações em outro post.) do seu app no cliente, não se esqueça do .Net Framework:
Download da 2.0: http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&displaylang=en
Download da 3.5: http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&displaylang=en
Obs: .NET framework é a plataforma de aplicações gerenciadas e distribuíveis da microsoft. Rudemente falando é uma "Máquina Virtual".
Sinceramente, fica meio confuso esta concepção na minha cabeça, pois os computadores “xing-ling” dos meros mortais, no meu ponto de vista, mal conseguiria processar tamanho fluxo de informação... o que acabaria gerando gargalos... más O CERN (Conseil Européen pour la Recherche Nucléaire) diz que nossa internet pode se tornar obsoleta!
E pensar que o Ipv6 nem emplacou direito ainda o.O
Cientistas já construíram um substituto capaz de fazer o download de um filme inteiro em segundos. A velocidade será cerca de 10 mil vezes maior do que uma conexão de banda larga típica, o "grid" (grade, em inglês), será capaz de enviar todo o catálogo dos Rolling Stones da Inglaterra para o Japão em menos de dois segundos.
Criada pelo Cern, a rede também poderia fornecer o tipo de energia necessária para transmitir imagens holográficas; permitir jogos online com centenas de milhares de jogadores e oferecer telefonia com vídeo de alta definição pelo preço de uma chamada local.
David Britton, professor de física na Universidade de Glasgow e um líder do projeto, considera que as tecnologias do grid poderiam "revolucionar" a sociedade. "Com este tipo de poder de computação, as gerações futuras terão a capacidade de se comunicar e colaborar de formas que pessoas idosas como eu não podem sequer imaginar".
O poder da rede aparecerá após o verão Europeu, que os cientistas do Cern vêm chamando do "dia do botão vermelho" – quando será ligado o Large Hadron Collider (LHC), o novo acelerador de partículas construído para sondar a origem do universo. O "grid" será ativado ao mesmo tempo, para capturar os dados que serão gerados.
O "grid" foi construído com cabos de fibra ótica dedicados e modernos centros de roteamento. Os 55 mil servidores já instalados devem aumentar para 200 mil dentro dos próximos dois anos.
Coisa de doido não!? ...más vamos ser geeks sonhadores ^^
Mais uma coisa, falando do CERN, eu recomendo o Livro Fortaleza digital e Anjos e demônios do Dan Brown, pois ele fala bastante sobre tecnologia nestes livros.
Até mais pessoal...
Fonte:
http://www.cern.ch/
http://www.babooforum.com.br/forum/index.php?showtopic=632506
Hoje um amigo me pediu algo para ordenar um List<> de acordo com a propriedade desejada de uma Lista de objetos, seja de qual Tipo for!
Basta utilizar a interface IComparer meu amigo... veja como fica:
(A classe de exemplo: Aluno.cs)
using System;
namespace Ordenacao
{
class Aluno
{
public int Codigo { get; set; }
public string Nome { get; set; }
public decimal Nota { get; set; }
}
}
(Enun de Ascendente/Descendente)
namespace Ordenacao
{
enum OrdemOrdenacao
{
Ascendente,
Descendente
}
}
(Core: Ordenacao.cs)
using System;
using System.Collections.Generic;
using System.Reflection;
namespace Ordenacao
{
class Ordenacao<T> : IComparer<T>
{
public string PropriedadeOrdenadora { get; set; }
public OrdemOrdenacao Ordem { get; set; }
public Ordenacao(OrdemOrdenacao ordem, string propriedadeOrdenadora)
{
Ordem = ordem;
PropriedadeOrdenadora = propriedadeOrdenadora;
}
public int Compare(T x, T y)
{
PropertyInfo propriedade = typeof(T).GetProperty(PropriedadeOrdenadora);
IComparable objX = (IComparable)propriedade.GetValue(x, null);
IComparable objY = (IComparable)propriedade.GetValue(y, null);
if (Ordem == OrdemOrdenacao.Ascendente)
return (objX.CompareTo(objY));
else
return (objY.CompareTo(objX));
}
}
}
(Método main do console aplication)
using System;
using System.Collections.Generic;
using System.Text;
namespace Ordenacao
{
class Program
{
static void Main(string[] args)
{
List<Aluno> alunos = new List<Aluno>();
alunos.Add(new Aluno() { Codigo = 50, Nome = "Astoufo ", Nota = 40.5M });
alunos.Add(new Aluno() { Codigo = 2, Nome = "Uésley ", Nota = 63M });
alunos.Add(new Aluno() { Codigo = 23, Nome = "Cleosvaldo", Nota = 72.5M });
alunos.Add(new Aluno() { Codigo = 1, Nome = "Perilson ", Nota = 20M });
alunos.Add(new Aluno() { Codigo = 500, Nome = "Uilson ", Nota = 63M });
EscreverLista(alunos, "Sem Ordem");
// -> Código
alunos.Sort(new Ordenacao<Aluno>(OrdemOrdenacao.Ascendente, "Codigo"));
EscreverLista(alunos, "Codigo");
// -> Nome
alunos.Sort(new Ordenacao<Aluno>(OrdemOrdenacao.Ascendente, "Nome"));
EscreverLista(alunos, "Nome");
// -> Nota
alunos.Sort(new Ordenacao<Aluno>(OrdemOrdenacao.Ascendente, "Nota"));
EscreverLista(alunos, "Nota");
Console.ReadKey();
}
static void EscreverLista(List<Aluno> alunos, string cabecalho)
{
Console.WriteLine(cabecalho);
Console.WriteLine("--------------------------------");
Console.WriteLine("Código\tNome \tNota");
Console.WriteLine("--------------------------------");
foreach (Aluno aluno in alunos)
Console.WriteLine(string.Format("{0}\t{1}\t{2:f}", aluno.Codigo, aluno.Nome, aluno.Nota));
Console.WriteLine("--------------------------------\n");
}
}
}
(Resultado)

Download do Exemplo!
...é isto daí pessoal, dúvidas... mandem-me e-mai! espero ter ajudado e até a próxima ;D
Mais posts
Próxima página »