Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Adres wyrażenia niefiksowanego można pobrać tylko wewnątrz stałego inicjatora instrukcji
Aby uzyskać więcej informacji, zobacz Niebezpieczny kod i wskaźniki.
W poniższym przykładzie pokazano, jak pobrać adres niefiksowanego wyrażenia. Poniższy przykład generuje plik CS0212.
// CS0212a.cs
// compile with: /unsafe /target:library
public class A {
public int iField = 5;
unsafe public void M() {
A a = new A();
int* ptr = &a.iField; // CS0212
}
// OK
unsafe public void M2() {
A a = new A();
fixed (int* ptr = &a.iField) {}
}
}
Poniższy przykład generuje również plik CS0212 i pokazuje, jak usunąć błąd:
// CS0212b.cs
// compile with: /unsafe /target:library
using System;
public class MyClass
{
unsafe public void M()
{
// Null-terminated ASCII characters in an sbyte array
sbyte[] sbArr1 = new sbyte[] { 0x41, 0x42, 0x43, 0x00 };
sbyte* pAsciiUpper = &sbArr1[0]; // CS0212
// To resolve this error, delete the previous line and
// uncomment the following code:
// fixed (sbyte* pAsciiUpper = sbArr1)
// {
// String szAsciiUpper = new String(pAsciiUpper);
// }
}
}
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię: