{"id":25198606,"url":"https://github.com/jeffreyssharp/fundamentos-csharp","last_synced_at":"2025-07-23T18:05:24.665Z","repository":{"id":280512368,"uuid":"942209643","full_name":"jeffreysSharp/fundamentos-csharp","owner":"jeffreysSharp","description":"Aprenda desde os conceitos fundamentais até o desenvolvimento completo de uma aplicação em C#.","archived":false,"fork":false,"pushed_at":"2025-03-03T21:23:39.000Z","size":16,"stargazers_count":0,"open_issues_count":14,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-03T21:25:29.023Z","etag":null,"topics":["csharp"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jeffreysSharp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-03T18:45:48.000Z","updated_at":"2025-03-03T18:59:02.000Z","dependencies_parsed_at":"2025-03-03T21:35:31.063Z","dependency_job_id":null,"html_url":"https://github.com/jeffreysSharp/fundamentos-csharp","commit_stats":null,"previous_names":["jeffreyssharp/fundamentos-csharp"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffreysSharp%2Ffundamentos-csharp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffreysSharp%2Ffundamentos-csharp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffreysSharp%2Ffundamentos-csharp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffreysSharp%2Ffundamentos-csharp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jeffreysSharp","download_url":"https://codeload.github.com/jeffreysSharp/fundamentos-csharp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247226204,"owners_count":20904465,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp"],"created_at":"2025-02-10T03:17:51.793Z","updated_at":"2025-04-04T18:12:57.955Z","avatar_url":"https://github.com/jeffreysSharp.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fundamentos do C#\n\n## Aprenda desde os fundamentos até a criação de uma aplicação em C#\n\n### Conceitos Básicos\n\n#### O que é lógica de programação?\n\u003cp\u003ePodemos resumir de forma bem simples, a lógica de programação é uma sequência de passos **Algoritmo** para executar algumas tarefas de um programa.\u003cbr /\u003e\n\n**Exemplo de Algoritimo:** Chupar uma bala: \u003cbr /\u003e \n1. Pegar a bala;\n2. Desembalar a bala;\n3. Colocar a bala na boca;\n4. Chupar a bala.\n\n**Exemplo de lógica de programação:** Minha esposa diz: \u003cbr /\u003e\nVai até a padaria e compre um litro de leite, se lá tiver refrigerante traga três.\u003cbr/\u003e \nChegando na padaria, logo vi que havia refrigerante, então eu comprei três leites.\u003cbr/\u003e \nPareço ter feito confusão, mas existe uma condicional que cérebro de desenvolvedor entende, iremos ver operadores condicionais mais à frente no módulo de **Operadores** e **Expressões**.\u003cbr /\u003e \n\n**Exemplo de operador condicional:**\n\n```python\nComprarLeite()\n{\n    int quantidade = 1;\n    bool temRefrigerante = true;\n\n    if(temRefrigerante)\n       quantidade = 3;\n}\n```\n\n#### O que é linguagem de programação?\n\u003cp\u003eLinguagem de programação é uma forma de escrever instruções que o computador possa interpretar e executar todo o conjunto de intruções que escrevemos, é chamado de código fonte e esse código pode ser compilado ou interpretado.\n\u003c/p\u003e\n\n#### O que é o .NET?\n\u003cp\u003e\n  O .NET é uma plataforma de código aberto, ou seja roda no Windows, Linux e macOS, criada pela Microsoft para construção de diferentes tipos de aplicações, como por exemplo:\n\u003c/p\u003e\n\n![](/.doc/img/1-tipos-aplicacoes.JPG)\n\n\u003cp\u003e\n A plataforma .NET fornece um conjunto de bibliotecas otimizadas para acelerar o desenvolvimento, além da possibilidade de desenvolver aplicações em diversas linguagens, como:  \n\u003c/p\u003e\n\n- **C#**\n- **F#**\n- **Visual Basic**\n\n**Isso é Interoperabilidade com .NET**\n\u003cp\u003e\n O COM (Component Object Model) permite que um objeto exponha sua funcionalidade à outros componentes e aplicativos host em plataformas Windows. Para ajudar a permitir que os usuários executem a interoperação com as bases de código existente.\n\u003c/p\u003e\n\n**A evolução do .NET**\n\n\n![](/.doc/img/2-evulucao-dotnet.JPG)\n\n\u003cp\u003e\n Para visualizar a timeline em alta resolução acesse: \u003ca href=\"https://time.graphics/pt/editor/291016\" target=\"_blank\"\u003etime.graphics\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp\u003e\n O .NET Framework foi criado em 2002, somente era possível desenvolver aplicações para o Sistema Operacional Windows, em 2014 a Microsoft apresentou a primeira versão do .NET Core,  capaz de desenvolver aplicações para  Windows, Linux e macOS. Em 2020 a Microsoft reescreveu toda a plataforma alterando até o nome novamente para .NET para não gerar confusão entre as versçoes antigas.\n\u003c/p\u003e\n\n#### O que é CLR?\n\u003cp\u003e\n CLR (Common Language Runtime) é a base principal do .NET, sendo o responsável por executar sua aplicação e se comunicar com o Hardeware. \u003cbr/\u003e\n Vamos entender como funciona o processo de compilação:\n\u003c/p\u003e\n\n\u003cp\u003eEsse é um assunto bastante avançado, mas é de extrema importância abordar esse assunto, para que você possa compreender de fato como funciona a sua aplicação através do .NET, desde a compilação do código fonte até a execução da aplicação. \u003cbr/\u003e \n\nDurante a nossa evolução como desenvolvedor, iremos desenvolver habilidades para fazer um bom uso de harware, quando estamos escrevendo nosso código fonte, ou seja conforme vamos desenvolvendo nossas habilidades vamos entendendo como podemos construir códigos melhores para fazer um bom uso do harware e utilizar menos recursos da CPU e menos memória, com isso teremos uma aplicação muito mais performática.\u003cbr /\u003e\n\nO CLR já é capaz de fazer um bom gerenciamento de memória de forma bem eficiente, você irá aprender mais adiante o que são variáveis e objetos. \u003cbr /\u003e\n\nPara fazer uma pequena observação para você entender um pouco melhor sobre o que eu falei de gerenciamento de memória, imagine um cenário, onde você tem um cadastro de pessoas e você precisa, por exemplo carregar um determinado registro para exibir para o usuário final, então o CLR possui um conjunto de recursos, um deles é o GC Garbage Collector (Coletor de lixo) que faz o seguinte, quando ele entende que essa informação que você carregou para a memória não está mais sendo utilizada, automaticamente ele vai na memória e remove essa informação, liberando mais espaço na memória, então isso significa que em partes ele assume a responsabilidade de otimizar os recursos que estão sendo utilizados na máquina.\u003cbr /\u003e\n\nAgora vamos entender de fato como funciona o processo de compilação e execução, então vamos analizar a seguinte imagem: \u003cbr /\u003e\n\u003c/p\u003e\n \n ![](/.doc/img/3-processo-compilacao.JPG)\n\n\u003cp\u003e\n O primeiro passo é escrever a aplicação utilizando a linguagem de preferência. Quando queremos executar esse código, precisamos compilar a nossa aplicação, o compilador gera um assembly do tipo .exe ou uma .dll e isso vai depender da configuração do tipo de projeto que você criou, isso você vai aprender mais à frente.\u003cbr /\u003e\n\n Esse arquivo vai passar por um outro processo, onde o compilador pega o código fonte e o transforma em uma outra linguagem IL (Linguagem Intermediária) essa linguagem intermediária foi criada para que o .NET fornecesse a capacidade de desenvolvermos em outras linguagens e que o core, o motor pricipal fosse capaz de ler apenas uma linguagem que é o IL então o compilador do C# vai gerar o código executável em uma .dll ou .exe, que contenha essas intruções em código IL, então ele transforma o código do C# para IL, e o que acontece é que em tempo de execução, ou seja, a hora que você vai executar a sua aplicação o .NET vai utilizar os recursos do CLR, é onde o CLR entra em ação de fato.\u003cbr /\u003e\n\n Mais um importante dos recursos do CLR, é o RyuJIT, um outro compilador em tempo de execução, que o compilador vai pegar esse código IL e transformar em um código nativo da máquina que você está utilizando e aí sim vai executar a sua aplicação.\n \u003c/p\u003e\n\n#### O que é um projeto?\n\u003cp\u003e\nMais á frente iremos criar um projeto na prática. \u003cbr /\u003e \nEsse módulo tem como objetivo fazer um pequeno overview do que é um projeto. Quando estamos criando nossas aplicações em .NET.\u003cbr /\u003e\n\nUm projeto é uma forma de você organizar todo código fonte da sua aplicação, seja por arquivos\nou até mesmo por pastas, no projeto é onde fica todos os arquivos que serão compilados, além disso você pode adicionar informações sobre sua aplicação, como por exemplo o nome de sua aplicação, versão da sua aplicação, porque a cada alteração que você fizer no seu código fonte e compilar sua aplicação novamente voê pode querer gerar uma nova versão e é exatamente no projeto que você informa a versão. Você pode também informar a versão do .NET. Como a Microsoft tem evoluído bastante o .NET e tem lançado várias versões, é no projeto que você vai setar e informar qual é a versão do .NET que você irá utilizar no projeto. \u003cbr /\u003e\nBasicamente é essa a estrutura de um projeto:\n\u003c/p\u003e\n\n![](/.doc/img/4-estrutura-projeto.JPG)\n\n\u003cp\u003e\n Sendo assim, quando for compilar a nossa aplicação o compilador \u003ca href=\"https://github.com/dotnet/roslyn\"\u003eroslyn\u003c/a\u003e irá analizar a estrutura do projeto e vai compilar a aplicação usando as configurações adicionas no arquivo do projeto. De forma resumida é isso, o projeto é utilizado para organizar a estrutura do código fonte da aplicação e configurar informações que são relevantes para a aplicação, mais a frete criaremos uma projeto totalmente do zero e você irá compreender melhor a estrutura de um projeto.\n\u003c/p\u003e\n\n#### O que é uma Solition?\n\u003cp\u003e\nApesar de o nome ser um pouco confuso (Solution ou Solução) não está relacionado a resolução de algum tipo de problema. Quando estamos desenvolvendo uma aplicação em .NET precisamos criar projetos para organizar o código fonte, conforme falado  no módulo anterior. \u003cbr/\u003e\n\nUma Solution é uma forma de agrupar diversos projetos, e no momento de compilar a aplicação ao invés de você compilar projeto por projeto você compila a Solution e os binários de cada projeto serão gerados individualmente de uma única vez.\u003cbr/\u003e\nBasicamente é essa a estrutura de uma Solution:\n\u003c/p\u003e\n\n![](.doc/img/5-estrutura-solucao.JPG)\n\n\u003cp\u003e\n Um exemplo é quando você está desenvolvendo um ERP deve sere dividido em vários módulos, como por exemplo um módulo de cadastro, módulo financeito, módulo de compras, etc...\u003cbr /\u003e\n\n Então você cria uma Solution com o nome da aplicação.\n\u003c/p\u003e\n\n\u003chr /\u003e\n\n### Preparando o ambiente\n\n1. Instalando o .NET SDK \n\u003cp\u003e\n Entre na página \u003ca href=\"https://dot.net/\"\u003edot.net\u003c/a\u003e, faça o download do SDK para seu Sistema Operacional. \n\u003c/p\u003e\n\n2. Conhecendo IDE's de desenvolvimento\n\u003cp\u003e\nDurante o ciclo de desenvolvimento de um Sofware você precisa de uma IDE \n(Integrated Development Environment ou Ambiente de Desenvolvimento Integrado). \nO objetivo principal da IDE é acelerar o desenvolvimento da sua aplicação, dado que nos fornece \nferramentas como Intelicense (Um recurso que ajuda a preencher o código) para ajudar no processo de desenvolvimento do código. \nVocê pode até utilizar o notepad para escrever seu código e compilar a sua aplicação em um prompt de comando,\nmas as IDE1s são muito mais produtivas. \u003cbr /\u003e\nVamos conhecer três IDE's que são as mais utilizadas no mundo, quando falamos em desenvolvimento de Software.\u003cbr /\u003e\n\u003c/p\u003e\n\n![](/.doc/img//6-principais-ides.JPG)\n\n##### Visual Studio Code\n\u003cp\u003e\n O Visual Studio Code é uma das IDE's mais utilizadas no mundo, isso porque a Microsoft teve\n como objetivo desenvolver essa IDE sendo multiplataforma, isso significa que você pode \n utilizar tanto no Windows, Linux e macOS. É uma IDE open source, isso significa que é de código aberto,\n você pode ir até o github e fazer contribuições para o projeto, é multilinguagem e por isso você pode \n utilizar para desenvolver em diversas linguagens de programação.\n\u003c/p\u003e\n\n#### Visual Studio\n\u003cp\u003e\nTemos o VIsual Studio que para mim é a melhor IDE para desenvolvimento para .NET, porém existe\nalgumas limitações, por exemplo ele só pode ser instalado em Sistema Operacional Windows. Temos o\nVisual Studio Free, que é o Community Only, isso significa que você pode utilizart ele de forma\nFree, mas você nçao pode desenvolver Sistemas que são comerciais, aquele Sistema que você vai cobrar \npor ele. E temos as versões Professional e Enterprise, que são as versões de fato pagas.\n\u003c/p\u003e\n\n#### Jetbrains Rider\n\u003cp\u003e\nTemos também uma outra excelente IDE que é da Jetbrains Rider, é uma IDE que é multiplataforma,\nentão você pode utilizar para desenvolver aplicações tanto no Windows, Linux e macOS, mas ela não é Free,\nou seja, você precisa adquirir uma licença dessa IDE.\n\u003c/p\u003e\n\n#### Vamos utilizar o Vuisual Studio Code\n\n\u003cp\u003e\n Após a instalação do Visual Studio code precisaremos:\n\u003c/p\u003e\n\n ##### Instalar uma extensão\n\n \u003cp\u003e\n  Dado cenário que vamos trabalhar com a linguagem C#, utilizando essa IDE. Com o Visual Studio Code é \n  possível desenvolver em diversas linguagens de programação, mas para isso é necessário instalar \n  alguma extenção.\u003cbr /\u003e\n  Iremos instalar a extenção C# oficial da Microsoft.\n \u003c/p\u003e\n\n![](/.doc/img/7-extencao-csharp-vscode.JPG)\n\n### Hands-On-Code\n\u003cp\u003e\n Este módulo tem como objetivo:\n\u003c/p\u003e\n\n#### Criar uma Solution via CLI\n\n\u003cp\u003e\n Para criar a nossa primeira Solution utilizando o .NET, o qual já foi apresentado em módulos primeiro você precisa escolher um diretório onde você quer criar esses arquivos.\u003cbr /\u003e\n Exemplo: C:\\Projects\\Curso\u003cbr /\u003e\n\n O .NET possui vários templates que podemos utilizar para criar uma Solution ou até mesmo um projeto ou bibliotecas. \u003cbr /\u003e\n\nAbra um prompt de comando e navegue até o diretório criado.\u003cbr /\u003e\nDigite o seguinte comando:\n\u003c/p\u003e\n\n```bash\n C:\\Projects\\Curso\u003edotnet new list\n```\n\u003cp\u003e\nPara exibir todos os templates disponíveis do .NET que podemos utilizar, conforme a imagem abaixo.\n\u003c/p\u003e\n\n![](/.doc/img//8-templates-disponiveis.JPG)\n\n\u003cp\u003e\n O template que iremos utilizar é o Solution File, para isso digite:\n\u003c/p\u003e\n\n```bash\n C:\\Projects\\Curso\u003edotnet new sln -n Curso\n```\n\u003cp\u003e\n Que é do template de **Solution File**, o argumento -n é para informar o nome do projeto ou da Solution, iremos nomear de Curso. \u003cbr/\u003e\n Ao pressionar enter o .NET irá utilizar esse template de Solution e vai criar um arquivo de Solution. \u003cbr\u003e \n Navegue até o diretório selecionado e vai ver o arquivo Curso.sln criado.\n\u003c/p\u003e\n\n#### Criar um projeto via CLI\n\u003cp\u003e\nAgora vamos criar um projeto que iremos utilizar para os próximos módulos.\u003cbr /\u003e\nPara isso digite o comando:\n\u003c/p\u003e\n\n```bash\n C:\\Projects\\Curso\u003edotnet new console -n ProjetoAulas -f net9.0\n```\n\u003cp\u003e\n E pressione Enter para criar esse projeto. o argumento -f é para informar qual a versão do .NET que iremos utilizar nesse projeto, nesse caso vamos utilizar o .NET 9.\u003cbr /\u003e\n Navegue até o diretório selecionado e vai ver o arquivo ProjetoAulas.csproj e o arquivo principal Program.cs criado.\n\u003c/p\u003e\n\n#### Executar o primeiro projeto\n\u003cp\u003e\n Esse módulo tem como objetivo executar a nossa primeira aplicação em .NET, nos módulos anteriores criamos a Solution Curso.sln e também criamos uma Projeto chamado ProjetoAulas.csproj.\u003cbr/\u003e\n\n Em módulos anteriores explicamos o que uma Solution e sua principal funcionalidade, que é de organizar projetos que desenvolvemos em .NET. Como já criamos uma Solution e um projeto, o que precisamos fazer agora é adicionar o nosso Projeto na Solution.\u003cbr /\u003e\n\n Antes de adicionar o projeto na Solution vamos ao Prompt de comando e vamos analizar a estrutura do arquivo Curso.sln, que é a nossa Solution\u003cbr/\u003e\n\n Digite no prompt de comando:\n\u003c/p\u003e\n\n```bash\n C:\\Projects\\Curso\u003etype Curso.sln\n```\n\u003cp\u003e\nBasicamente essa é a a estrutura do arquivo da Solution Curso.sln\n\u003c/p\u003e\n\n![](/.doc/img/9-estrutura-sln.JPG)\n\n\u003cp\u003e\nEntão basicamente dentro desse arquivo, possui alguns código, que não precisamos editar manualmente, sempre iremos manipular esse arquivo dentro de uma IDE ou através do console utilizando o .NET. Esse arquivo não tem nenhuma informação de extrema importância até o momneto\ndentro desse arquivo de Solution. Então agora vamos adicionar nosso projeto na Solution digitando o seguinte comando:\n\u003c/p\u003e   \n\n```bash\n C:\\Projects\\Curso\u003edotnet sln Curso.sln add ProjetoAulas\n```\n\u003cp\u003e\n Agora o projeto foi adicionado na Solution, seu eu digitar novamente o comando:\n\u003c/p\u003e\n\n```bash\n C:\\Projects\\Curso\u003etype Curso.sln\n```\n\u003cp\u003e\n Agora foi adicionado algumas informações importantes dentro desse arquivo, a informação mais importante de se destacar é o ProjetoAulas que foi adicionado no arquivo Solution.\n\u003c/p\u003e\n\n![](/.doc/img/9-estrutura-sln-projeto.JPG)\n\n\u003cp\u003e\n Temos aqui o nome do projeto e temos o diretório do projeto onde se encontra o projeto dentro da Solution, então vamos entender a principal funcionalidade da Solution, que é organizar os projetos que estamos desenvolvendo a aplicação. Conforme vamos criando projetos e adicionando na Solution ele vai alterando o arquivo criando blocos de informações de cada projeto. \u003cbr/\u003e\n\n Vamos conhecer agora alguns comando de extrema importancia que vamos utilizar durante o processo de nossa aplicação. \u003cbr /\u003e\n\n Para compilar o projeto temos duas opçoes, podemos compilar na raiz da minha Solution digitando um comando para compilar toda a Solution, como também eu posso digitar um comando \n especifico para o projeto que eu quero compilar.   \n\u003c/p\u003e\n\n```bash\n C:\\Projects\\Curso\u003edotnet build\n```\n\u003cp\u003e\nAo digitar esse comando ele vai analisar todos arquivos do projeto que estão dentro do arquivo\nSolution e vai compilar e gerar os binários que contém a linguagem IL que já foi explicado em módulos anteriores que é a Linguagem Intermediária (IL) para que o runtime possa executar a nossa aplicação de fato. Então, ao digitar o comando dotnet build ele vai compilar o projeto.\u003cbr/\u003e\n\nSe você for até o diretório vai encontrar algumas pastas, uma pasta chamada obj que armazena objetos temporários em tempo de desenvolvimento, então enquanto você está desenvolvendo a sua aplicação alguns arquivos podem estar sendo gerados dentro dessa pasta obj. \u003cbr /\u003e\n\nA pasta bin/debug/net9.0 que é a versão do framework que escolhemos é onde fica os arquivos \nda compilação do nosso projeto, quando executamos o comando dotnet build ele gera os binários, que nesses binários contém a Linguagem Intermediária (IL), que já falamos em módulos anteriores e é através desses arquivos que executamos a aplicação, esses arquivos são a nossa aplicação final. \u003cbr/\u003e     \n\nUm outro comando que vamos analisar é o comando clean. Observe o seguinte compilamos o projeto, ele gerou os binários na pasta debug e na pasta obj.\u003cbr/\u003e\n\nSe digitar o comando:\n\u003c/p\u003e\n\n```bash\n C:\\Projects\\Curso\u003edotnet clean\n```\n\n\u003cp\u003e\n O comando irá limpar todos os arquivos que foram gerados em tempo de compilação.\u003cbr /\u003e\n Para executar o projeto digite o comando:    \n\u003c/p\u003e\n\n```bash\n C:\\Projects\\Curso\u003edotnet run\n```\n\u003cp\u003e\nO console vai informar que não foi possivel encontrar um projeto para executar, para executar  uma aplicação precisamos passar para o .NET qual é a aplicação que queremos executar, ela não vai ser executada automaticamente por estar na pasta da minha Solution. Nossa Solution é utilizada como uma forma apenas de organizar os projetos, mas para executar os projetos precisamos passar para o .NET qual é o projeto que queremos executar. \u003cbr/\u003e\n\nÉ preciso executar o comando:\n\u003c/p\u003e\n\n```bash\n C:\\Projects\\Curso\u003edotnet run --project ProjetoAulas \n```\n\u003cp\u003e\n É necessário informar o diretório do projeto para executar.\u003cbr /\u003e \n Essa é a primeira forma de executar o projeto na raiz da Solution informando o argumento --project e informar o diretório do projeto. \u003cbr/\u003e   \n\u003c/p\u003e\n\n\u003cp\u003e\nA segunda opção para executar o projeto é navegar até o diretório onde está o projeto e executar o comando:    \n\u003c/p\u003e\n\n```bash\n C:\\Projects\\Curso\\ProjetoAulas\u003edotnet run\n```\n\u003cp\u003e\nAssim não é preciso informar qual é o projeto porque automaticamente o .NET vai fazer o discover daquele diretório e vai encontrar o arquivo com a extensão .csproj e vai executar o projeto.     \n\u003cp\u003e\n\n#### O que são namespaces?\n\u003cp\u003e\n Um namespace em C# é um conjunto de objeto organizados que são agrupados e organizados em um escopo. A palavra-chave namespoace é usada para declarar um namespace.\n\u003c/p\u003e\n\n##### Os namespaces são úteis para: \n\n- Organizar grandes quantidades de código;\n- Evitar conflitos de nomes;\n- Criar tipos globalmente exclusivos;\n- Controlar o escopo de nomes de classes e de métodos;\n- Evitar problemas futuros quando se quer reutilizar códigos.\n\n\u003cp\u003e\n Para simplificar o uso dos namespaces, \n\u003c/p\u003e\n\n\u003cp\u003e\nPara declarar um namespace em C#, é necessário usar a palavra chave namespace e um nome de identificador válido.\u003cbr /\u003e\n\nPara simplificar o uso dos namespaces, é possível utilizar a diretiva using. A diretiva using elimina a necessidade de especificar o nome do namespace para cada classe.\n\u003c/p\u003e\n\n#### Tipos de dados do C#\n\n![](/.doc/img//10-tipos-dados.JPG)\n\n\u003cp\u003e\nEsse móduulo tem como objetivo conhecer o principais tipos de dados do C# que utilizamos para desenvolver aplicações, esses tipos de dados são fundameitais para o desenvolvimento de aplicações, o qual podemos escolher o tipo de dado especifico para armazenar cada tipo de informação. \u003cbr/\u003e\n\nVamos pegar como exemplo um cadastro de pessoas, então no momento que vamos cadastrar uma pessoa precisaremos capturar o nome da pessoa,\nentão vamos armazenar o nome da pessoa em um tipo de dado específico e para armazenar a idade da pessoa é necessário armazenar esse dado em \noutro tipo de dado. E esses tipos de dados  que iremos conhecer agora.\n\u003c/p\u003e \n\n##### Numéricos\n\u003cp\u003e\n  Os tipos de dados numéricos são números inteiros, decimais e números de ponto flutuante. \n\u003c/p\u003e\n\n###### Inteiros\n\n![](/.doc/img/11-tipo-dados-inteiros.JPG)\n\n\u003cp\u003e\n  O principais tipos de dados para trabalhar com números, com valores inteiros, que não são fracionados, são o byte, hort, int e long.\n\u003c/p\u003e\n\n- **byte** É possível armazenar valor de 0 até 255;\n- **short** É possível armazenar valor negativo de -32768 até 32767 positivo;\n- **int**  É possível armazenar valor negativo de -2.147.483.648 negativo até  2.147.483.647 pósitivo;\n- **long** É possível armazenar valor -9.223.372.036.854.775.808 negativo até 9.223.372.036.854.775.807 positivo.\n\n###### Pontos flutuantes\n\n![](/.doc/img/12-tipo-dados-pontos-flutuantes.JPG)\n\n\u003cp\u003e\n Temos também outros tipos de dados para armazenar valores fracionados, quee são chamados de pontos flutuantes, são float, double e decimal.\n\u003c/p\u003e\n\n- **float** É possível armazenar até 9 dígitos em casas decimais; \n- **double** É possível armazenar até 17 dígitos em casas decimais; \n- **decimal** É possível armazenar até 29 dígitos, com uma precisão maior para fazer armazenamento em cálculos matemáticos\n\n#### Booleano\n![](/.doc/img/13-topo-dados-booleano.JPG)\n\n\u003cp\u003e\n  O tipo booleano é um tipo de dado que pode armazenar os valores verdadeiro ou falso, representados pelos literais true ou false.\n\u003c/p\u003e\n\n### Caracteres\n![](/.doc/img/14-tipo-dados-caracteres.JPG)\n\n\u003cp\u003e\n  Temos dois tipos de dados para trabalhar com caracteres, são char e stgring\n\u003c/p\u003e\n\n- **char** Aceita apenas 1 (um) caractere (Letra, Unicode ou Hexadecimal), para utilizar o envolvemos em aspas simples informando qual o caractere está sendo utilizado **'A'**, ele suporta também e já faz a conversão automática se você informar um caractere no formato unicode ou\nexadecimal, ecplicarei mais a frente nos próximos módulos.\n- **string** É o tipo mais utilizado no processo de desenvolvimento de aplicações, esse tipo tem como proposta fornecer a capacidade de armazenar dados como uma cadeia de caracteres, por exemplo armazenar o nome da pessoa. \n\n#### Outros tipos\n![](/.doc/img/15-tipo-dados-outros.JPG)\n\n\u003cp\u003e\n Temos outros tipo de dados muito utilizados para desenvolvimento de aplicações.\n\u003c/p\u003e\n\n- **class** \n- **interface**\n- **struct**\n- **object**\n- **dynamic**\n\n\u003cp\u003e\n Não vamos aprofundar nesse módulo aqui esses tipos que foram apresentados agora, porque teremos um módulo específico durante esse curso que\n iremos conhecer todos esses tipo aqui apresentados, bom fizemos um pequeno overview sobre esses tipos de dados para que você possa ter uma noção e saiba qual é o tipo de dado específico que você pode utilizar durante o processo de desenvolvimento de aplicações.          \n\n\u003c/p\u003e\n\n\n#### O que é uma variável\n#### O Que é uma constante\n#### Comentários\n#### Operadores aritiméticos\n#### Operadores relacionais\n#### Operadores lógicos\n#### Operador ternário\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeffreyssharp%2Ffundamentos-csharp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeffreyssharp%2Ffundamentos-csharp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeffreyssharp%2Ffundamentos-csharp/lists"}