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.
Se está a juntar a uma equipa que usa C#, ou a explorar C# para desenvolvimento do lado do servidor ou full-stack, este artigo ajudá-lo-á a tornar-se produtivo rapidamente. Destaca o que é familiar do JavaScript e do TypeScript e o que há de novo em C#.
C#, TypeScript e JavaScript são todos membros da família de linguagens C. As semelhanças entre as linguagens ajudam você a se tornar produtivo rapidamente em C#.
-
Sintaxe semelhante: JavaScript, TypeScript e C# estão na família C de linguagens. Essa semelhança significa que você já pode ler e entender C#. Existem algumas diferenças, mas a maior parte da sintaxe é semelhante à do JavaScript e à do C. As chaves e o ponto e vírgula são familiares. As instruções de controlo como
if,else, eswitchsão as mesmas. As afirmações em loop defor,while, edo...whilesão as mesmas. As mesmas palavras-chave paraclasseinterfaceestão em C# e TypeScript. Os modificadores de acesso em TypeScript e C#, depublicparaprivate, são os mesmos. -
O
=>token: Todas as linguagens suportam definições de funções simplificadas. Em C#, são referidas como expressões lambda. Em JavaScript, são normalmente chamadas de funções de seta. - Hierarquias de funções: Todas as três linguagens suportam funções locais, que são funções definidas em outras funções.
-
Async / Await: Todas as três linguagens compartilham o mesmo
asynceawaitpalavras-chave para programação assíncrona. - Coleta de lixo: Todos os três idiomas dependem de um coletor de lixo para gerenciamento automático de memória.
-
Modelo de evento: a sintaxe do
eventC# é semelhante ao modelo do JavaScript para eventos DOM (document object model). - Gestor de pacotes: O NuGet é o gestor de pacotes mais comum para C#, semelhante ao npm para aplicações JavaScript. As bibliotecas C# são entregues em assemblies.
Sintaxe num olhar
Os exemplos seguintes mostram alguns padrões comuns lado a lado. Estas comparações não são exaustivas, mas dão-te uma rápida noção das diferenças de sintaxe.
Anotações de tipo:
// TypeScript
let name: string = "Hello";
let count: number = 5;
// C#
string name = "Hello";
int count = 5;
Assíncrono / await:
// TypeScript
async function fetchData(): Promise<string> {
const response = await fetch(url);
return await response.text();
}
// C#
async Task<string> FetchDataAsync() {
var response = await client.GetAsync(url);
return await response.Content.ReadAsStringAsync();
}
Saiba mais: Programação assíncrona
Classes:
// TypeScript
class Point {
constructor(public x: number, public y: number) {}
}
// C#
record Point(int X, int Y);
Saiba mais: Recordes
Correspondência de padrões:
// TypeScript - manual type checking
if (typeof value === "string") { /* ... */ }
// C# - pattern matching
if (value is string s) { /* use s */ }
Saiba mais: Correspondência de padrões
Novidades para ti em C#
À medida que aprendes C#, deparas-te com conceitos que não fazem parte do JavaScript. Alguns desses conceitos podem ser familiares para você se você usar o TypeScript:
-
Sistema de Tipos C#: C# é uma linguagem com tipagem forte. Cada variável tem um tipo, e esse tipo não pode mudar. Você define tipos
classoustruct. Você pode definirinterfacedefinições que definem o comportamento implementado por outros tipos. O TypeScript inclui muitos desses conceitos, mas como o TypeScript é construído em JavaScript, o sistema de tipos não é tão rigoroso. -
Correspondência de padrões: a correspondência de padrões permite instruções e expressões condicionais concisas com base na forma de estruturas de dados complexas. A
isexpressão verifica se uma variável "é" algum padrão. A expressão baseada em padrões fornece uma sintaxe rica para inspecionar uma variável e tomar decisões com base em suas características. - Interpolação de cadeia de caracteres e literais de cadeia de caracteres brutos: a interpolação de cadeia de caracteres permite inserir expressões avaliadas em uma cadeia de caracteres, em vez de usar identificadores posicionais. Os literais de cadeia de caracteres brutos fornecem uma maneira de minimizar as sequências de escape no texto.
-
Tipos anuláveis e não anuláveis: C# suporta tipos de valor nulo e tipos de referência anuláveis ao adicionar o
?sufixo a um tipo. Para tipos anuláveis, o compilador avisa se você não verificarnullantes de desreferenciar a expressão. Para tipos não anuláveis, o compilador avisa se você pode estar atribuindo umnullvalor a essa variável. Esses recursos podem minimizar a ocorrência de um System.NullReferenceException. A sintaxe pode ser familiar devido ao uso do TypeScript de?para propriedades opcionais. - LINQ: Language Integrated query (LINQ) fornece uma sintaxe comum para consultar e transformar dados, independentemente de seu armazenamento.
Sugestão
Para saber mais sobre o sistema de tipos de C# — incluindo class vs struct. , genéricos e interfaces — visite a visão geral do sistema de tipos na secção Fundamentos.
À medida que se aprende mais, outras diferenças tornam-se evidentes, mas muitas dessas diferenças são menores em abrangência.
Alguns recursos e expressões idiomáticas familiares do JavaScript e do TypeScript não estão disponíveis em C#:
-
tipos dinâmicos: C# usa digitação estática. Uma declaração de variável inclui o tipo, e esse tipo não pode ser alterado. Existe um tipo
dynamicem C# que oferece vinculação em tempo de execução. -
Herança prototípica: a herança C# faz parte da declaração de tipo. Uma declaração C#
classindica qualquer classe base. No JavaScript, defines a__proto__propriedade para definir o tipo base em qualquer instância. - Linguagem interpretada: o código C# deve ser compilado antes de ser executado. O código JavaScript pode ser executado diretamente no navegador.
Além disso, mais alguns recursos do TypeScript não estão disponíveis em C#:
- Tipos de união: C# não suporta tipos de união. No entanto, estão em curso propostas de conceção.
-
Decoradores: C# não tem decoradores. Alguns decoradores comuns, como
@sealedsão palavras-chave reservadas em C#. Outros decoradores comuns podem ter atributos correspondentes. Para outros decoradores, você pode criar seus próprios atributos. - Sintaxe mais tolerante: O compilador C# analisa o código mais estritamente do que o JavaScript exige.
Se está a construir uma aplicação web, considere usar o Blazor para construir a sua aplicação. Blazor é uma framework web full-stack construída para C#. Os componentes Blazor podem ser executados no servidor, como assemblies .NET, ou no cliente usando WebAssembly. Blazor suporta interoperabilidade com suas bibliotecas favoritas JavaScript ou TypeScript.
Próximos passos
- Uma visita guiada a C#: Obtenha uma visão geral de todas as funcionalidades de C#.
- Tutoriais para iniciantes: Aprende C# passo a passo com aulas interativas.
- O que podes construir com C#: Explora os tipos de aplicações que podes criar com C#.
- Fundamentos de C#: Aprofunde-se no sistema de tipos, programação orientada a objetos e muito mais.