ASP.NET 3.5 em VB.NET e C#
Copyright©2008, Fernando Amaral. Todos os direitos reservados. Este documento é
protegidos por direitos autorais e outros direitos de propriedade intelectual;
Este documento é de distribuição gratuita para uso pessoal. É veda
da
qualquer outra
forma de utilização, divulgação, publicação, distribuição
etc
.
sem
autorização do autor.
Sobre o Autor
Fernando Amaral trabalha a mais de 10 anos com o desenvolvimento de software. É
certificado Microsoft
MCP
, MCAD, MCSD, MCDBA e MCT, Comptia CDIA+,
Project Managment Institute PMP. É Pós Graduado em Gestão de Sistemas de
Informação pela Uniderp e em Melhoria de Processo de Software pela UFLA.
Além
disso
tudo é Ateu. Atualmente reside em Campo Grande MS.
Sobre www.fernandoamaral.com.br
Eu mantenho um site com alguns artigos e tutoriais de tecnologia no endereço
www.fernandoamaral.com.br
. Através do site existe um formulário onde posso ser
contatado.
Sobre ASP.NET 3.5 em VB.NET e C#
Exis
te muito conteúdo para quem quer aprender ASP.NET. Existem centenas de bons
livros. Porém este curso em formato digital traz algumas características que
talvez
você
não encontre em nenhum lugar:
É completo no sentido que abrange todos os principais temas relacionados ao
ASP.NET 3.5;
Segue uma seqüência lógica. Você não precisará ficar garimpando informações
em lugares diferentes;
É em português.
Porque não um Livro?
Est
e curso foi criado dentro de minhas possibilidades, de maneira que não precisei
assu
mir nenhum compromisso
.
ASP.NET 3.5 em VB.NET e C#
1. Introdução ao
ASP.NET
7
2. Vis
ual Studio 200
8
: O ambiente e as linguagens
13
3. Web Forms
31
4. Controle
33
5. Master Page
44
6. Themes e Skins
53
7. Navigation
59
8. WebParts
71
10 LINQ
116
11. MemberShip e Roles
119
12 .Manutenção de Estado
153
13 . ASP.NET AJAX
167
14. Criando e Consumindo WebServices
179
15. Criando uma página de erros personalizada
188
16. Eventos da aplicação
191
17. Distribuindo sua Aplicação
193
18. Relatórios com Crystal Report
202
6
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
1. Introdução ao
ASP.NET
Desenvolver aplicações nunca foi tão fácil. Ambientes
RA
D cada vez mais modernos e
amigáveis tem tornado o trabalho dos arquitetos de software cada vez mais
simples
.
Com o v
ersão
3.5
do ASP.NET, conseguiu-
se
atingir
níveis de produtividade nunca
antes imaginados.
Este curso tem por objetivo introduzir o desenvolvedor no mundo do desenvolvimento
de aplicações Web utilizando o ASP.NET
3.5.
Não é um curso introdutório de
lógi
ca de
programação.
Os exemplos ao longo do curso serão todos demonstrados em VB.NET e C#.
Blocos de código serão precedidos pelo ícone da linguagem utilizada:
para código em VB
para código em C#
O que é o Microsoft .NET FrameWork?
Tradicionalmen
te
o
desenvolvedor escreve Software para um sistema Operacional ou
dispositivo especifico. Por exemplo, ao criar um programa no Delphi 7 ou no Visual
Basic 6
,
ele esta criado um Software para rodar em S
istemas
Operacionais Windows
sobre a plataforma Intel.
Ao desenvolver um software para o .NET, o desenvolvedor ao invés disto esta fazendo
um software para rodar em qualquer dispositivo ou plataforma que tenha o .NET
Framework instalado.
Existem dezenas de linguagem que podem ser usadas para criar um programa .NET, a
Microsoft desenvolveu o VB.NET, uma versão Orientada a Objetos do clássico VB e o
C#, que herdou sua sintaxe do C++. Outras empresas desenvolveram outras: COBOL,
Delphi, Fortran etc. só para citar algumas. Você mesmo pode criar sua própria
ling
uagem
. A escolha entre uma linguagem ou outra é apenas uma questão de sintaxe.
7
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
Isto é possível porque um programa escrito para .NET é compilado em uma linguagem
intermediaria chamada MSIL (Microsoft Intermediate Language). Não importa qual
linguagem
em
qu
e você
codificou
, o resultado, em termos de performance, qualidade,
tamanho dos binários etc. será o mesmo. O arquivo compilado em MSIL normalmente
resulta um uma DLL, denominada assembly.
Quando o programa for executado pela primeira vez, entre em cena o JIT (Just In Time
Compiler), que vai fazer uma nova compilação do programa, desta vez de acordo com
as especificações do sistema operacional e do dispositivo em que o .NET Framework se
encontra.
Desenvolver um sistema para o plataforma .NET, traz mais alugmas vantagens além de
das ficaram óbvias nesta introdução. A mais importante é que o seu programa vai rodar
em um ambiente protegido e especifico, sem ter que se preocupar com as especificações
ou problemas do sistema operacinal. Toda a interação com
es
te
, como por exemplo, o
gerencimento de memória, é feita pel
o
.NET.
ASP.NET
1.X
Nos ultimos anos surgiram fantásticas IDEs para desenvolvimento de aplicações
Windows. Algumas permitiam que você abrisse uma tabela qualquer, permitindo ainda
a sua edição, sem sequer escrever uma linha de código. Outras através de assistentes
automatizavam tarefas poupando tempo e
muitas
dores de cabeça. Surgiram ainda
diversas ferramentas que prometiam a criação de aplicativos inteiros sem a necessidade
de escreve
r uma linh
a de código qualquer.
Porem
não podemos dizer o mesmo
para
as
aplicações Web.
Além
algumas frustadas
tentativas, não existiu nenhum ambiente de alta produtividade como existiam para
aplicações convencionais. As linguagens, principalmente o ASP classico, semelhante ao
Visual Basic, era limitada é sem os recusos de linguagens OO.
Ao planejar o .NET, a Microsoft vislumbrou um ambiente para aplicações Web onde se
pudesse desenvolver aplicações no mesmo ambiente e com as mesmas facilidades de
aplicações conve
ncionais, utilizando a mesma linguagem.
8
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
Promessa cumprida: O .NET 1.x junto com o Visual Studio 2002 / 2003 proporcionou
um ambiente para aplicações WEB, totalmente integrado, com as facilidades só antes
vistas em ambientes de aplicações convencionais: WYSIWYG, Drag and Drop,
Intellisense
, recursos de depuração avançados etc. Já era
possivel
exibir uma tabela
numa aplicação WEB com duas linhas de código, e sem escrever uma Tag HTML
sequer!
ASP.NET 2.0
Não há duvidas que a plataforma .NET
1.
x e o ASP.NET
1.
x mudaram a maneira como
as aplições Web são desenvolvidas. Porém a equipe de desenvolvimento da plataforma
percebeu que muito ainda poderia ser feito, principalmente no que diz respeito a
produtividade, e esse foi o objetivo principal da equipe de durante seu
desenvolvimento. Como resultado, houve uma melhora de produtividade em até 70% !
Vejamos algumas das melhorias do ASP.NET 2.0 em relação ao
seu antecessor:
Mais de 50 novos Server Controls
Novas ferramentas adiminstrativas
Nova IDE do Visual Studio 2005
Site Navigation: Controles que facilitam a navegação em Web Sites
Master Pages: Agora é possível utilizar herança visual em aplicações Web,
o que
na versão 1.
x
só era possivel com aplicações Windows Forms.
Themes: Tornam mais facil o gerenciamento do visual de sua aplicação
Acesso a Dados: O ADO.NET embora extramente eficiente, era
demasiadamente complexo. O Acesso a dados foi reformulado e si
mplificado.
Snippets: Partes de códigos especificas que podem ser armazenadas para
utilização futura.
O ASP.NET foi o primeiro ambiente que permitiu que se desenvolv
essem
aplicações convencionais ou para
Web em uma mesma IDE, utilizando a
mesma
linguagem
.
Normalmente você não precisa ser um profundo conhecedor de HTML para
desenvover uma aplicação Web no VS 2005. Porém um conhecimento básico
é recomandado: sempre
há necessidade de algum ajuste manual.
9
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
ASP.NET 3.5
As mudanças do ASP.NET 2.0 e 3.5 foram poucas, porém significativas. Na verdade o
core engine das duas versões continua o mesmo. Para projetos em ASP.NET 3.5 o
ASP.NET AJAX Extensions passou a estar integrado a IDE do Visual Studio, não é
mais necessário baixar e instalar separadamente. É encontrado no assemblie
System.Web.Extensions.dll
.
Outra grande novidade, já há bastante esperada é o L
INQ.
A
Gap
que existe entre dados
relacionais e objetos já não é um assunto novo, já recebendo inclusive artigos meus. Já
postei também alguns artigos técnicos sobre LLBLGen e NHibernate. Agora o .NET
avança nesse sentido com o LINQ. O LINQ não é nenhuma novidade, porém agora é
integrado ao Visual Studio. A idéia do LINQ também não é nova, com esta tecnologia
você pode operar o banco de dados em uma linguagem nativa, como se tivesse gerando
código VB.NET ou C#. É encontrado nos assemblies System.Core.dll,
S
ystem.Data.Linq.dll, System.Xml.Linq.dll e System.Data.DataSetExtensions.dll.
Também há controles novos. Além dos controles Ajax Extensions que na versão
anterior deviam ser instalados separadamente, existem mais três novos controles:
ListView, DataPager e LinqDataSource. O Listview é um controle de exibição de dados
tabulares, semelhante ao Datagrid e GridView, porém com novas funcionalidades e
maior controle sobre o resultado produzido. DataPager é um controle que prove
paginação de dados ao Listview. Li
nqDataSource é mais um controle de acesso a dados,
como ObjectDataSource e o SQLDataSource, porém utilizando o modelo LINQ descrito
em sessão anterior.
Estrutura de uma aplicação ASP.NET 2.0
e 3.5
Nesta sessão apresento algumas considerações sobre o estr
utura de aplicações ASP.NET
2.0 e 3.5, que como dito em seção anterior, permaneceram inalterados.
Você já percebeu que muita coisa mudou entre o ASP.NET 1.x e seu predecessor. Uma
das grandes propagandas no lançamento da primeira versão do ASP.NET era o m
odelo
code
-behind, onde apresentação e código de servidor ficam armazenados em arquivos
10
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
fisicamente separados, tornando o código mais limpo e intuitivo tanto para o designer
quanto para o programador. Trabalhar com tudo em um único arquivo até era possíve
l,
porém
desvantajoso
.
No ASP.NET 3.5, embora o padrão seja um arquivo único, pode-se facilmente optar em
trabalhar com arquivos separados, basta desmarcar a opção place code in separated file
na caixa de dialogo de criação de um novo
W
eb
F
orm:
Este
novo modelo é denominado code-inline. Se você optar por trabalhar com este
modelo, seu código de servidor vai estar separado entre tags
Script.
O grande problema
na versão 1.x era que trabalhando com um único arquivo perdíamos alguns recursos
poderosos de programação, como o
Intellisense
. Na versão 2.0 e 3.5 não há qualquer
problema: tudo que funciona
no modelo code
-
behind funciona também no code
-
inline
.
Post
-
Back entre páginas
Até o.NET 1.
x
um con
trole só poderia causar um post
back para a própria págin
a. Agora
esta limitação acabou, através da propriedade PostBackUrl, presente no botão de
comando e similares,
que
permite que seja executa um postback para outra pagina A
sp.
Este novo recurso é conhecido como
Cross
-
Page Posting.
11
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
Agora é possível inclusive ler valores de controles ou propriedades de páginas que
deram origem ao postback. Esta fantástica inovação surgida no ASP.NET 2.0 permite
tornar o código mais limpo, mas otimizado, além de reduzir a necessidade de utilização
de variáveis de sessão, querys
tring e outros.
Pastas
A partir da
versão 2.0 o ASP.NET uma aplicação Web deixou de ser orientada a projeto
e passou a ser orientada a arquivos. Em conseqüência foram definidas uma série de
pastas com funções especificas, vamos ver as principais:
App_Co
de: Para armazenamento de classes
App_data: Armazena fontes de dados
App_Themes: Armazena um tema. Estudaremos temas mais adiante.
App_LocalResources: Armazena arquivos de recursos
Arquivos
Nesta sessão vamos ver os principais tipos de arquivos que uma aplicação ASP.NET
pode conter:
Web.config: è um arquivo contendo as configurações da aplicação, formatado
com XML.
.aspx: arquivo contendo a apresentação de uma página.
.vb ou .cs: arquivo com código de servidor relacionado a uma página
Global.aspx: Arquivo contendo os eventos globais da aplicação.
.master: Arquivo contendo uma MasterPage.
.ascx: Arquivo contendo um WebUserControl
.css: Arquivo css
.resx: Arquivo de recursos
.sitemap: Arquivo contendo um mapa do site
.skin: Arquivo contendo um skin
12
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
2. Vis
ual Studio 200
8
: O ambiente e as linguagens
Nesta seção vamos ver os principais compontentes da IDE do VS 200
8.
A esquerda, por padrão oculta, existe a Barra de Ferramentas, onde ficam agrupados por
categoria os compontes padrão do VS ou de terceiros instalados no ambiente. Para
instalar um novo componente, basta clicar com o botão direito sobre a barra e selecionar
Choose Itens. Você pode também personalizar a sua barra de ferramentas da maneira
que achar melhor.
A direita temos o Solution Explorer, que permite uma navegação rápida entre os
arquivos de um projeto ou solução.
Abaixo, a janela de propriedades, permite configurar as propriedades de um controle ou
de um formulário, bem como acessar eventos.
Entre as principais novidades do ambiente temos as notificações de status da linha
através de cores: Uma nova linha de código ou código alterado é marcado como
amarelo. Se a linha já foi salva sua cor muda para verde.
13
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
Outra novidade são os Snippets: pedaços de código pré fabricados para executar um
a
tarefa especifica. Tudo bem que isso não é uma grande novidade e já
foi
utilizada em
outras IDEs por aí a fora, mas com certeza o recurso esta melhor do que nunca e poderá
lhe ajudar a poupar bastante trabalho. Para inserir um Snippet basta chama-lo no m
enu
rápido sobre a área de código. Obviamente que você também poderá criar seus proprios
snippets.
SINTAXE:
VISUAL BASIC .NET
e C#
Vamos introduzir os principais aspectos d a sintaxe de programação
do
VB.NET
e do
C#
. Este não será um estudo completo ou abrangente, para tal procure bibliografia
específica.
Comentários
No C# comentário de linha são feitos com duas barras. Comentários em bloco são
aberto com
\
* e fechados com *
\.
No VB.NET Comentários são inseridos com aspas simples no inicio da linha. O
VB.NET não permite o comentário de blocos de código, a solução é comentar linha a
linha. Porém o Visual Studio possui em sua barra de ferramentas padrão o comando
Comment out the selected lines que comenta um bloco de código selecionado e
Uncomment the selected lines que remove os comentários, a utilização é simples e
intuitiva, e funcina em ambas as linguagens
este é um comentário válido
Dim i as Integer
esta também é um co
mentário válido
//este é um comentário válido
int
x = 3;
/* este também é
um comentário válido */
Lembre
-
se sempre que o C# diferencia entre caracteres maisculos e
minusculos, o VB.NET não.
Você já deve ter encontrado discussões ardentes na internet sobre C# ser
melhor que VB.NET e vice
-
versa.
A verdade que conhecendo os
fundamentos da plataforma sabemos que o resultado é exatamente igual.
14
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
No Visual Studio 200
8 também é possível documentas seu código sem a necessidade de
inst
alar qualquer plug-in, basta adcionar três aspas (vb.net) ou tres barras (C#) antes do
procedimento. O VS automaticamente preenche o esqueleto do documento. Observe o
exemplo abaixo:
'''
<summary>
''' Função para somar dois números
'''
</summary>
''' <p
aram name="x">
Primeiro número a somar
</param>
'''
<param name="y">
Segundo número a somar
</param>
'''
<returns>
Resultado da soma
</returns>
'''
<remarks>By Fulano
</remarks>
Public Function Somar(ByVal x As Integer, ByVal y As Integer) _
As Integer
Dim z
As Integer
z = x + y
Return
z
End Function
///
<summary>
///
Função para somar dois números
///
</summary>
///
<param name="x">
Primeiro número a somar
</param>
///
<param name="y">
Segundo número a somar
</param>
///
<returns>
Resultado da soma
</returns>
int
Somar(
int
x,
int
y)
{
int z;
z = x + y;
return z;
}
O VS ainda pode gerar um diagrama de sua classe, basta clicar com o botão direito
sobre o arquivo, e selecionar View Class Diagram
Tipos de Dados
Sendo o .NET um framework, não existem tipos de dados desta ou daquela linguagem.
Os tipos são todos do .NET. Obviamente que existem diferenças de sintaxe na
declaraç
ão e manipulação destas variaveis. Abaixo segue uma relação dos principais
tipos de dados, para uma relação completa consulte a d
ocumentação do VS 200
8:
Você ainda pode criar comentários no VB.NET utilizando Rem.
15
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
Boolean
Verdadeiro ou falso
Char
-
caractere unicode de 16 bit
String
-
String
Byte
inteiro de 8 bit, sem sinal
UInt16
-
inteiro de 16 bit, sem sinal
UInt32
-
inteiro de 32 bit, sem sinal
UInt64
-
inteiro de 64 bit, sem sinal
Int16
inteiro de 16 bit, com sinal
Int32
-
inteiro de 32 bit, com sinal
Int64
-
inteiro de 64 bit, com sinal
SByte
- -
inteiro de 8 bit, com sinal
DateTime
data e hora
Decimal
número decimal
Double
número de ponto flutuante com 64 bit
Single
-
número de ponto flutuante com 32 bit
Operadores
VB.NET
C#
And
&
Or
|
XOr
^
Not
!
Is Nothing
== null
<>
!=
& +
\ /
\=
/=
Mod
%
=
==
Um valor nulo em VB.NET é representado por NOTHING, em C# por null.
O tipo Int32 pode ser representado no VB.NET por Integer e
int no C#.
16
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
Variaveis
e Constantes
No VB.NET para declarar uma variável usamos a palavra DIM, seguido pelo nome da
variável e tipo:
Dim i as Integer
A sintaxe do C# é semelhante ao do C++:
int z;
Podemos ainda de
clara
diversas
variaveis de um mesmo tipo numa unica declaração:
Dim i,j,k as Integer
int
x, y, z;
Ou ainda variaveis de diferentes tipos:
Dim i,m as Integer, j,k as Single
int
i
,
m
; Double
j,k;
Obviamente i e m serão do tipo inteiro, e
j e K do tipo single.
É possíve
l ainda incializar a variável na
sua declaração:
int
z = 1;
Para declarar uma constante utilizamos a declaração Const
:
Dim i as Integer = 1
Const x as integer = 1
17
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
Enumeradores
Para declara
r um enumerador usamos a declaração Enum
Você opcionalmente pode inicializar cada menbro, se você não o fizer, o primeiro
menbro será inicializado com zero e assim sucessimvamente.
Coleções
Poderíamos dedicar um longo capítulo ao estudo de coleção, sendo nosso objetivo fazer
uma introdução a p
arte de
sintaxe, veremos apenas arrays:
const
int
x = 1;
Public Enum Semana
Domingo
Segunda
Terça
Quarta
Quinta
Sexta
Sabado
End Enum
enum
Semana
{ Domingo, Segunda, Terça, Quarta, Quinta, Sexta, Sabado
};
Enum
Semana
Domingo = 1
Segunda = 2
Terça = 3
Quarta = 4
Quinta = 5
Sexta = 6
Sabado = 7
End Enum
enum
Semana
{ Domingo = 1, Segunda =2, Terça =3, Quarta =4, Quinta =5,
Sexta =6, Sabado =7 };
Dim
MeuArray(1)
As
String
MeuArray(0) =
"Um"
MeuArray(1) =
"Dois"
18
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
Ao contrário do legado VB, um array possui sempre índice iniciado em zero, portanto
um array declarado com (1), terá duas posições.
Estruturas de decisão
O classico
if
não poderia faltar. A sintaxe é semelhante as suas linguagens legadas:
Obviamente que a intrução
else
é opcional.
Outra forma de controle de fluxo conhecid
o é o Select
(VB.NET)
ou Switch (C#):
string
[] MeuArray =
new
string
[1];
arr[0] =
"Um"
;
arr[1] =
"Dois"
;
Dim Nome As String =
"ASP.NET"
If
Nome =
"VB.NET"
Then
MessageBox.Show(
"Certo!"
)
Else
MessageBox.Show(
"Errado!"
)
End If
string
Nome =
"ASP.NET"
;
if
(Nome ==
"C#"
)
{
MessageBox
.Show(
"Certo!"
);
}
else
{
MessageBox
.Show(
"Errado!"
);
}
Dim Nome As String =
"VB.NET"
Select Case Nome
Case
"VB.NET"
MessageBox.Show(
"Certo!"
)
Case
"C#"
MessageBox.Show(
"Errado!"
)
Case Else
MessageBox.Show(
"?"
)
End Select
string
Nome = "C#"
;
19
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
Note que no C# devemos usar a palavra
break
para quebrar o fluxo
Laços
Vamos estudar tr
ês estrutu
ras de laços: For,
while e laços em coleções.
O laço for tem a sintaxe semelhante em qualquer linguagem:
Dim i As Integer
For
i = 1
To
10
MessageBox.Show(
CStr
(i
))
Next i
for
(
int
i = 0; i < 10; i++)
MessageBox
.Show(Convert
.ToString(i));
A sintaxe do C# nos permite facilmente fazer um loop regressivo, basta alterarmos o
último argumento de i++ para i
,
e obviamente mudarmos a condição:
for
(
int
i = 0; i < 10; i++)
MessageBox
.Show(Convert
.ToString(i));
No VB.NET podemos conseguir o mesmo ef
eito utilizando a palavra chave
Step
:
Dim i As Integer = 0
For
i = 10
To
1
Step
-1
MessageBox.Show(
CStr(i))
Next i
Existem laços
While
com teste de condição no inicio da sentença ou no final, neste
último o laço executa sempre uma primeira vez, indep
endente do resultado da avaliação.
Vamos ver exemplos do primeiro caso:
switch
(Nome){
case "VB.NET"
:
MessageBox.Show(
"Certo!");
break;
case "C#"
:
MessageBox.Show(
"Errado!");
break;
default:
MessageBox.Show(
"?");
break;
}
20
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
Dim i As Integer = 0
Do
While
i < 5
MessageBox.Show(
CStr(i))
i += 1
Loop
int
i = 0;
while
(i<5) {
MessageBox
.Show(Convert
.ToString(i));
i += 1;
}
Finalmente, o que pode ser novidade para quem ainda não conhece a
plataforma
.
NET
são os laços em coleções, que permitem percorrer um a um os membros de uma coleção
qualquer.
Dim
numbers() = {4, 5, 6, 1, 2, 3,
-
2,
-
1, 0}
Dim i As Integer
For
Each
i
In
numbers
MessageBox.Show(Convert.ToString(i))
Next
int
[] numbers = { 4, 5, 6, 1, 2, 3,
-
2,
-
1, 0 };
foreach
(
int
i in
numbers)
{
MessageBox
.Show(Convert
.ToString(i));
}
Neste exemplo a titulo de simplicidade nossa coleção é um array, porém a estrutura
funciona da mesma forma para qualquer tipo de coleção.
Convertendo valores
Para a conversão entre tipos de dados utilize a classe
convert
, seguida do método
apropriado ao tipo que ser converter:
Dim i As Integer, s As String
s = Convert.ToString(i)
int
i;
string s;
s =
Convert
.ToString(i);
21
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
Procedimentos e funções
Em VB.NET uma função começa com a palavra reservada function e termina com o
tipo do dado de retorno. Já no C# inicia com o tipo do dado de retorno:
Function Somar( x A
s Integer, y As Integer) _
As Integer
Dim z As Integer
z = x + y
Return
z
End Function
int
Somar(
int
x,
int
y)
{
int z;
z = x + y;
return z;
}
O retorno é inidicado pela palavra
-
chave return ou pelo próprio nome da função.
Um procedimento que não retorna valor em VB.NET inicia com a palavra chave Sub, e
em C# com v
oid:
Sub Somar( x As Integer, y As Integer) _
As Integer
Dim z As Integer
z = x + y
End Function
void
Somar(
int
x,
int
y)
{
int z;
z = x + y;
}
Visibilidade ou Scopo
A pass
agem de parametros por padrão
ocorre
por valor. Para indicar um
parametro a ser passado por referencia, utilize ByRef no VB.BET e ref no
C#.
22
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
A visibilidade de um procedimento, classe, inferface etc. é definada através das palavra
s
reservadas a seguir:
Public / public: acessível de qualquer lugar do projeto ou de instancias da classe
Private / private: Acessível apenas dentro do mesmo contexto;
Friend / internal: Acessivel apenas dentro do projeto;
Protected / protected: Acessivel
apenas dentro da classe ou de uma classe derivada;
Protected Friend / Protected Internal: Acessivel apenas dentro da classe derivada ou do
mesmo projeto;
Tratamento de exceções
O tratamento de exceções será surpresa apenas para quem esta começando agora a
conhecer o VB.NET, que com o lançamento do linguagem ganhou uma forma
estruturada de tratamento de erro semelhante as demais linguagens OO. È o adeus ao
On error go to
.
O tratamento de e
rro é formando por uma estrutura
Try Catch Finally.
Entre o
Try
e o
Catch
deve ser colocado o código que você quer proteger de uma exceção. Entre
Catch
e
Finnally
o código a ser executado no caso de ocorrer uma exceção, e finalmente após
Finnally
algum
código que você queira que obrigatóriamente seja executado, ocorrendo
ou não uma exceção, geralmente usado para liberar algum recurso alocado
.
Vale
lembrar que você pode usar apenas parte da funcionalidade do bloco, por exemplo, se
você que apenas tratar uma exceção, pode contruir um bloco contendo apenas os
comando
try catch.
Por outro lado se você quer apenas garantir que um recurso seja
liberado, como uma conexão com o banco de dados pro exemplo, você pode fazer us
o
apenas do
bloco
try finally
.
Out
ra caracteristica importante é que as classes de exceção são executadas da mais
especifica para a menos especifica, isto permite um tratamento de erros mais robusto e
eficaz. Normalmente você deve terminar seu tratamento com a classe
Exception,
que é
menos
específica e que da origem a todas as demais.
Ao declarar algo sem a visibilidade, por padrão será private.
23
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
Try
My
.Computer.FileSystem.CopyFile(
"Aspnet.pdf"
,
"Aspnet.bkp"
)
Catch
ex As
System.IO.IOException
MessageBox.Show
("Ocorreu um erro na cópia do arquivo")
Catch
ex2 As
Exception
MessageBox.Show("Ocorreu um
Erro desconhecido")
End Try
try
{
string s = null;
}
catch
(
ArgumentNullException
s)
{
MessageBox.Show(
"Ocorreu um erro na string"
);
}
catch
(
Exception
r)
{
MessageBox.Show(
"Ocorreu um Erro desconhecido"
);
}
With
O with, que não tem equivalente no C#, permite omitir o nome de um objeto quando o
mesmo é utilizado em diversas linhas.
With
GridView1
.Caption =
"GridView"
.EditIndex = 0
.Enabled =
False
End With
Orientação a Objetos
Vamos também apresentar alguns aspectos da sintaxe da criação de classes no VB.NET
e no C#.
Porém antes é preciso conhecer o conceito de NameSpaces.
NameSpaces é uma estrutura simples, porém muito eficiente de organizar seu código.
Por exemplo, uma suposta empresa GoodSoftware pode definir que todas suas classes
terão como NameSpace raiz GoodSoftware. Abaixo deste existirão os NameSpaces
ERP, CRM e Global. O NameSpace ERP abrigaria as classes de seus novo
sistema
ERP, o CRM idem, e o Global classes que para serem utilizadas em ambos os projetos.
Dentro de cada um destes NameSpaces é possível criar n outros. Outra importante
24
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
vantagem do seu uso é redução de problemas com conflitos com nomes repetidos de
classes ou métodos.
Abaixo vemos a declaração básica de uma classe de Nome Class1, dentro de um
NameSpace
Nam
espace
GoodSoftware
Public Class ERP
'
End Class
End Namespace
namespace
GoodSoftware
{
public class
ERP
{
//
}
}
Um construtor de uma classe em VB.NET se define com a palavra chave New,
já em
C#
deve ter no mome
da classe
Public Sub New()
End Sub
public
Class1 ()
{
//
}
Obviamente que você pode criar um construtor com passagem de parametros.
Já as propriedades
são ba
stante singular em cada linguagem:
Você não é obrigado a criar uma classe dentro de um NameSpace.
Não é preciso existir relaçã
o entre nomes de classes e namespaces com o
nome fisico do arquivo. Você pode inclusive colocar diversas classes ou
namespaces dentro de um mesmo arquivo.
25
ASP.NET 3.5 em VB.NET e C#
Copyright©2008,
Fernando Amaral. Todos os direitos reservados. Este documento é protegidos por direitos autorais e
outros direitos de propriedade intelectual
.
www
.
fernandoamaral.com.br
Public Property Nome() As String
Get
Return Pnome
End Get
Set(ByVal value As String)
Pnome = value
End Set
End Property
public
String
Nome
{
get
{ return
Pnome; }
set
{ Pnome =
value
; }
}
Caso você deseje criar um método que por algum motivo não precise ou não deva ter
sua classe instanciada, basta você acrescentar a palavra chave shared no VB.NET ou
static no C#, sempre após a declaração de visibilidade do método
:
Public Shared Function Somar(ByVal x As Integer, ByVal y As Integer) _
As Integer
Dim z As Integer
z = x + y
Return z
End Function
public static int Somar(int x, int y)
{
in
t z;
z = x + y;
return z;
}
A herança de uma classe é definida pela palavra chave inherits em VB.NET e em C#
através da notação : classe pai
Public Class Class2
Inherits
Class1
End Class
Uma propridade pode ser apenas leitura ou apenas escrita.
Além de inicar
estas caracteris
tica na declaração da propriedade, você deverá omitir as
sentenças get e set, respectivamente.
Lembre
-
se que um método definido com shared / static, não pode usar
qualquer recurso da classe, como por exemplo uma variavel privada ou
mesmo, uma propriedade ou um outro método.