Criando uma nova solução:
dotnet new sln --name DotnetForJavaDevs
Criando um projeto de console application:
dotnet new console --name DotnetForJavaDevs.ConsoleApp --output ./src/DotnetForJavaDevs.ConsoleApp
Vinculando o projeto a solução:
dotnet sln add src/DotnetForJavaDevs.ConsoleApp
Dica valiosa: se você não sabe os parâmetros que um comando de CLI espera sempre teste os parametros
-h
,--help
ou apenashelp
.
Criando um projeto de class library e vinculando a solução:
dotnet new classlib --name DotnetForJavaDevs.Domain --output ./src/DotnetForJavaDevs.Domain
dotnet sln add ./src/DotnetForJavaDevs.Domain
Adicionando um .gitignore
:
dotnet new gitignore
- PascalCase (exceto para campos privados)
- Chaves na próxima linha
public static void Main (string[] args)
{
// Compilador infere o tipo de a como int
var a = 1;
// Compilador trata como tipo dinâmico (como em JavaScript)
dynamic b = new { A = "" };
// Compilador cria um tipo anônimo, mas conhece o tipo
var c = new { A = "" };
b.Qualquer(); // Erro em runtime
}
Dica: Evite utilizar
dynamic
, não é considerado boa prática.
Built-in Getters e setters 💖
class Veiculo
{
public string Chassis { get; set; }
}
string nome = "Joaquim";
string outroNome = "Pedro";
if (nome == outroNome)
{
Console.WriteLine("Nomes são iguais!")
}
- Assincronismo != paralelismo
- Task Parallel Library
- Utilizado quando alguma chamada para IO. Exemplos:
- Acesso a Banco de dados
- Requisição HTTP
- Leitura e escrita de arquivos
public static class StringExtensions
{
public static string ToPascalCase(this string str)
=> CultureInfo.CurrentCulture.TextInfo.ToTitleCase(str);
}
public static void Main (string[] args) {
int meuInt = default(int);
int? meuIntNulo = default(int?);
Console.WriteLine(meuInt == 0);
Console.WriteLine(meuIntNulo == null);
}
public void MeuMetodo()
{
throw new ArgumentException("Não preciso informar que estou lançando uma exceção!");
}
- Enumeração
- Por padrão, por baixo dos panos, trata-se de um conjunto de constantes de inteiros (
int
).
public enum Status
{
EmProducao = 1,
Pendente = 2,
QuaseChegando = 3,
IhhVaiDemorar = 4
}
Não existe 😢