Najlepszy samouczek Kod C # niebezpieczne W 2024 r. W tym samouczku możesz dowiedzieć się zmienna Pointer,Pobieranie wartości danych za pomocą wskaźnika,Przechodząc wskaźnik jako parametr metody,Użyj wskazówek, aby uzyskać dostęp do elementów tablicy,Kompilacji kodu niebezpieczny,
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.
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.
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
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
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
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: