You are on page 1of 9

Introduo:

As bibliotecas da plataforma .Net foram desenvolvidas numa linguagem chamada SMC (Simple Managed C). No incio do ano de 1999, Anders Hejlsberg e sua equipe foram escolhidos pela Microsoft para desenvolver uma linguagem que a princpio se chamava Cool. Porm em 2000, quando o projeto .Net foi apresentado no PDC (Professional Developers Conference) a linguagem foi apresentada com o nome de C#. C# foi criada junto com a arquitetura .Net e considerada a linguagem smbolo do .Net pelas seguintes razes: * Foi criada praticamente do zero para funcionar na nova plataforma, sem preocupaes de compatibilidade com cdigo de legado. * O compilador C# foi o primeiro a ser desenvolvido. * A maior parte das classes do .NET Framework foram desenvolvidas em C#.

Struct:
um tipo de valor que usado tipicamente para encapsular grupos pequenos de variveis relacionadas. Exemplo:
public struct Book { public decimal price; public string title; public string author; } Enquanto uma classe um tipo de referncia a struct um tipo de valor. Structs no tem destrutores,

e classes j podem ter. Uma struct no implementa herana, mas pode ter interface. Existem structs bult-in no framework .NET, por exemplo o System.Int32 um int em C# e um System.Single um float, e por ae vai. Essas palavras reservadas usadas pelo C# so alias dos tipos do .NET, usados por uma questo de sintaxe. Maneira alternativa de inicializar um struct para setar suas propriedades usando um inicializador objeto: Rectangle rect11 = new Rectangle { Width = 1, Height = 3 };

Classes e Structs:
Parecido com Struct, principais diferenas: - classes podem ter destrutores. - Alocao de memoria. Classes so sempre alocadas na heap por ser uma referencia, esta referencia (ponteiro) alocada na pilha. J o struct depende do contexto de sua utilizao, so value-types. - Strutcts no utilizam os conceitos de orientao a objeto, sendo assim, no podem ser herdadas. Contudo, structs podem implementar interfaces. - Em gera, structs dem ter no mximo 16 bytes. Caso contrrio, uma classe seria mais adequada.

hierarquia de tipos tem a ver com tudo derivar de um object


tem relao com boxing e unboxing tb object contem stream hashtable int double stream tem MemoryStream FileStream a forma como o.net monta hierarquia de tipos mesmo CTS Data Type System.Byte System.SByte System.Int16 System.Int32 System.Int64 System.UInt16 System.UInt32 System.UInt64 System.Single System.Double System.Objectobject System.Char System.String System.Decimal System.Boolean C# Keyword byte sbyte short int long ushort uint ulong float double char string decimal bool

Tipos de Dados:
Palavras reservadas - sao 75 tipos de dado interno; int, char tipos de dado user-defined; class interface pode ser Value Type (que armazena valores) ou Reference Type (que armazena referncia do dado) value type: structs/Enumerations (ex.: enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};) pode ser tipo numerico : integral types, floating-point types, decial ou bool ou user-defined Tipagem forte - Cada variavel sempre interpretada de uma nica forma a menos que o novo comportamento seja explicitamente definido, atravs de um cast. Caso o comportamento seja incompatvel como tipo seleccionado, acusado um erro durante a compilao. Value Type: contm o valor do dado | copiadas entre chamadas | Mudanas em uma cpia no alteram a outra. Reference Type: armazenam referncia ao dado (objeto) | Duas variveis podem referenciar o mesmo objeto | mudanas em uma referncia afetam as outras.

Encapsulamento:
Encapsulation is an object-oriented principle of hiding the internal state and behavior of an object, making your code more maintainable. In C#, you can manage encapsulation with access modifiers. For example, the public access modifier allows access to any code but the private access modifier restricts access to only members of a type. Other access modifiers restrict access in the range somewhere between public and private. While you can use any of the access modifiers on type members, the only two access modifiers you can use on types are the public and internal.

Sobrecarga de mtodos
O C# permite que ns tenhamos vrios mtodos com o mesmo nome dentro de uma mesma classe... A sobrecarga de mtodos permite a redefinio de mtodos usados no C# para utilizao com tipos definidos pelo usurio. Podemos dizer que o mtodo sobrecarregado simplesmente um outro meio de chamar um mtodo.[6]

Herana:
A herana diz respeito extensibilidade de classes no medelo orientado a objetos. Quando se diz estender determinada classe, entende-se que uma nova classe ser criada, contendo suas prprias propriedades e caractersticas e, agregando a esta nova classe as propriedades e caractersticas de outra j existente a qual conhecida tambm como uma classe Genrica (ou superclasse). A classe filha conhecida como classe especializada (ou subclasse). A herana nos fornece um grande benefcio. Ao concentrarmos caractersticas comuns em uma classe e derivar as classes mais especficas a partir desta, ns estamos preparados para a adio de novas funcionalidades ao sistema. Se mais adiante uma nova propriedade comum tiver que ser adicionada, no precisaremos efetuar alteraes em todas as classes. Basta alterar a superclasse e pronto. As classes derivadas sero automaticamente atualizadas.

Polimorfismo:
Significado: Muitas formas. Ele permite, em uma de suas metodologias de aplicao, que diferentes classes tenham mtodos com a mesma assinatura (mesmo contrato), porm estes mtodos (em suas respectivas classes) pode possuir comportamentos diferentes, de acordo necessidade de cada classe que o implementa. Uso de polimorfismo: pode ser realizada fazendo uso de interfaces, ou classes abstratas, onde ocorrem apenas a implementao das assinaturas dos mtodos, ou seja, do contrato. Desta forma o comportamento deve ser implementado nas classes concretas que implementam as interfaces ou estendem as classes abstratas.

Partial Class:
Uma classe ou struct, ou uma interface que esto em dois ou mais fontes de arquivos possvel ser dividida. Cada fonte contm uma parte da definio da classe e todas as partes so juntadas quando a aplicao compilada.

Possveis uso de partials: Quando vrios programadores trabalham em um projeto grande, essa separao de classe em vrios arquivos permite os programadores trabalharem nele simultneamente. Quando trabalhamos com cdigo gerado automaticamente interesante usar os partials por exemplo, o VS quando cria um Windows Forms vc pode criar cdigos para essas classes sem ter que editar os arquivos gerados pelo VS. Como usar: Basta usuar a palavra reservada partial. Exemplo: public partial class Employee { public void DoWork() { } } public partial class Employee { public void GoToLunch() { } } If any of the parts are declared abstract, then the entire type is considered abstract. Isso vale para Base types e Sealed type.

Internal Class:
Se uma classe declarada como internal, isso faz com que a classe seja acessvel por outras classes na mesma assembly (uma unidade de pacote contendo codigo, metadados, etc). A palavra-chave Internal uma modificador de acesso para tipos e membros de tipos. Tipos internos so acessveis apenas dentro dos arquivos na mesma assembly.

Mtodos Static:
Non-static pricisa ser inicializado, j os static no. Variveis staticas so usadas para valores dos quais no podem ser guardados pelo uma varivel de instncia. Por exemplo: Queremos contar quantas instancias de uma classe existe. Sendo impossvel armazenar isso em uma nica instancia. Static deve ser usado para procedimentos onde invivel fazer com uma nica instancia. Porm, se voc quiser adicionar duas propriedades de um objeto, o mtodo no pode ser esttico. Porque mtodos esttico no podem acessar instancias de metodos ou variveis dentro de um classe. Of course that makes sense because that static method would not know which instance of the class the get these from unless it were told, since it is not part of an instance itself.

Mtodos Abstract:
A palavra reservada abstract uma modificador [ex: public abstract class umaClasse] Um mtodo abstrato implicitamente um um mtodo virtual tambm, porem no precisa, nem pode, usar o modificador virtual tabm. Classe Abstrata no pode ser instnciada. Um mtodo abstrato introduz um novo mtodo virtual, porem sem a implementao do mesmo. A implementao feita por classes derivadas. Estas classes so obrigadas a implementar os mtodos abstratos usando override. J que um mtodo abstrato no contm implementao ele apenas tem um ponto-e-virgula. Por exemplo:

public abstract class Shape { public abstract void Paint(Graphics g, Rectangle r); } public class Ellipse: Shape { public override void Paint(Graphics g, Rectangle r) { g.DrawEllipse(r); } } public class Box: Shape { public override void Paint(Graphics g, Rectangle r) { g.DrawRect(r); } }

Delegates associado em Event Handlers:


A palavra-chave delgate uma assinatura (um tipo de referncia) de um mtodo, implicitamente derivado do System.Delegate Uma instncia de delegado encapsula zero ou mais entidades invocveis - mtodos estticos ou de instncia, com assinatura idntica definida no tipo de delegado. Usado como objeto (em atribuies, passagem de parmetros, etc.) ou como mtodo (para invocar indirectamente as entidades nele encapsuladas). ----------------Delegados so apontadores de funes. Ele apontam para funes. Imagina representadores de uma Empresa por exemplo. Single Delegates: contem uma lista de invocao com um mtodo. Ele aponta para metodos estaticos, ou no-estaticos, se e somente se tiver a mesma assinatura que o delegado. Exemplo: public delegate void Myfunction(string,System.Int32) Multi-cast Delegates: Um delegado Multi-cast se ele contem uma lista de invocaes com mltiplos mtodos. til quando se quer chamar dois mtodos atravs de um nico delegado, como por exemplo, envocar 3 metodos quando um nico boto acionado. Em Multi-cast voce cria um nico delegado que invoca mltiplos mtodos encapsulados. Eventos so as mensagens enviadas por um objeto para indicar a ocorrncia de um evento. Tambm fazem com que um objeto d notificaes. Em C# eventos so usados com delegados, em uma comunicao de evento, o evento no sabe quem vai fazer o handler dele, ai que o o delegado entra na jogada, atuando como um intermediario entre a fonte e o destinatrio.

Hierarquia de controles:

Relacionamento entre contexto e webforms (e master pages) :


Webforms so paginas web programveis. Uma webform feita por um arquivo .aspx e outro arquivo .aspx.cs onde o cdigo colocado. Uma master page um layout consistente paras mltiplas paginas de um aplicao. A vantagem que para mudar algo que o mesmo em vrias pginas de sua aplicao, voc s muda a master page.

Cross Postback:
Submite a prpria pagina para ela mesma. Exemplos seriam, editar, salvar, o mais comum quando o usurio escolhe um estado e quando isso feito tem um postback que avisa qual estado foi escolhido e quais cidades devem aparecer no dropbox de cima, assim ele recarrega a mesma pgina.

ADO.NET:
Uma coleo de namespaces que permite interao com o banco de dados. Uma vantagem do ADO.NET que ele pode ser usado de duas maneiras, conectado ou desconectado. Quando se faz uso da camada conectada o cdigo ir explicitamente conectar e desconectar com o banco, fazendo a interao com os dados direita atravs de objetos de conexo, objetos de comandos, e objetos de leitura de dados. A camada desconectada, nos permite a manipular uma coleo de objetos DataTable (que so contidos no DataSet) que funcionam como uma cpia dos dados externos para o client-side. Quando obtido um DataSet usando um objeto data adapter, a conexo feita automaticamente. Desta forma o sistema ganha em escalabilidade pois ele ajuda a liberar conexes de maneira mais rpida. Para conectar a um banco de dados preciso abrir uma conexo com um ADO.NET Data Provider especfico. Cada provedor de dados optimizado para funcionar com DBMSs especficos. De um forma geral um provedor de dados so tipos definidos em um namespace especfico que comunica com uma fonte de dados especfica. A classe base de qualquer data provider System.Data.Common. O objeto Connection usado para conectar e desconectar da fonte de dados. O objeto comando representa uma query SQL ou um procedure. Connection - responsvel por efetuar a conexo com o banco de dados -Um objeto Connection cria uma ligao (ou conexo) com uma fonte de dados especfica. Este objeto deve conter a informao necessria para se conectar a fonte de dados usando informaes como o provedor, o caminho da base de dados, o usurio e a senha (se necessrio). Esta informao esta contida na string de conexo. Esta informao tambm pode ser armazenada no arquivo web.config , em um arquivo texto, no registro do windows, etc. Command - responsvel por executar comandos contra o banco de dados; DataAdapter - utilizado para preencher o objeto DataSet; Comandos para o Sql: SqlConnection, SqlCommand, SqlDataReader, SqlDataAdapter;

Os objetos DataReader uma das maneiras mais fceis para ler os dados retornados pelos objetos Command . Eles permitem acessar e percorrer os registros no modo de somente leitura e somente para frente - forward-only . O DataReader no oferece o acesso desconectado e no permite alterar ou atualizar a fonte de dados original sendo usado para obter rapidamente dados de apenas leitura. Apresenta poucos recursos mas seu desempenho muito melhor do que o oferecido pelos DataSet.

Nullable Types
http://www.csharpcorner.com/UploadFile/mosessaur/nullabletypes08222006164135PM/nullabletypes.aspx

Notes:
A Microsoft desenvolveu a linguagem C# em conjunto com a arquitetura .NET, sendo assim uma linguagem de programao especialmente desenvolvida para esta plataforma. Herana simples de implementao e herana mltipla de interface (como em Java) Classes[pg15] sintaxe geral: blocos {} pont-e-virgula new instncia para se acessar um membro de uma classe ou struct utiliza-se o ponto (.) ndices acessados por meio de [] this faz referncia instncia com qual se trabalha base faz referncia classe me da classe (super-classe) Ponteiros e aritmtica sem checagem s podem ser utilizados em uma modalidade especial chamada modo inseguro (unsafe mode) Destrutores no existem. O equivalente mais prximo a interface Disposable, que juntamente com a construo using block permitem que recursos alocados por um objeto sejam liberados prontamente. Como no Java, no permitida herana mltipla, mas uma classe pode implementar vrias interfaces abstratas. O objetivo principal simplificar a implementao do ambiente de execuo. As nicas converses implcitas so converses seguras por default, tais como ampliao de inteiros e converses de um tipo derivado para um tipo base.

Diferena entre c# e Java: Apesar de C# ser freqentemente tido como similar a Java, existem uma srie de diferenas importantes, tais como: * Java no implementa propriedades nem sobrecarga de operadores. * Java no implementa um modo inseguro que permita a manipulao de ponteiros e aritmtica sem checagem. * Java possui excees checadas, enquanto excees em C# so no checadas como em C+ +. * Java no implementa o goto como estrutura de controle, mas C# sim. * Java utiliza-se de comentrios Javadoc para gerar documentao automtica a partir de arquivos fonte. C# utiliza comentrios baseados em XML para este propsito. * C# suporta indexadores e delegados. C# 2.0 possui genricos (generics). Generics are checked at compile-time. When your program instantiates a generic class with a supplied type parameter, the type parameter can only be of the type your program specified in the class definition.[4] C# est de tal forma ligado a esta plataforma que no existe o conceito de cdigo nogerenciado (unmanaged code) em C#. Tipos de referncia e tipos de valor, herdam direta ou indiretamente da Object.Voc pode atribuir valores de qualquer tipo a variveis de tipo object.Quando uma varivel de um tipo valor convertido em objeto, ele chamado de Boxed.Quando uma varivel do tipo object convertida em um tipo de valor, ele chamado servidor a ser unboxed.[5]

To Study: -Generics -Polimorfismo -Metodos Virtuais -Override -Interface -Metodos Abstract Referncias (links): [1] http://paginas.fe.up.pt/~jpf/talks/CSharpFEUP10SET2001.pdf [2] http://www.linhadecodigo.com.br/Artigo.aspx?id=740 [3]http://forum.imasters.uol.com.br/index.php?/topic/280980-historia-de-c%23/ [4]http://www.codeproject.com/KB/cs/gencsharp.aspx [5]http://msdn.microsoft.com/pt-br/library/9kkx3h3c%28VS.90%29.aspx figuras, codigos: [6]http://pptinformatica.com.br/wordpress/?p=105

master pages: http://msdn.microsoft.com/en-us/library/wtxbf3hh.aspx web forms: http://msdn.microsoft.com/en-us/library/65tcbxz3(VS.71).aspx http://ondotnet.com/pub/a/dotnet/2001/06/21/webforms.html GET / POST: ttp://www.linhadecodigo.com.br/dica/633/Os-mtodos-GET-e-POST-de-um-FORM.aspx ADO .NET: http://www.macoratti.net/08/11/c_adn_1.htm http://www.triconsole.com/dotnet/sqlcommand_class.php Tratamento de URLS: http://blog.carlosalessandroribeiro.com.br/index.php/2009/06/16/dica-metodoresolveclienturl/ http://msdn.microsoft.com/pt-br/library/ms173104%28v=VS.90%29.aspx http://www.devmedia.com.br/post-13337-Interfaces-X-Classes-Abstratas.html http://en.csharp-online.net/CSharp_Certification%2C_Development%2C_and_Training http://www.arquivodecodigos.net/dicas/c-csharp-usando-heranca-em-c-2505.html http://www.oficinadanet.com.br/artigo/885/curso_de_c_sharp_licao_9_polimorfismo dicas: http://www.arquivodecodigos.net/dicas/c-csharp-usando-heranca-em-c-2505.html http://sipucmg.forumeiros.com/algoritmos-e-estrutura-de-dados-f11/guia-de-comandos-ct59.htm

http://www.linhadecodigo.com.br/artigo/998/Cross-Page-PostBack-no-ASPNET-20Passandopar%C3%A2metros-entre-WebForms-com-PostBackURL.aspx

You might also like