BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Futuro do C#: Ponteiro Math

Futuro do C#: Ponteiro Math

A interoperabilidade com plataformas nativas geralmente requer padrões de codificação muito específicos que envolvem a manipulação de ponteiros. Embora isso possa ser feito por meio de um fundamento escrito em C, a proposta intitulada Operadores devem ser expostos pelo System.IntPtr e System.UIntPtr procura oferecer essa capacidade diretamente em C#.

A capacidade de manipular diretamente os ponteiros sempre fez parte do Common Language Runtime (CLR). Como o nome sugere, o CLR foi projetado para suportar uma ampla variedade de idiomas, incluindo linguagens de "baixo nível", como C++. Como tal, inclui coisas não consideradas necessárias pelas linguagens originais do .NET: VB, C#, J# e JScript.NET (as duas últimas não são mais oferecidas).

Quatorze operadores são cobertos por esta proposta: Adicionar, Dividir, Multiplicar, Restringir, Subtrair, Negar, Igual, Comparar, E, Não, Ou, XOr, ShiftLeft, ShiftRight. A proposta afirma: "Os operadores não verificáveis definidos pelas especificações do CLI não são listados e não fazem parte da presente proposta (embora possa valer a pena considerá-los também)".

Esta declaração não é elaborada, embora esta passagem do padrão CLI explique o significado de "verificável",

A diferença entre o código de tipo seguro e o código verificável é uma das probabilidades: o código que passa pelo algoritmo de verificação do VES é, por definição, verificável; mas esse algoritmo simples rejeita determinado código, mesmo que uma análise mais profunda o revele como genuinamente seguro para o tipo. Observe que mesmo que um programa siga a sintaxe descrita na Partição VI, o código ainda pode não ser válido, porque o código válido deve aderir às restrições apresentadas nesta Partição e na Partição III.

O processo de verificação é muito rigoroso. Existem muitos programas que passaram na validação, mas falharam na verificação. O VES não pode garantir que esses programas não acessem memória ou recursos aos quais não têm acesso. No entanto, eles podem ter sido construídos corretamente para que não acessem esses recursos. É, portanto, uma questão de confiança, e não de prova matemática, se é seguro executar esses programas. Normalmente, uma implementação em conformidade da CLI pode permitir que um código não verificável (código válido que não passa na verificação) seja executado, embora isso possa estar sujeito a controles de confiança administrativos que não fazem parte desse padrão. Uma implementação conforme da CLI deve permitir a execução de código verificável, embora isso possa estar sujeito a controles de confiança adicionais especificados pela implementação.

Presumivelmente, essas operações só seriam permitidas em um contexto inseguro. No entanto, a proposta não indica isso explicitamente.

Como com outros recursos em nossa série C# Futuro, esta proposta está sob consideração e ainda não faz parte do roteiro C#.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT