Latest web development tutorials

Kod C # niebezpieczne

Kiedy blok kodu przy użyciuniebezpiecznego tag modyfikujący, C # pozwala na użycie zmiennej wskaźnik w tej funkcji.niebezpieczny kod lub kod niekontrolowana jest użycie zmiennej Kod blokuwskaźnika.

zmienna Pointer

Wskaźnik jest zmienną wartość adres innej zmiennej, czyli bezpośredni adres miejsca w pamięci.Podobnie jak inne zmienne lub stałe, należy użyć wskaźnika przed innej zmiennej przechowywania deklaracji wskaźnika adresu.

Ogólna postać deklaracji zmiennej wskaźnik jest:

Typ * var-name;

Poniżej znajduje się nieważny wskaźnik:

int * ip; / * punktów do liczby całkowitej * /
double * dp / * wskaźnik do liczby podwójnej precyzji * /
unosić * fp; / * wskaźnik do pływaka * /
char * ch / * wskaźnik do char * /

Poniższy przykład ilustruje zastosowanie C # wykorzystanianiebezpiecznych modyfikatora, gdy wskaźnik:

using System;
nazw UnsafeCodeApplication
{
    Program klasy
    {
        statyczne niebezpieczne void main (String [] args)
        {
            int zmienna = 20;
            int * p = & var;
            Console.WriteLine ( "Dane są: {0}", zmienna);
            Console.WriteLine ( "Adres to: {0}", (int) p);
            Console.ReadKey ();
        }
    }
}

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

Dane są: 20
Adres: 99215364

Nie można zadeklarować całą metodę jako niebezpieczny kod, tylko w części należy zadeklarować metodę jako niebezpieczny kod. Poniższy przykład ilustruje ten punkt.

Pobieranie wartości danych za pomocą wskaźnika

Można użyć metodytoString () danych położenia odniesienia przechowywane w wyszukiwawczych zmiennych wskaźnikowych.Poniższy przykład ilustruje ten punkt:

using System;
nazw UnsafeCodeApplication
{
   Program klasy
   {
      public static void main ()
      {
         niebezpieczny
         {
            int zmienna = 20;
            int * p = & var;
            Console.WriteLine ( "Dane są: {0}", zmienna);
            Console.WriteLine ( "Dane są: {0}", p> toString ());
            Console.WriteLine ( "Adres to: {0}", (int) p);
         }
         Console.ReadKey ();
      }
   }
}

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

Dane są: 20
Dane są: 20
Adres: 77128984

Przechodząc wskaźnik jako parametr metody

Możesz przekazać zmienną wskaźnik jako parametr do metody podejścia. Poniższy przykład ilustruje ten punkt:

using System;
nazw UnsafeCodeApplication
{
   Klasa TestPointer
   {
      publicznego niebezpieczne void zamiana (int * p, int q *)
      {
         Int temp = * p;
         * P * = q;
         * P = temp;
      }

      publicznego niebezpieczne static void Main ()
      {
         TestPointer p = new TestPointer ();
         int var1 = 10;
         int var2 = 20;
         int * x = & zm1;
         int * y = & var2;
         
         Console.WriteLine ( "Przed swap: var1: {0}, var2: {1}", zm1, var2);
         p.swap (x, y);

         Console.WriteLine ( "Po swap: var1: {0}, var2: {1}", zm1, var2);
         Console.ReadKey ();
      }
   }
}

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

Przed wymiany: var1: 10, var2: 20
Po wymiany: var1: 20, var2: 10

Użyj wskazówek, aby uzyskać dostęp do elementów tablicy

W języku C #, nazwa tablicy i wskaźnik do danych tablicowych z tym samym typem danych jest wskaźnikiem do różnych typów zmiennych. Na przykład, int * p i int [] p jest innego typu. Można zwiększyć zmienny wskaźnik p, bo to nie jest ustalona w pamięci, ale adres tablicy jest ustalana w pamięci, więc nie można dodać do tablicy s.

Tak więc, jeśli trzeba użyć zmiennych wskaźnika do uzyskania dostępu do danych tablicowych, jak zwykle robimy w C lub C ++, jak słowo aby użyćstałego ustalonego wskaźnika.

Poniższy przykład ilustruje ten punkt:

using System;
nazw UnsafeCodeApplication
{
   Klasa TestPointer
   {
      publicznego niebezpieczne static void Main ()
      {
         int [] = {lista 10, 100, 200};
         stałe (int * ptr = lista)

         / * Wyświetla wskaźnik adresu tablicy * /
         for (int i = 0; i <3; i ++)
         {
            Console.WriteLine ( "Adres listy [{0}] = {1}", I, (int) (ptr + i));
            Console.WriteLine ( "Wartość listy [{0}] = {1}", I, * (ptr + i));
         }
         Console.ReadKey ();
      }
   }
}

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

Adres listy [0] = 31627168
Wartość listy [0] = 10
Adres listy [1] = 31627172
Wartość listy [1] = 100
Adres listy [2] = 31627176
Wartość listy [2] = 200

Kompilacji kodu niebezpieczny

W celu zestawienia niebezpieczny kod, należy przejść do wiersza poleceń kompilatora określić linię/ niebezpieczne polecenia.

Na przykład, aby skompilować program o nazwie prog1.cs zawierać niebezpieczny kod, wprowadź polecenie w wierszu poleceń:

CSC / niebezpieczne prog1.cs

Jeśli używasz Visual Studio IDE, musisz włączyć niebezpieczny kod we właściwościach projektu.

Procedura jest następująca:

  • Przez Explorer (Solution Explorer) atrybutów (właściwości) węzła podwójne kliknięcie otwórzwłaściwości projektu (Project Properties).
  • Kliknij kartębudować.
  • Wybierz opcję"Zezwalaj niebezpieczny kod".