Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Sugestão
Novo no desenvolvimento de software? Começa primeiro pelos tutoriais para começar . Eles guiam-te como escrever os teus primeiros programas de C# antes de aprenderes sobre a estrutura do programa.
Experiente noutra língua? Talvez queiras dar uma vista de olhos à secção Começar para a sintaxe específica de C# e depois voltar aqui.
Constróis programas em C# a partir destes blocos de construção essenciais: os namespaces organizam os teus tipos, tipos (classes, structs, interfaces, enums e delegados), definem comportamento e dados, e as instruções e expressões realizam trabalho em tempo de execução. A forma como estruturas o ponto de entrada depende do estilo de aplicação que escolheres.
Escolher o seu estilo de candidatura
Quando criares um programa C#, faz duas escolhas independentes sobre como o estruturar:
-
Baseado em ficheiros ou em projetos?
- Uma aplicação baseada em ficheiros corre a partir de um único
.csficheiro sem ficheiro de projeto. - Uma aplicação baseada em projetos utiliza um
.csprojficheiro e pode abranger vários ficheiros fonte.
- Uma aplicação baseada em ficheiros corre a partir de um único
-
Declarações de nível superior ou
Mainmétodo?- As instruções de topo permitem-lhe escrever código executável diretamente no topo de um ficheiro.
- Um
Mainmétodo envolve o ponto de entrada num método estático explícito.
Tanto as aplicações baseadas em projetos como as baseadas em ficheiros suportam qualquer um dos estilos de entrada.
Aplicações baseadas em ficheiros vs. aplicações baseadas em projetos
A partir do C# 14 e .NET 10, as aplicações baseadas em ficheiros permitem executar um programa contido num único *.cs ficheiro sem um ficheiro de projeto. Armazene o seguinte código num ficheiro nomeado hello-world.cs e execute-o com dotnet run hello-world.cs ou dotnet hello-world.cs:
#!/usr/bin/env dotnet
Console.WriteLine("Hello, World!");
Observação
A #! linha permite que os sistemas operativos Unix executem o ficheiro diretamente (por exemplo, ./hello-world.cs). Isto requer que a permissão de execução seja definida (chmod +x <file>).
As aplicações baseadas em ficheiros suportam toda a sintaxe C# e podem usar diretivas de pré-processador para configurar o sistema de compilação. Use aplicações baseadas em ficheiros para pequenas utilidades de linha de comandos, protótipos e experiências. Uma aplicação baseada em ficheiros consiste num único ficheiro num diretório:
my-app/
└── hello-world.cs
As aplicações baseadas em projetos usam um .csproj ficheiro e os comandosdotnet new da CLI .NET, dotnet build, e dotnet run fluxo de trabalho. Escolha aplicações baseadas em projetos quando o seu programa abranger vários ficheiros ou precisar de uma configuração de compilação detalhada. Uma aplicação baseada em projetos inclui um ficheiro de projeto juntamente com um ou mais ficheiros fonte:
my-app/
├── my-app.csproj
├── Program.cs
├── Models/
│ └── Person.cs
└── Services/
└── GreetingService.cs
Se a sua aplicação baseada em ficheiros crescer, pode facilmente convertê-la numa aplicação baseada em projetos. Execute dotnet project convert para gerar um ficheiro de projeto a partir do seu ficheiro fonte existente.
Se souber desde o início que a sua aplicação precisa de vários ficheiros fonte, comece por uma aplicação baseada em projetos. Evita a etapa de conversão e pode organizar o seu código em ficheiros separados imediatamente.
Declarações de nível superior vs. Main método
Ao usar instruções de topo, pode escrever código executável diretamente num ficheiro sem o envolver numa classe e Main método. Este estilo é o padrão quando crias uma nova aplicação de consola com dotnet new console. O exemplo seguinte mostra um programa moderno em C# que utiliza instruções de topo:
Console.WriteLine("Hello, World!");
namespace YourNamespace
{
class YourClass
{
}
struct YourStruct
{
}
interface IYourInterface
{
}
delegate int YourDelegate();
enum YourEnum
{
}
}
Apenas um ficheiro num projeto pode ter instruções de topo, e o ponto de entrada é a primeira linha de texto do programa nesse ficheiro. À medida que constróis programas maiores, vais incluindo mais elementos de programa.
Também pode definir um método estático Main explícito como ponto de entrada do programa:
// A skeleton of a C# program using an explicit Main method
namespace YourNamespace;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
Ambos os estilos de ponto de entrada funcionam com aplicações baseadas em ficheiros e em projetos. Ambos os estilos suportam as mesmas características.
Criando e executando programas em C#
C# é uma linguagem compilada . Para aplicações baseadas em projetos, use o dotnet build comando para compilar ficheiros de origem num pacote binário. Utilize dotnet run para construir e executar num só passo. A dotnet CLI, incluída no SDK .NET, fornece muitas ferramentas para criar, construir e gerir projetos em C#.
Para aplicações baseadas em ficheiros, dotnet run hello-world.cs compila e executa o ficheiro único diretamente – não é necessário ficheiro de projeto.
Expressões e declarações
Se seguiste os tutoriais para começar , já escreveste expressões e declarações. Cada linha de código que escrevias era uma ou outra (ou ambas). Agora vamos definir esses termos.
Expressões e instruções são os blocos fundamentais de um programa C#. Uma expressão produz um valor. Uma instrução executa uma ação e normalmente termina em ponto e vírgula.
As seguintes são expressões:
-
42(valor literal) -
x + y(operação aritmética) -
Math.Max(a, b)(chamada de método que produz um valor) -
condition ? trueValue : falseValue(expressão condicional) -
new Person("John")(criação de objetos)
Uma instrução executa uma ação. As instruções controlam o fluxo do programa, declaram variáveis ou invocam operações. Seguem-se as afirmações:
-
int x;(declaração) -
int x = 42;(declaração com inicialização) -
Console.WriteLine("Hello");(instrução de chamada de método) -
if (condition) { /* code */ }(declaração condicional) -
return result;(declaração de retorno)
As declarações frequentemente contêm expressões, e as expressões podem inserir-se noutras expressões. Por exemplo, a seguinte declaração atribui f ao resultado de uma expressão de adição. Essa expressão de adição soma os resultados de duas expressões de chamadas de método:
var maxResult = Math.Max(a, b) + Math.Max(c, d);
Para obter informações detalhadas sobre declarações, consulte Declarações. Para informações sobre membros com corpo expressivo, veja Membros com corpo expressivo.