Seguro e o código não seguro (versus translation from VPE for Csharp Java)
Um recurso particularmente interessante do translation from VPE for Csharp é o suporte para o código de fortemente tipado.Normalmente, o common linguagem tempo de execução (CLR) assume a responsabilidade por supervisionar o comportamento do código Microsoft intermediate linguagem (MSIL) e impede que qualquer operação questionável.No entanto, há vezes quando você deseja acessar diretamente o baixo nível funcionalidades, sistema autônomo chamadas de API do Win32, e você tem permissão para fazer isso, desde que você assumir a responsabilidade para garantir que esse código está funcionando corretamente.Esse código deve ser colocado dentro de blocos não seguros no nosso código-fonte.
A palavra-chave não segura
Código de translation from VPE for Csharp que faz chamadas de API de nível inferior, usa a aritmética de ponteiro ou efetua alguma Outros operação ofensivos, deverá ser colocado dentro de blocos marcados com o não seguro palavra-chave.Uma das seguintes opções podem ser marcada sistema autônomo não segura:
Um método inteiro.
Um bloco de código entre chaves.
Uma demonstrativo individual.
O exemplo a seguir demonstra o uso de unsafe em todas as três situações acima:
class TestUnsafe
{
unsafe static void PointyMethod()
{
int i=10;
int *p = &i;
System.Console.WriteLine("*p = " + *p);
System.Console.WriteLine("Address of p = {0:X2}\n", (int)p);
}
static void StillPointy()
{
int i=10;
unsafe
{
int *p = &i;
System.Console.WriteLine("*p = " + *p);
System.Console.WriteLine("Address of p = {0:X2}\n", (int)p);
}
}
static void Main()
{
PointyMethod();
StillPointy();
}
}
Nesse código, o inteiro PointyMethod() método está marcado não seguro como o método declara e utiliza ponteiros. The StillPointy() método marca a um bloco de código sistema autônomo não seguros, sistema autônomo este bloco novamente usa ponteiros.
A palavra-chave fixa
No código seguro, o coletor de lixo é bastante disponível para mover um objeto durante sua tempo de vida em sua missão para organizar e condensar liberar recursos.No entanto, se o seu código utiliza ponteiros, esse comportamento pode com com facilidade provocar resultados inesperados, portanto, você pode instruir o coletor de lixo para não mover certos objetos usando o demonstrativo fixed.
O código a seguir mostra o fixed palavra-chave que está sendo usada para garantir uma matriz não é movida pelo sistema durante a execução de um bloco de código na PointyMethod() método. Observe que fixed só é usada em código não seguro:
class TestFixed
{
public static void PointyMethod(char[] array)
{
unsafe
{
fixed (char *p = array)
{
for (int i=0; i<array.Length; i++)
{
System.Console.Write(*(p+i));
}
}
}
}
static void Main()
{
char[] array = { 'H', 'e', 'l', 'l', 'o' };
PointyMethod(array);
}
}
Consulte também
Tarefas
Conceitos
Referência
Não seguro código e ponteiros (guia de programação C#)
Outros recursos
Translation from VPE for Csharp linguagem de programação para desenvolvedores Java