{"id":27559616,"url":"https://github.com/eriscript/learn-csharp","last_synced_at":"2025-04-22T06:28:29.023Z","repository":{"id":140957812,"uuid":"461037422","full_name":"eriscript/learn-csharp","owner":"eriscript","description":"📚Playground e cheatsheet para aprender Csharp. Coleção de projetos Csharp que são divididos por tópicos e contêm exemplos de código com explicações.","archived":false,"fork":false,"pushed_at":"2024-09-04T19:02:34.000Z","size":31,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-20T01:46:14.499Z","etag":null,"topics":["aprendendo","aprendendo-fazendo","aprendizagem-csharp","csharp","csharp-code","linguagem-de-programacao"],"latest_commit_sha":null,"homepage":"","language":"C#","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/eriscript.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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,"zenodo":null},"funding":{"github":"erismaroliveira","patreon":"erismaroliveira"}},"created_at":"2022-02-18T23:35:36.000Z","updated_at":"2024-09-04T19:35:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"bf2edf0b-70f7-4ff0-adb2-24cba0a7c9e5","html_url":"https://github.com/eriscript/learn-csharp","commit_stats":null,"previous_names":["eriscript/learn-csharp","erismaroliveira/learn-csharp"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eriscript%2Flearn-csharp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eriscript%2Flearn-csharp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eriscript%2Flearn-csharp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eriscript%2Flearn-csharp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eriscript","download_url":"https://codeload.github.com/eriscript/learn-csharp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249838238,"owners_count":21332562,"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":["aprendendo","aprendendo-fazendo","aprendizagem-csharp","csharp","csharp-code","linguagem-de-programacao"],"created_at":"2025-04-20T01:26:44.562Z","updated_at":"2025-04-22T06:28:29.016Z","avatar_url":"https://github.com/eriscript.png","language":"C#","readme":"# Playground e Cheatsheet Para Aprender Csharp\n\n\u003e Essa é uma coleção de projetos Csharp dividida em [tópicos](#índice) que contém\n\u003e exemplos de código com explicações, diferentes usos e links para outras leituras.\n\n\u003e _Ler em:_ [_English_](README.en-US.md), [_Español_](README.es-ES.md), [_Traditional Chinese_](README.zh-TW.md).\n\nÉ um **playground** porque você pode fazer alterações no código para ver como ele se comporta,\nalém de [testá-lo](#testando-o-código) usando asserções. Também é possível\n[revisar o código](#revisando-o-código) que você escreveu automaticamente e verificar se ele se encaixa\nno guia de estilo de código Csharp.\nIsso tudo pode tornar seu processo de aprendizagem mais interativo e ajudar a manter a qualidade\ndo código bastante alta desde o início.\n\nÉ um **cheatsheet** porque você pode voltar a esses exemplos de código quando quiser recapitular a sintaxe das\n[estruturas padrão do Csharp](#índice). O código está cheio de asserções, então você poderá ver o retorno dos métodos sem precisar executá-los.\n\n\u003e _Você pode se interessar também por 🤖 [Gravatar Extensions](https://github.com/erismaroliveira/Gravatar)_\n\n## Como Usar Esse Repositório\n\nCada projeto neste repositório é estruturado para facilitar a aprendizagem e experimentação dos tópicos de C#. Aqui está um exemplo de como um projeto típico está organizado:\n\n```csharp\n    // Nome do tópico\n    // Exemplo: Lists (Listas em C#)\n\n    // Link para leituras adicionais\n    // @see: https://www.learncs.org/en/Lists\n\n    // Descrição do Tópico\n    // Uma explicação mais detalhada sobre o tópico atual, como listas (Lists) em C#.\n    // Exemplo: As listas em C# são semelhantes às listas em outras linguagens, como Java, oferecendo um objeto que pode conter múltiplos elementos em uma ordem específica.\n\n    // Exemplo de Código\n    List\u003cint\u003e numbers = new List\u003cint\u003e(); // Declaração de uma lista de inteiros\n\n    // Explicação do Subtópico\n    // Cada arquivo contém exemplos e funções de teste que ilustram subtópicos (ex.: tipos de lista, métodos de lista).\n```\n\n### Exemplo: Trabalhando com Listas em C#\n\nAs listas em C# são muito semelhantes às listas em outras linguagens, como Java. Elas são objetos que contêm variáveis em uma ordem específica. O tipo de variável que a lista pode armazenar é definido usando a sintaxe genérica (`\u003cT\u003e`). Veja abaixo um exemplo de como declarar e manipular listas em C#:\n\n```csharp\n// Declaração de uma lista de inteiros chamada \"numbers\"\nList\u003cint\u003e numbers = new List\u003cint\u003e();\n\n// Adicionando elementos à lista\nnumbers.Add(1);\nnumbers.Add(2);\nnumbers.Add(3);\n\n// Imprimindo os elementos da lista\nConsole.WriteLine(string.Join(\", \", numbers)); // Saída: 1, 2, 3\n\n// Adicionando um array inteiro à lista usando o método AddRange\nint[] array = new int[] { 4, 5, 6 };\nnumbers.AddRange(array);\n\n// Imprimindo os elementos atualizados da lista\nConsole.WriteLine(string.Join(\", \", numbers)); // Saída: 1, 2, 3, 4, 5, 6\n```\n\nDiferença entre Listas e Arrays\n\n- **Listas**: São de tamanho dinâmico, ou seja, podem crescer e diminuir conforme necessário. Elas são úteis quando você não sabe o número exato de elementos que precisará armazenar.\n- **Arrays**: Têm tamanho fixo, definido no momento da criação, e são melhores para quando o número de elementos é conhecido e fixo.\n\n### Então você pode querer fazer o seguinte:\n\n- [Encontrar o tópico](#índice) que deseja aprender ou recapitular.\n- Ler os comentários e/ou a documentação vinculada em cada projeto (como no exemplo acima).\n- Analisar os exemplos e asserções para ver exemplos de uso e saída esperada dos métodos.\n- Alterar o código ou adicionar novas asserções para ver o que acontece.\n- [Executar testes](#testando-o-código) e [revisar o código](#revisando-o-código) para ver se ele\n  funciona e para saber se está escrito corretamente.\n\n## Índice\n\n1. **Começando**\n   - [O que é Csharp](src/getting_started/what_is_csharp.md)\n   - [Sintaxe Csharp](src/getting_started/csharp_syntax.md)\n   - [Variáveis](src/getting_started/test_variables.cs)\n2. **Operadores**\n   - [Operadores Aritméticos](src/operators/test_arithmetic.cs) (`+`, `-`, `*`, `/`, `%`)\n   - [Operadores Bitwise](src/operators/test_bitwise.cs) (`\u0026`, `|`, `^`, `\u003e\u003e`, `\u003c\u003c`, `~`)\n   - [Operadores de Atribuição](src/operators/test_assigment.cs) (`=`, `+=`, `-=`, `*=`, `/=`, `%=` etc.)\n   - [Operadores de Relacionais](src/operators/test_relation.cs) (`==`, `!=`, `\u003e`, `\u003c`, `\u003e=`, `\u003c=`)\n   - [Operadores Lógicos](src/operators/test_logical.cs) (`\u0026\u0026`, `||`, `!`)\n3. **Tipos de Dados**\n   - [byte](src/data_types/test_byte.cs)\n   - [sbyte](src/data_types/test_sbyte.cs)\n   - [short](src/data_types/test_short.cs)\n   - [ushort](src/data_types/test_ushort.cs)\n   - [int](src/data_types/test_numbers-int.cs)\n   - [uint](src/data_types/test_uint.cs)\n   - [long](src/data_types/test_long.cs)\n   - [ulong](src/data_types/test_ulong.cs)\n   - [float](src/data_types/test_numbers-float.cs)\n   - [double](src/data_types/test_double.cs)\n   - [decimal](src/data_types/test_decimal.cs)\n   - [char](src/data_types/test_char.cs)\n   - [bool](src/data_types/test_bool.cs)\n   - [string](src/data_types/test_strings.cs)\n   - [object](src/data_types/test_object.cs)\n4. **Controles de Fluxo**\n   - [A declaração `if`](src/control_flow/test_if.cs)\n   - [A declaração `if-else`](src/control_flow/test_if_else.cs)\n   - [A declaração `else if`](src/control_flow/test_else_if.cs)\n   - [A declaração `foreach`](src/control_flow/test_foreach.cs)\n   - [A declaração `switch`](src/control_flow/test_switch.cs)\n   - [A declaração `for`](src/control_flow/test_for.cs)\n   - [A declaração `while`](src/control_flow/test_while.cs)\n   - [A declaração `do-while`](src/control_flow/test_do_while.cs)\n   - [A declaração `try-catch`](src/control_flow/test_try_catch.cs)\n   - [A declaração `break`](src/control_flow/test_break.cs)\n   - [A declaração `continue`](src/control_flow/test_continue.cs)\n   - [A declaração `return`](src/control_flow/test_return.cs)\n   - [A declaração `using`](src/control_flow/test_using.cs)\n   - [A declaração `yield`](src/control_flow/test_yield.cs)\n   - [A declaração `async/await`](src/control_flow/test_async_await.cs)\n   - [A declaração `goto`](src/control_flow/test_goto.cs)\n5. **Funções**\n   - [Aguarde](src/metodos/test_metodos.cs)\n6. **Classes**\n   - [Definição de Classe](src/classes/test_class_definition.cs) (declaração `class`)\n   - [Classes dos Objetos](src/classes/test_class_objects.cs)\n   - [Instância dos Objetos](src/classes/test_instance_objects.cs)\n   - [Métodos de Objetos](src/classes/test_method_objects.cs)\n   - [Variável de Classe e Instância](src/classes/test_class_and_instance_variables.cs)\n   - [Herança](src/classes/test_inheritance.cs)\n7. **Módulos**\n   - [Módulos](src/modules/test_modules.cs) (declaração `using`)\n   - [Pacotes](src/modules/test_packages.cs)\n8. **Erros e Exceções**\n   - [Tratando Exceções](src/exceptions/test_handle_exceptions.cs) (declaração `try`)\n9. **Arquivos**\n   - [Lendo e Escrevendo](src/files/test_file_reading.cs) (declaração `StreamWriter writer = new StreamWriter(\"erismar.txt\")`)\n10. **Adicional**\n    - [Aguarde](src/additions/test_additions.cs)\n11. **Algumas Bibliotecas Padrão**\n    - [Tempo e Datas](src/standard_libraries/test_datetime.cs) (bibliotecas `TimeSpan` e `DateTime`)\n\n## Pré-requisitos\n\n**Instalando o Dotnet**\n\nCertifique-se de ter o [SDK Dotnet instalado](https://dotnet.microsoft.com/en-us/download) em sua máquina.\n\nVocê pode ver a versão do Dotnet executando:\n\n```bash\ndotnet --version\n```\n\nObserve que neste repositório sempre que você vê o `dotnet`, será assumido que é o Dotnet **6**.\n\n**Instalando dependências**\n\nInstale todas as dependências necessárias para o projeto executando:\n\n1. Abra o terminal ou prompt de comando.\n2. Navegue até a pasta raiz do seu projeto, onde o arquivo .csproj está localizado.\n3. Execute o seguinte comando:\n\n```bash\ndotnet restore\n```\n\nO comando dotnet restore irá baixar todas as dependências listadas no arquivo .csproj do seu projeto, utilizando o NuGet como gerenciador de pacotes.\n\n💡**Dica Adicional**\n\nSe precisar atualizar as dependências para as versões mais recentes disponíveis, você pode usar o comando:\n\n```bash\ndotnet restore --force\n```\n\nIsso força uma nova restauração, baixando as versões mais recentes dos pacotes, conforme especificado nas configurações do projeto.\n\n## Testando o Código\n\nTestes são feitos usando os frameworks [Xunit](https://xunit.net/), [NUnit](https://nunit.org/) e [MSTest](https://github.com/microsoft/testfx).\n\nPara executar todos os testes, execute o seguinte comando na pasta raiz do projeto:\n\n```bash\ndotnet test\n```\n\nPara executar testes específicos, execute:\n\n```bash\ndotnet test \u003ccaminho_do_projeto\u003e\n```\n\nPara executar um teste específico por nome:\n\n```bash\ndotnet test --filter FullyQualifiedName~Namespace.TestClass.TestMethod\n```\n","funding_links":["https://github.com/sponsors/erismaroliveira","https://patreon.com/erismaroliveira"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feriscript%2Flearn-csharp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feriscript%2Flearn-csharp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feriscript%2Flearn-csharp/lists"}