Quer ter acesso a todos os cursos desse Guia?
Linguagem C#
Neste guia de consulta você encontrará diversos conteúdos que podem ser usados ao longo dos seus estudos sobre a linguagem de programação C#. Consulte este guia para aprender mais sobre certos recursos da linguagem.
Introdução ao C#
Para que você comece a desenvolver aplicações com C# e .NET, o primeiro passo é preparar o ambiente, instalando as ferramentas necessárias. No curso abaixo você verá como proceder:
C# é uma linguagem de programação criada pela Microsoft como parte da plataforma .NET. Por ter uma sintaxe parecida com o Java e C++, o C# pode ser indicado mesmo para programadores iniciantes, que já conhecem a programação Orientada a Objetos. Com ela podemos criar desde aplicações web, desktop, mobile e também jogos eletrônicos.
Nos cursos a seguir você aprenderá desde os conceitos mais básicos da linguagem C# até os recursos de uma das suas versões mais recentes:
Já os links abaixo podem ser usados para consultar rapidamente recursos específicos da linguagem e sua sintaxe:
-
DocumentaçãoIntrodução a Variáveis e Constantes no C#
-
ArtigoConversões de dados implícitas e explicitas em C#
-
ArtigoTipos de Operadores do C#
-
DocumentaçãoEstrutura condicional If/Else
-
DocumentaçãoEstrutura condicional Switch/Case
-
DocumentaçãoEstrutura de repetição While
-
DocumentaçãoEstrutura de repetição Foreach
-
DocumentaçãoArrays
-
DocumentaçãoNullable Types
-
ArtigoManipulação de Strings em C#
Explorando o .NET Framework
Até aqui você já viu como utilizar vários recursos da linguagem C# e deve saber que quando usamos essa linguagem normalmente estaremos usando o .NET Framework, que nos provê um conjunto de classes e ferramentas para o desenvolvimento de aplicações.
No curso abaixo aprenderemos o que é o .NET Core, uma plataforma para desenvolvimento de aplicações desenvolvida e mantida pela Microsoft. Veremos aqui suas principais características e diferenças com relação ao .NET Framework.
Bibliotecas de classes
Bibliotecas de classes (class libraries) são tipos de projetos usados para agrupar classes, normalmente de acordo com um objetivo (entidades, validações, etc). Tais bibliotecas podem ser referenciadas por outros projetos, como ASP.NET MVC, Windows Forms. etc. Assim algumas funcionalidades ficam centralizadas, bem como sua manutenção e testes. No curso abaixo você aprenderá a criar e utilizar essas class libraries no Visual Studio:
Coleções
O .NET Framework é um conjunto de ferramentas e classes que suportam o desenvolvimento de aplicações com a linguagem C# (além de outras linguagens). Entre as várias classes do framework que são de uso frequente em nosso dia a dia estão as coleções, que implementam diferentes estruturas de dados, tais como listas, filas, pilhas, tabelas hash. Nos artigos a seguir você poderá conhecer algumas das principais classes de coleções que você pode usar em suas aplicações com C#:
-
ArtigoSortedList - Dominando as classes do .NET
-
ArtigoQueue e Stack – Trabalhando com os modelos FIFO e LIFO em .NET
-
ArtigoArrayList, Hashtable e BitArray em C#
Essas e outras classes de coleções implementam várias interfaces que padronizam seu funcionamento e que você mesmo pode implementar em suas classes próprias. Essas interfaces encontram-se no namespace System.Collections, que você pode conhecer em maiores detalhes no artigo abaixo:
Tratamento de exceções
Exceções ocorrem com frequência no código e saber lidar com elas é fundamental para garantir que as aplicações se comportem adequadamente nessas situações, sem travar ou parar de funcionar. Nesse sentido o tratamento de exceções é parte fundamental de qualquer linguagem, pois permite identificar os problemas que ocorreram e definir fluxos alternativos para o programa. Observe a Figura 1.
Para aprender a tratar exceções em C#, sugerimos os seguintes conteúdos:
-
CursoC# Exceptions: Trabalhando com exceções em C#
-
Artigo.NET Exceptions: Tratamento de Exceções em .NET
-
ArtigoDebug de aplicações .NET e a propriedade InnerException
Ainda no contexto de identificação e tratamento de erros é importante saber utilizar os recursos de depuração/debug do Visual Studio. Um deles é o breakpoint, que permite pausar a execução da aplicação em determinado ponto do código para que possamos avaliar seu estado naquele momento. Para saber mais, acesse o link abaixo:
Generics
Gerenics é um recurso da linguagem C#, também presente em outras linguagens atuais, que simplifica e torna mais seguro o trabalho com objetos cujo tipo não é conhecido inicialmente. Ou seja, com esse recurso podemos trabalhar com tipos de dados "genéricos" sem ter de recorrer a declarar todos os objetos como um supertipo (como a classe Object) e realizar casts para manipulá-los de acordo com seu tipo real. Para conhecer melhor esse recurso sugerimos a leitura dos artigos a seguir:
Manipulação de arquivos
Ler, escrever, criar e excluir arquivos são tarefas comuns em diferentes tipos de aplicação. Em C# contamos com um conjunto de classes que torna bastante simples implementar essas funcionalidades, como você poderá ver nos seguintes artigos:
A maior parte das classes para manipulação de arquivos está contida no namespaces System.IO (de Input/Output), que é explorado em detalhes nos artigos abaixo:
-
ArtigoPrimeiros passos com o namespace System.IO - Parte I
-
ArtigoPrimeiros passos com o namespace System.IO - Parte II
Caso você precise lidar especificamente com arquivos ZIP também há classes específicas para isso. Se for esse o caso, sugerimos a leitura do artigo abaixo:
LINQ
LINQ (Language Integrated Query) é uma parte da linguagem C# que permite consultar coleções de dados com uma sintaxe semelhante à da linguagem SQL, com cláusulas para filtros e junções entre resultados, por exemplo. Para conhecer esse recurso, confira os links abaixo:
Uma possibilidade muito interessante do LINQ é a de utilizar Lambda Expressions para realizar as consultas, ao invés da sintaxe padrão de queries. Caso você ainda não saiba o que são Lambda Expressions, você pode ver o curso abaixo e logo em seguida ver como aplicá-las no LINQ:
Como você já deve ter visto até aqui, o LINQ é bastante flexível e pode ser usado em diferentes contextos. Por exemplo, nos links abaixo você pode ver exemplos de utilização desse recurso na leitura de arquivos XML e na persistência de dados:
Threads
Por meio de threads uma aplicação pode executar diferentes tarefas de forma concorrente, evitando o sobrecarregamento do fluxo principal do programa. Por exemplo, por meio de threads podemos executar um procedimento pesado em segundo plano, deixando a interface com o usuário livre para interações.
Para dar os primeiros passos com threads em C# você pode ver o seguinte artigo:
Como você deve ter visto, com threads conseguimos implementar processamento assíncrono e paralelo, o que pode nos garantir ganho de desempenho e manter a aplicação funcional durante processamentos pesados. Para saber mais sobre programação assíncrona e paralela em C#, confira os conteúdos abaixo:
Serialização
Com muita frequência precisamos persistir os objetos das nossas aplicações em arquivos ou enviá-los, por exemplo, através da internet para outras aplicações. Nesses casos é preciso obter uma representação desses objetos em um formato adequado, como XML, JSON ou binário. Para isso usamos a técnica de serialização, que você poderá conhecer em maiores detalhes nos links a seguir:
-
ArtigoSerialização de objetos em C#
-
ArtigoSerialização de objetos em XML com C#
-
ArtigoSerialização de objetos no formato JSON
E se você precisa manipular dados no formato JSON com frequência uma boa opção é usar a biblioteca Json.NET, que é apresentada no seguinte curso:
Reflection
Reflection é uma técnica que tem por objetivo obter informações sobre objetos, classes e assemblies em tempo de execução. Nos artigos abaixo você poderá aprender a trabalhar com reflexão em C# e algumas aplicações práticas dessa técnica:
Avançando na linguagem
Para lhe ajudar a seguir evoluindo no aprendizado do C#, indo além dos recursos mais básicos e fundamentais, separamos aqui um curso que apresenta conceitos avançados dessa linguagem:
Orientação a Objetos
Normalmente, quando começamos a programar, o primeiro paradigma que conhecemos é o estruturado. Ele facilita o aprendizado por não trazer consigo tantos conceitos, como os que fazem parte da Orientação a Objetos. Imagine começar a criar algoritmos e, ao mesmo tempo, conciliar conceitos abstratos para poder programar as primeiras soluções? Não seria fácil.
Portanto, é natural percorrer o caminho: Programação Estruturada -> Programação Orientada a Objetos. O único porém desse processo é que algumas vezes acabamos levando algumas características da primeira para a segunda, características essas que podem prejudicar um pouco o nosso código. Pensando nessa etapa de transição, preparamos o seguinte artigo:
Para prender mais sobre o paradigma da Orientação a Objetos, consulte os artigos a seguir:
-
ArtigoFundamentos básicos da Orientação a Objetos
-
ArtigoEntendendo a Orientação a Objetos
-
ArtigoOrientação a Objetos no .NET Framework
É válido ressaltar que a Orientação a Objetos também não é uma “bala de prata”, não é a opção ideal para tudo. Ela possui vantagens e desvantagens. Para conhecer esses pontos, assim como alguns mitos que foram criados em torno dela, acesse os artigos:
Ainda está em dúvida se deve ou por que deveria usar a POO? Fizemos um bate-papo pra lhe ajudar nesse momento:
Pilares da Orientação a Objetos
Após o primeiro contato com a Orientação a Objetos, você deve ter observado termos como abstração, encapsulamento, herança e polimorfismo. Estes são os fundamentos, os quatro pilares da POO. Para aprender sobre eles, algo fundamental para programar corretamente com esse paradigma, acesse:
Coesão e acoplamento
E agora, como saber se estou programando orientado a objetos, se estou aplicando corretamente seus conceitos? Uma maneira de sanar essa dúvida é observar se seu código está coeso e com baixo acoplamento.
Um código coeso é aquele que implementa apenas o que de fato é de sua responsabilidade, por exemplo: um método responsável por imprimir um relatório não deve saber como acessar o banco de dados. Se ele sabe como fazer isso, dizemos que ele tem baixa coesão, o que deve ser evitado.
Já um código fortemente acoplado é aquele que depende de muitos pacotes, classes e/ou métodos para prover uma funcionalidade. Quando se deparar com situações assim, cuidado. O post a seguir expõe como melhorar a qualidade do seu código, o ajudando a reduzir o acoplamento entre classes.
Princípios SOLID
Ao avançar seus estudos em OO, logo você se deparará com os Princípios SOLID. Esse termo representa cinco regras que são avaliadas por arquitetos e programadores como as boas práticas para uma programação orientada a objetos, nos auxiliando na construção de um código de fácil leitura, manutenção e extensão.
O nome SOLID também representa um acrônimo, e como apresentado a seguir, é formado pela junção da primeira letra do nome de cada um dos princípios.
Single Responsibility Principle: De acordo com esse princípio, cada classe deve ser planejada para possuir apenas uma responsabilidade. Sobre ele, temos alguns posts específicos, os quais indicamos a seguir:
Open Closed Principle: Esse princípio determina que uma classe deve ser fechada para modificações e aberta para extensões. Sobre ele, recomendamos os posts:
-
ArtigoOpen Closed Principle
-
ArtigoOpen/Closed Principle: Estenda comportamentos sem alterar o código
Liskov Substitution Principle: Esse princípio está relacionado à herança e indica que devemos ser capazes de substituir a classe filha pela classe pai sem que o sistema apresente problemas;
Interface Segregation Principle: Já o princípio da segregação dita que precisamos planejar interfaces específicas, com propósito bem determinado, de modo que quando implementada a classe que o faz não precise codificar métodos desnecessários;
Dependency Inversion Principle: Por fim, o princípio da inversão de dependência sinaliza que o recomendado é depender apenas de classes abstratas, e não de classes concretas.
Para aprender sobre todos esses princípios, acesse o conteúdo a seguir:
Orientação a Objetos na prática
Agora que você já conhece os conceitos, que tal colocá-los em prática programando com a linguagem C#? Os artigos e o DevCast a seguir lhe ensinarão como aplicar os conceitos da Orientação a Objetos com os recursos do C#:
-
ArtigoComo criar minha primeira classe em C#
-
ArtigoC# Orientado a Objetos: Introdução
-
ArtigoOrientação a Objetos em .NET: uma abordagem completa
-
ArtigoOrientação a Objetos em .NET: uma abordagem completa - Parte 2
-
DevCastProgramar para uma Interface e Encapsular: o que muda - Boas Práticas com C#
Relatórios
A maioria das aplicações conta com uma seção de relatórios, mas codificar essa parte pode exigir muito tempo. Existe uma gama de ferramentas, plugins e bibliotecas que ajudam nessa tarefa, como o Crystal Report, que é uma das mais comuns. Você confere isso nos posts a seguir:
-
CursoCrystal Reports para Visual Studio
-
ArtigoCrystal Reports: Criando relatórios com SAP
-
ArtigoCriando Relatório em Crystal Reports
-
ArtigoExportando documentos em Crystal Reports .NET
A seguir você encontra mais exemplos de produção de relatórios com outras tecnologias:
-
ArtigoFerramentas para relatórios no ASP.NET
-
CursoRelatórios com o Stimulsoft Reports.Web para .NET Novo!
-
ArtigoAbrindo relatório em janela popup em ASP.NET com JavaScript
-
ArtigoRelatórios Inteligentes com BI, R e ASP.NET MVC
-
ArtigoComo gerar Relatórios no ASP.NET MVC
-
ArtigoComo criar documentos PDF em .NET
-
ArtigoTrabalhando com OData e Excel
Mais sobre .NET
Além dos cursos e exemplos sugeridos nesse guia, a DevMedia publica com frequência novos conteúdos sobre .NET, os quais você pode conferir nos Guias de Consulta abaixo:
-
Guia de carreiraProgramador .NET Guia
-
Guia de consultaAcesso a bancos de dados em .NET Guia
-
Guia de consultaAplicações web com ASP.NET MVC Guia
-
Guia de consultaWeb services RESTful com ASP.NET Web API Guia
-
Guia de consultaPadrões de projeto e arquitetura em .NET Guia
Além disso, você pode conferir todo o conteúdo de .NET clicando aqui.
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 59,00
Total: R$ 708,00
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 64,00 /mês
Total: R$ 768,00
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>