Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


linguagem C#, Notas de estudo de Informática

linguagem de programação em C sharp

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 28/05/2009

jaime-coan-9
jaime-coan-9 🇧🇷

4.7

(10)

6 documentos

1 / 105

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Página 1
C# Guia de
Referência
Autor:
Fabio Renato de Almeida
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Pré-visualização parcial do texto

Baixe linguagem C# e outras Notas de estudo em PDF para Informática, somente na Docsity!

C# Guia de

Referência

Autor:

Fabio Renato de Almeida

Curso C# 1.0 e 2.

(Guia de Referência do Aluno)

Instrutor: Fábio Renato de Almeida

[email protected]

Introdução a Plataforma .net e ao C# - Aula 01

  • Funções virtuais ( polimorfismo ).  Case-sensitive.  Definição clara de tipos valor e tipos referência.
  • Tipos valor: Stack (Pilha).
  • Tipos referência: Heap (Área gerenciada).
  • Tipos valor que são declarados como um campo em um tipo referência, neste caso, também são armazenados no heap, junto com seu container ( boxed values ).
  • Dados fortemente tipados ( type-safe ). ♦ Não existe VARIANT... não confunda Object com Variant... mesmo um Object, contém a especificação do tipo real da instância... e seus métodos polimórficos serão devidamente invocados. 6. .net Framework - Características.

 CTS ( Common Type System ).

  • Int16 , Int32 , Int64 , Single , Double , ... todas as linguagems que tenham como alvo o .net, devem produzir código compilado baseado nesses tipos. ♦ VB.net: Dim valor As Integer => valor ( Int32 ). ♦ C#: int valor; => valor ( Int32 ). ♦ Delphi: var valor: Integer; => valor ( Int32 ).  CLS ( Common Language Specification ).
  • Conjunto de regras que todos os compiladores que tenham como alvo a plataforma .net devem implementar. ♦ System.Int32 é CLS. ♦ System.UInt16 (0...65535) não é CLS. ♦ Diferenciação entre maiúsculas e minúsculas não é CLS. 7. .net Framework - Características.

 FCL ( Framework Class Library ): Extensa biblioteca de classes, organizada por espaço de nome ( forma de agrupar classes relacionadas, ainda que em assemblies diferentes ). Bom design.

  • Win 3.x, 95, 98, Me, 2000, XP, 2003: API.
  • Plataforma .net: FCL.
  • Longhorn: FCL. 8. .net Framework - Características.

 IL ( Intermediate Language ).

  • C#, Delphi for .net, VB.net... apenas a maneira como se escreve... o resultado final é compilado para IL.
  • Linguagem de baixo nível , com sintaxe simples , baseada em números ao invés de texto , que pode ser traduzida rapidamente para código nativo.
  • A linguagem que o .net reconhece.
  • Todos os compiladores para .net produzem código IL.
  • Independência de... ♦ Plataforma. ⇒ Windows (Microsoft .net Framework). ⇒ Linux, Mac OS X, Solaris, Windows, Unix (Mono). ♦ Linguagem. ⇒ C#, VB.net, Delphi for .net, entre outras... (mais de 30). ⇒ Todas geram código IL (Intermediate Language). ⇒ A programação é feita, não para o S.O., mas para a plataforma .net. 9. .net Framework - Características.

 Assembly ( Montagem ).

  • O assembly pode ser um EXE ou uma DLL.
  • Auto-descritivo ( Metadados ). ♦ Contém informações sobre os membros do assembly. ♦ Contém informações sobre ele mesmo ( manifesto ). ♦ Versionamento: Fim do Inferno das DLLs (DLL Hell).

Introdução a Plataforma .net e ao C# - Aula 01

Strong Name. ♦ Toda informaçao possível sobre o assembly está no próprio assembly.

  • Não há entradas no registro do sistema ( GUID ).
  • Privado ou compartilhado ( GAC: Global Assembly Cache ).
  • Reflection (Reflexão)... através dos metadados.
  • Instalação de zero impacto (xcopy). 10. .net Framework - Características.

 Interoperabilidade entre linguagens.

  • Lib1.dll escrita em C#.
  • Lib2.dll escrita em VB.net herdando de Lib1.dll.
  • Lib3.dll escrita em Delphi for .net herdando de Lib2.dll.
  • Lib4.dll escrita em C# herdando de Lib3.dll.
  • O mecanismo de tratamento de exceções também permite que exceções lançadas na Lib2.dll possam ser devidamente capturadas e tratadas na Lib4.dll. 11. .net Framework - Características.

 Interoperabilidade COM.

  • Uma classe .net wrapper é criada para gerenciar objetos COM.
  • A tecnologia COM é considerada ultrapassada.
  • O ideal é escrever as funcionalidades COM em código gerenciável.  Segurança.
  • Possibilidade de executar um assembly sem risco de código malicioso.
  • Um assembly pode conter informações sobre quem ou qual grupo tem permissões para executar determinados métodos no assembly [atributos]. -. net oferece segurança baseada em código. Windows oferece segurança baseada em roles (usuário, grupo, domínio, processo) Ex.: código exe da internet => a segurança baseada em código permite determinarmos que o programa não deve executar determinadas operações, como por exemplo, ler ou gravar variáveis de ambiente , alterar o registro do Windows , etc. 12. .net Framework - Características.

 Acesso eficiente a dados.

  • Sem ODBC.
  • Sem BDE.
  • O mecanismo de acesso é feito através de um Provider. O ADO.net expõe uma interface padrão para todos os providers.
  • A característica principal do provider é que ele se comunica “diretamente” com o banco de dados (exceto OLE DB e ODBC providers).
  • Dados desconectados.  Atributos.
  • Obsolete.
  • Conditional.
  • Flags.
  • Permite a definição de outros atributos. 13. .net Framework - Runtime.

 Compilação ( 2 fases ).

  • Fase 1: Código fonte é transformado em um assembly ( IL ).
  • Fase 2: O compilador JIT ( Just In-Time compiler ) processa os byte codes da IL e transforma em código nativo específico da plataforma ( podendo sofrer otimizações ). O código é compilado conforme solicitação.  Managed Code (Código Gerenciado).
  • CLR ( Common Language Runtime ). ♦ Aplicações .net são executadas pelo CLR. Este ambiente, através da FCL, abstrai todo o sistema operacional.
  • GC ( Garbage Collector ). ♦ Liberação automática de memória.

Introdução a Plataforma .net e ao C# - Aula 01

18. .net Framework - Conclusão.

 Plataforma.

  • Provavelmente o que reinará nos próximos 20 anos.  Linguagem.
  • Escolha C#.  .net Compact Framework.
  • O .net poderá ser portado para. ♦ Pocket PC (já existe). ♦ Celular (já existe). ♦ Enfim... qualquer outro dispositivo, tornando sua aplicação funcional em outros ambientes.  Projeto Mono.
  • .net Framework para outras plataformas (www.go-mono.com).  Reverse Engineer.
  • Obfuscation. 19. .net Framework.

 Dúvidas?

Apresentando C# - Aula 02

1. Apresentando C#.

2. C#

 Nascimento: Dezembro de 1998.  Atributos: Linguagem de programação simples , moderna , type-safe e totalmente orientada a objeto.  type-safe : Em C# é impossível ter problemas devido a variáveis que não foram inicializadas, ou acesso a arrays fora de seus limites ou ainda realizar casts inválidos.  Ambiente: .net Framework.  Versões da linguagem...

  • 1.0 (VS .net 2002 e 2003) – .net Framework 1.0 e 1.1. ♦ Arquitetos responsáveis (Designers)... ⇒ Anders Hejlsberg ⇒ Scott Wiltamuth ⇒ Peter Golde ⇒ Peter Sollich ⇒ Eric Gunnerson
  • 2.0 (VS .net 2005) – .net Framework 2.0. ♦ Arquitetos responsáveis (Designers)... ⇒ Anders Hejlsberg ⇒ Peter Golde ⇒ Peter Hallam ⇒ Shon Katzenberger ⇒ Todd Proebsting ⇒ Anson Horton 3. Keywords...

[ ] abstract [ ] event [ ] new [ ] struct

[ ] as [ ] explicit [ ] null [ ] switch

[ ] base [ ] extern [ ] object [ ] this

[ ] bool [ ] false [ ] operator [ ] throw

[ ] break [ ] finally [ ] out [ ] true

[ ] byte [ ] fixed [ ] override [ ] try

[ ] case [ ] float [ ] params [ ] typeof

[ ] catch [ ] for [ ] private [ ] uint

[ ] char [ ] foreach [ ] protected [ ] ulong

[ ] checked [ ] goto [ ] public [ ] unchecked

[ ] class [ ] if [ ] readonly [ ] unsafe

[ ] const [ ] implicit [ ] ref [ ] ushort

[ ] continue [ ] in [ ] return [] using

[ ] decimal [ ] int [ ] sbyte [ ] virtual

[ ] default [ ] interface [ ] sealed [ ] volatile

[ ] delegate [ ] internal [ ] short [ ] void

[ ] do [ ] is [ ] sizeof [ ] while

[ ] double [ ] lock [ ] stackalloc

[ ] else [ ] long [ ] static

[ ] enum [] namespace [ ] string

4. Hello World...

using System;

Apresentando C# - Aula 02

}

// Fornecedor.cs

using System; using System.Collections.Generic; using System.Text;

namespace SoftFacil.Estok { class Fornecedor { } }

// CompraVenda.cs

using System; using System.Collections.Generic; using System.Text;

namespace SoftFacil.Estok { class Compra { }

class Venda { } }

// DAL.cs

using System; using System.Collections.Generic; using System.Text;

namespace SoftFacil.Estok { class Open { public static void OpenDB(string db) { Console.WriteLine(db + " aberto."); } } }

// Program.cs

using System; using System.Collections.Generic; using System.Text;

namespace SoftFacil.Estok { class Program { static void Main(string[] args) { Console.WriteLine("Estok."); Open.OpenDB("Estok.fdb"); Console.ReadLine();

Apresentando C# - Aula 02

} } }

Nova aplicação console... (Imob.exe)

// Modulos.cs

using System; using System.Collections.Generic; using System.Text;

namespace SoftFacil.Imob { class Imovel { }

class Locador { }

class Locatario { } }

// DAL.cs

using System; using System.Collections.Generic; using System.Text;

namespace SoftFacil.Imob { class Open { public static void OpenDB(string db) { Console.WriteLine(db + " aberto."); } } }

// Program.cs

using System; using System.Collections.Generic; using System.Text;

namespace SoftFacil.Imob { class Program { static void Main(string[] args) { Console.WriteLine("Imob."); Open.OpenDB("Imob.fdb"); Console.ReadLine(); } } }

Criando um assembly (DAL.dll)...

Apresentando C# - Aula 02

  • Reinstala-se App.
  • App1 retorna versão 1.0 de Lib.dll.
  • App1 executa.
  • App2 não executa mais.
  • Instala-se App2 ... App2 executa , mas App1 não.
  • Instala-se App1 ... App1 executa , mas App2 não.
  • Instala-se... enfim... DLL Hell.  Windows 2000/XP...
  • Foi introduzido o recurso de execução lado a lado.
  • Instalação da DLL no diretório da aplicação.
  • LoadLibrary() da Win32 foi re-escrita para acessar primeiramente a pasta local. 9. Assembly...

 Privado.  Compartilhado ( GAC ).  Auto-descritivo (metadados).  Não requer registro no Windows.  Manifesto controla versão e dependências.  Instalação de zero-impacto.

Vamos criar um assembly compartilhado...

10. AssemblyInfo.cs...

using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices;

[assembly: AssemblyTitle("DAL")] [assembly: AssemblyDescription("Lib de acesso SoftFácil")] [assembly: AssemblyConfiguration("Beta 2")] [assembly: AssemblyCompany("SoftFácil")] [assembly: AssemblyProduct("DAL")] [assembly: AssemblyCopyright("Copyright © SoftFácil")] [assembly: AssemblyTrademark("DAL marca registrada")] [assembly: AssemblyCulture("")]

[assembly: ComVisible(false)] [assembly: Guid("77fe6609-b9a2-4600-8ef2-a746cc333c4e")]

[assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyFileVersion("1.0.0.0")]

11. Assembly Compartilhado (shared)...

 Criptografia...

  • Criptografia Simétrica.
  • Criptografia Assimétrica (Assinatura digital de um driver no Windows).
  • sn –k secret.snk
  • secret.snk (chaves private e public ).  DAL.
  • Propriedades do Assembly... Signing.
  • [assembly: AssemblyVersion("1.0.")]*
  • Major : Versão Primária.
  • Minor : Versão Secundária.
  • Build : Número de Construção... Número de dias desde 1º de Janeiro de 2000.
  • Revision : Número de Revisão... Número de segundos desde a meia noite da hora local.
  • Instala-se o assembly no GAC.
  • gacutil /i DAL.dll  Consumindo o assembly.
  • Add Reference (DLL da pasta bin) – Copy Local é configurado como false.

Apresentando C# - Aula 02

  • Aprimorando o assembly mas mantendo a versão principal e secundária.
  • Fazendo uma mudança estrutural de 1.0 para 1.1. 12. Conflito de Nomes...

Novo assembly (LibFile.dll)...

using System; using System.Collections.Generic; using System.Text;

namespace SoftFacil.LibFile { public class Open { public static void OpenFile(string file) { Console.WriteLine("Arquivo {0} aberto.", file); } } }

Utilizando o assembly LibFile.dll em Estok.exe (Add Reference)...

using System; using System.Collections.Generic; using System.Text; using SoftFacil.DataAccessLayer;

namespace SoftFacil.Estok { class Program { static void Main(string[] args) { Console.WriteLine("Estok."); Open.OpenDB("Estok.fdb"); SoftFacil.LibFile.Open.OpenFile("Dados.txt"); Console.ReadLine(); } } }

Apresentando C# - Aula 02

class A // N1.N2.A { }

class B // N1.N2.B { } } }

15. namespace / using (segredos)...

namespace N1.N { class A // N1.N2.A { } }

namespace N1.N { class B // N1.N2.B { } }

ou

namespace N1.N { class A // N1.N2.A { }

class B // N1.N2.B { } }

16. namespace / using (segredos)...

namespace N1.N { class A // N1.N2.A { } }

namespace N { using A = N1.N2.A;

class B : A // N3.B -> N1.N2.A { } }

ou

namespace N1.N { class A // N1.N2.A { }

Apresentando C# - Aula 02

}

namespace N { using R = N1.N2;

class B : R.A // N3.B -> N1.N2.A { } }

17. namespace / using (segredos)...

namespace N1.N { class A // N1.N2.A { } }

namespace N { using R1 = N1; using R2 = N1.N2; using R3 = N1.N2.A;

class B { N1.N2.A obj1; // obj1 -> N1.N2.A R1.N2.A obj2; // obj2 -> N1.N2.A R2.A obj3; // obj3 -> N1.N2.A R3 obj4; // obj4 -> N1.N2.A } }

18. namespace / using (segredos)...

namespace N1.N { class A // N1.N2.A { } }

namespace N { using N1.N2;

class B : A // N3.B -> N1.N2.A { } }

19. namespace / using (segredos)...

namespace N { class A // N1.A { } }

namespace N {

Apresentando C# - Aula 02

}

20. C#...

 Dúvidas?

C# Fundamentos - Aula 03

**1. C# Fundamentos

  1. Keywords...**

[ ] abstract [ ] event [ ] new [ ] struct

[ ] as [ ] explicit [ ] null [ ] switch

[ ] base [ ] extern [] object [ ] this

[] bool [] false [ ] operator [ ] throw

[ ] break [ ] finally [ ] out [] true

[] byte [ ] fixed [ ] override [ ] try

[ ] case [] float [ ] params [ ] typeof

[ ] catch [ ] for [ ] private [] uint

[] char [ ] foreach [ ] protected [] ulong

[] checked [ ] goto [ ] public [] unchecked

[ ] class [ ] if [ ] readonly [ ] unsafe

[ ] const [ ] implicit [ ] ref [] ushort

[ ] continue [ ] in [ ] return [] using

[] decimal [] int [] sbyte [ ] virtual

[ ] default [ ] interface [ ] sealed [ ] volatile

[ ] delegate [ ] internal [] short [ ] void

[ ] do [ ] is [ ] sizeof [ ] while

[] double [ ] lock [ ] stackalloc

[ ] else [] long [ ] static

[ ] enum [] namespace [] string

3. Comentários

 Comentários de uma única linha (//).  Comentários de mais de uma linha (/* ... */).

  • Hello World */

using System; using System.Collections.Generic; using System.Text;

namespace Curso.CSharp.HelloWorld { class Program { static void Main(string[] args) { Console.WriteLine("Hello World."); Console.ReadLine(); // Aguarda pressionamento da tecla Enter } } }