Unsafe.AsRef Yöntem

Tanım

Aşırı Yüklemeler

AsRef<T>(Void*)

Yönetilmeyen bir işaretçiyi, türünde Tbir değere yönetilen işaretçiye dönüştürür.

AsRef<T>(T)

Verilen salt okunur başvuruyu değiştirilebilir başvuru olarak yeniden yorumlar.

AsRef<T>(Void*)

Kaynak:
Unsafe.cs
Kaynak:
Unsafe.cs
Kaynak:
Unsafe.cs

Önemli

Bu API, CLS uyumlu değildir.

Yönetilmeyen bir işaretçiyi, türünde Tbir değere yönetilen işaretçiye dönüştürür.

public static ref T AsRef<T> (void* source);
[System.CLSCompliant(false)]
public static ref T AsRef<T> (void* source);

Tür Parametreleri

T

Yönetilen işaretçinin öğe türü.

Parametreler

source
Void*

Dönüştürülecek yönetilmeyen işaretçi.

Döndürülenler

T

türünde Tbir değerin yönetilen işaretçisi.

Öznitelikler

Açıklamalar

Çağıran, sonuçta elde edilen yönetilen işaretçinin başvuruda bulunan tür için düzgün hizalandığından emin olmayı sağlar. Hizalama gereksinimleri hakkında daha fazla bilgi için bkz. ECMA-335, Sn. I.12.6.2 ("Hizalama").

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.7 (package-provided), 4.7.1 (package-provided), 4.7.2 (package-provided), 4.8 (package-provided)
.NET Standard 2.0 (package-provided)

AsRef<T>(T)

Kaynak:
Unsafe.cs
Kaynak:
Unsafe.cs
Kaynak:
Unsafe.cs

Verilen salt okunur başvuruyu değiştirilebilir başvuru olarak yeniden yorumlar.

public static ref T AsRef<T> (in T source);
public static ref T AsRef<T> (scoped in T source);
public static ref T AsRef<T> (scoped ref T source);
public static ref T AsRef<T> (ref T source);

Tür Parametreleri

T

Başvurunun temel türü.

Parametreler

source
T

Yeniden yoruma salt okunur başvuru.

Döndürülenler

T

türünde Tbir değere değiştirilebilir başvuru.

Açıklamalar

Bu API kavramsal olarak C++'nın const_cast<>öğesine benzer. Başvuruda bulunan konuma hiçbir veri yazılmamasını sağlamak çağıranın sorumluluğundadır. Çalışma zamanı, salt okunur başvuruların gerçekten sabit olduğu varsayımı üzerine önceden belirlenmiş iç mantık içerir ve bu sabiti ihlal eden çağıranlar çalışma zamanı içinde tanımsız davranış tetikleyebilir.

AsRef genellikle gibi bağımsız değişken olarak değiştirilebilir yönetilen işaretçileri Addkabul eden yöntemlere salt okunur başvuru geçirmek için kullanılır. Aşağıdaki örneği inceleyin.

int ComputeSumOfElements(ref int refToFirstElement, nint numElements)
{
  int sum = 0;
  for (nint i = 0; i < numElements; i++)
  {
    sum += Unsafe.Add(ref refToFirstElement, i);
  }
}

Giriş parametresi yerine ref int refToFirstElementiseref readonly int refToFirstElement, salt okunur başvurular bağımsız değişken Addolarak kullanılamadığından önceki örnek derlenmez. Bunun yerine, AsRef aşağıdaki örnekte gösterildiği gibi değişmezlik kısıtlamasını kaldırmak ve derlemenin başarılı olmasını sağlamak için kullanılabilir.

int ComputeSumOfElements(ref readonly int refToFirstElement, nint numElements)
{
  int sum = 0;
  for (nint i = 0; i < numElements; i++)
  {
    sum += Unsafe.Add(ref Unsafe.AsRef(ref refToFirstElement), i);
  }
}

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.7 (package-provided), 4.7.1 (package-provided), 4.7.2 (package-provided), 4.8 (package-provided)
.NET Standard 2.0 (package-provided)