Visão geral da biblioteca de classes do .NET
As APIs do .NET incluem classes, interfaces, delegados e tipos de valor que agilizam e otimizam o processo de desenvolvimento e dão acesso à funcionalidade do sistema. Para facilitar a interoperabilidade entre linguagens, os tipos do .NET têm conformidade com CLS e, assim, podem ser usados por qualquer linguagem de programação cujo compilador esteja de acordo com a CLS (Common Language Specification).
Os tipos do .NET são a base na qual os aplicativos, os componentes e os controles do .NET são criados. O .NET inclui tipos que executam as seguintes funções:
- Representam tipos de dados base e exceções.
- Encapsulam estruturas de dados.
- Executam E/S.
- Acessam informações sobre tipos carregados.
- Invocam verificações de segurança do .NET.
- Fornecem acesso a dados, uma GUI detalhada do lado do cliente e uma GUI do lado do cliente controlada pelo servidor.
O .NET fornece um conjunto avançado de interfaces, bem como classes abstratas e concretas (não abstratas). Você pode usar as classes concretas no estado em que se encontram ou, em muitos casos, pode derivar suas próprias classes delas. Para usar a funcionalidade de uma interface, você pode criar uma classe que implementa a interface ou derivar uma classe de uma das classes do .NET que implementa a interface.
Convenções de nomenclatura
Os tipos do .NET usam um esquema de nomenclatura de sintaxe por ponto que denota uma hierarquia. Essa técnica agrupa tipos relacionados em namespaces para que eles possam ser pesquisados e referenciados com mais facilidade. A primeira parte do nome completo (até o ponto mais à direita) é o nome do namespace. A última parte do nome é o nome do tipo. Por exemplo, System.Collections.Generic.List<T>
representa o tipo List<T>
, que pertence ao namespace System.Collections.Generic
. Os tipos em System.Collections.Generic podem ser usados para trabalhar com coleções genéricas.
Esse esquema de nomenclatura facilita para desenvolvedores de bibliotecas estender o .NET para criar grupos hierárquicos de tipos e nomeá-los de maneira consistente e informativa. Ele também permite que tipos sejam identificados sem ambiguidades por seu nome completo (ou seja, pelo namespace e pelo nome de tipo), o que impede conflitos de nomes de tipo. Os desenvolvedores de bibliotecas devem usar a seguinte convenção para criar nomes para seus namespaces:
CompanyName.TechnologyName
Por exemplo, o namespace Microsoft.Word
segue esta diretriz.
O uso de padrões de nomenclatura para agrupar tipos relacionados em namespaces é um modo útil de compilar e documentar bibliotecas de classes. No entanto, esse esquema de nomenclatura não afeta visibilidade, acesso a membro, herança, segurança ou associação. Um namespace pode ser particionado em vários assemblies e um único assembly pode conter tipos de vários namespaces. O assembly fornece a estrutura formal para criação de versão, implantação, segurança, carregamento e visibilidade no Common Language Runtime.
Para obter mais informações sobre namespaces e nomes de tipos, consulte Common Type System.
namespace System
O System é o namespace raiz para tipos fundamentais no.NET. Esse namespace contém classes que representam os tipos de dados base usados por todos os aplicativos, por exemplo, Object (a raiz da hierarquia de herança), Byte, Char, Array, Int32 e String. Muitos desses tipos correspondem aos tipos de dados primitivos que sua linguagem de programação usa. Ao gravar códigos usando tipos .NET, você pode usar a palavra-chave correspondente da sua linguagem quando um tipo de dados base do .NET é esperado.
A tabela a seguir lista os tipos base que o .NET fornece, descreve resumidamente cada tipo e indica o tipo correspondente em Visual Basic, C#, C++ e F#.
Categoria | Nome da classe | Descrição | Tipo de dados do Visual Basic | Tipo de dados em C# | Tipo de dados de C++/CLI | Tipo de dados de F# |
---|---|---|---|---|---|---|
Integer | Byte | Um inteiro de 8 bits sem sinal. | Byte |
byte |
unsigned char |
byte |
SByte | Um inteiro com sinal de 8 bits. Não compatível com CLS. |
SByte |
sbyte |
char ou signed char |
sbyte |
|
Int16 | Um inteiro de 16 bits com sinal. | Short |
short |
short |
int16 |
|
Int32 | Um inteiro com sinal de 32 bits. | Integer |
int |
int ou long |
int |
|
Int64 | Um inteiro com sinal de 64 bits. | Long |
long |
__int64 |
int64 |
|
UInt16 | Um inteiro sem sinal de 16 bits. Não compatível com CLS. |
UShort |
ushort |
unsigned short |
uint16 |
|
UInt32 | Um inteiro sem sinal de 32 bits. Não compatível com CLS. |
UInteger |
uint |
unsigned int ou unsigned long |
uint32 |
|
UInt64 | Um inteiro sem sinal de 64 bits. Não compatível com CLS. |
ULong |
ulong |
unsigned __int64 |
uint64 |
|
Ponto flutuante | Half | Um número de ponto flutuante de meia precisão (16 bits). | ||||
Single | Um número de ponto flutuante de precisão simples (32 bits). | Single |
float |
float |
float32 ou single |
|
Double | Um número de ponto flutuante de precisão dupla (64 bits). | Double |
double |
double |
float ou double |
|
Lógico | Boolean | Um valor booliano (verdadeiro ou falso). | Boolean |
bool |
bool |
bool |
Outro | Char | Um caractere Unicode (16 bits). | Char |
char |
wchar_t |
char |
Decimal | Um valor decimal (128 bits). | Decimal |
decimal |
Decimal |
decimal |
|
IntPtr | Um inteiro com sinal cujo tamanho dependa da plataforma subjacente (um valor de 32 bits em uma plataforma de 32 bits e um valor de 64 bits em uma plataforma de 64 bits). | nint |
unativeint |
|||
UIntPtr | Um inteiro sem sinal cujo tamanho dependa da plataforma subjacente (um valor de 32 bits em uma plataforma de 32 bits e um valor de 64 bits em uma plataforma de 64 bits). Não compatível com CLS. |
nuint |
unativeint |
|||
Object | A raiz da hierarquia do objeto. | Object |
object |
Object^ |
obj |
|
String | Uma cadeia de caracteres Unicode imutável e de comprimento fixo. | String |
string |
String^ |
string |
Além dos tipos de dados base, o namespace System contém mais de 100 classes, que vão desde classes que identificam exceções até classes que lidam com os conceitos de runtime, como domínios de aplicativo e o coletor de lixo. O namespace System também contém vários namespaces de segundo nível.
Para obter mais informações sobre namespaces, use o Navegador de API do .NET para procurar a Biblioteca de classes do .NET. A documentação de referência de API fornece informações sobre cada namespace, seus tipos e cada um dos seus membros.
Estruturas de dados
O .NET inclui um conjunto de estruturas de dados que são a base de muitos aplicativos .NET. Elas são em sua maioria coleções, mas também incluem outros tipos.
- Array - Representa uma matriz de objetos fortemente tipados que podem ser acessados por índice. Tem um tamanho fixo, de acordo com sua construção.
- List<T> – representa uma lista fortemente tipada de objetos que podem ser acessados por índice. É redimensionado automaticamente conforme necessário.
- Dictionary<TKey,TValue> – representa uma coleção de valores que são indexados por uma chave. Os valores podem ser acessados via chave. É redimensionado automaticamente conforme necessário.
- Uri – fornece uma representação de objeto de um URI (Uniform Resource Identifier) e fácil acesso às partes do URI.
- DateTime – representa um momento no tempo, geralmente expresso como uma data e hora do dia.
APIs utilitárias
O .NET inclui um conjunto de APIs utilitárias que fornecem funcionalidade para várias tarefas importantes.
- HttpClient – uma API para enviar solicitações HTTP e receber respostas HTTP de um recurso identificado por um URI.
- XDocument - Uma API para carregar e consultar documentos XML com o LINQ.
- StreamReader – uma API para ler arquivos.
- StreamWriter – uma API para gravar arquivos.
APIs do modelo de aplicativo
Muitos modelos de aplicativo podem ser usados com o .NET, por exemplo:
- ASP.NET – uma estrutura da Web para a criação de sites e serviços Web. Suporte para Windows, Linux e macOS (depende de versão do ASP.NET).
- .NET MAUI – uma plataforma de aplicativo para a criação de aplicativos nativos executados no Windows, macOS, iOS e Android usando C#.
- Área de Trabalho do Windows – Inclui Windows Presentation Foundation (WPF) e Windows Forms.