UIntPtr 結構
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
重要
此 API 不符合 CLS 規範。
表示不帶正負號的整數,其中位寬度與指標相同。
public value class UIntPtr
public value class UIntPtr : System::Runtime::Serialization::ISerializable
public value class UIntPtr : IEquatable<UIntPtr>, System::Runtime::Serialization::ISerializable
[System.CLSCompliant(false)]
public struct UIntPtr
[System.CLSCompliant(false)]
[System.Serializable]
public struct UIntPtr : System.Runtime.Serialization.ISerializable
[System.CLSCompliant(false)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public struct UIntPtr : System.Runtime.Serialization.ISerializable
[System.CLSCompliant(false)]
public struct UIntPtr : System.Runtime.Serialization.ISerializable
[System.CLSCompliant(false)]
public readonly struct UIntPtr : IEquatable<UIntPtr>, System.Runtime.Serialization.ISerializable
[<System.CLSCompliant(false)>]
type unativeint = struct
[<System.CLSCompliant(false)>]
[<System.Serializable>]
type unativeint = struct
interface ISerializable
[<System.CLSCompliant(false)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type unativeint = struct
interface ISerializable
[<System.CLSCompliant(false)>]
type unativeint = struct
interface ISerializable
Public Structure UIntPtr
Public Structure UIntPtr
Implements ISerializable
Public Structure UIntPtr
Implements IEquatable(Of UIntPtr), ISerializable
- 繼承
- 屬性
- 實作
備註
該 UIntPtr 型別設計為大小與指標相同的整數。 也就是說,此類型的實例預期為32位進程中的32位,而64位進程則為64位。
此 UIntPtr 型別可用於支援指標的語言,也可作為支援指標與不支援指標語言間資料的常見參考方式。 UIntPtr 物品也可以用來握把手。
Note
作為 UIntPtr 指標或柄使用容易出錯且不安全。 它只是整數類型,因為大小相同,可用來做為指標和句柄的交換格式。 除了特定交換需求外,例如將資料傳遞給不支援指標的語言,應該使用正確型別的指標來表示指標,並 SafeHandle 用來表示句柄。
此類型實 ISerializable作 。 在 .NET 5 及以後版本中,此類型也實作了 IFormattable 介面。 在 .NET 7 及以後版本中,此類型也實作了 IBinaryInteger<TSelf>、IMinMaxValue<TSelf> 以及 IUnsignedNumber<TSelf> 介面。
在 C# 從 9.0 版本開始,你可以使用內建 nuint 型別來定義原生大小的整數。 此型別由 UIntPtr 內部型別表示,並提供適合整數型別的操作與轉換。 更多資訊請參見 nint 和 nuint 類型。
在 C# 從版本 11 開始,針對 .NET 7 或更新執行時,nuint 是 UIntPtr 的別名,就像 uint 是 UInt32 的別名一樣。
建構函式
| 名稱 | Description |
|---|---|
| UIntPtr(UInt32) |
使用指定的 32 位元無符號整數初始化結構的新實例 UIntPtr 。 |
| UIntPtr(UInt64) |
初始化使用指定 64 位元無符號整數的新實例 UIntPtr 。 |
| UIntPtr(Void*) |
初始化使用指定指標指向未指定型態的新實例 UIntPtr 。 |
欄位
| 名稱 | Description |
|---|---|
| Zero |
只讀欄位,表示已初始化為零的不帶正負號整數。 |
屬性
| 名稱 | Description |
|---|---|
| Size |
取得這個實例的大小。 |
方法
| 名稱 | Description |
|---|---|
| Add(UIntPtr, Int32) |
將位移加入至不帶正負號的整數。 |
| Equals(Object) |
傳回值,指出這個實例是否等於指定的物件。 |
| GetHashCode() |
傳回這個實例的哈希碼。 |
| Subtract(UIntPtr, Int32) |
從不帶正負號的整數減去位移。 |
| ToPointer() |
將這個實例的值轉換為未指定類型的指標。 |
| ToString() |
將這個實例的數值轉換為其相等的字串表示。 |
| ToUInt32() |
將這個實例的值轉換為32位無符號整數。 |
| ToUInt64() |
將這個實例的值轉換為64位無符號整數。 |
操作員
| 名稱 | Description |
|---|---|
| Addition(UIntPtr, Int32) |
將位移加入至不帶正負號的整數。 |
| Equality(UIntPtr, UIntPtr) |
判斷兩個指定的 實 UIntPtr 例是否相等。 |
| Explicit(UInt32 to UIntPtr) |
將一個 32 位元無符號整數 UIntPtr的值轉換為 。 |
| Explicit(UInt64 to UIntPtr) |
將 64 位元無符號整數 UIntPtr的值轉換為 。 |
| Explicit(UIntPtr to UInt32) |
將指定的 UIntPtr 值轉換為 32 位元的無符號整數。 |
| Explicit(UIntPtr to UInt64) |
將指定的 UIntPtr 值轉換為 64 位元無符號整數。 |
| Explicit(UIntPtr to Void*) |
將指定的 UIntPtr 值轉換為未指定型別的指標。 此 API 不符合 CLS 規範。 |
| Explicit(Void* to UIntPtr) |
將指定的指標轉換為未指定型態。UIntPtr 此 API 不符合 CLS 規範。 |
| Inequality(UIntPtr, UIntPtr) |
判斷兩個指定的 實 UIntPtr 例是否不相等。 |
| Subtraction(UIntPtr, Int32) |
從不帶正負號的整數減去位移。 |
明確介面實作
| 名稱 | Description |
|---|---|
| IEquatable<UIntPtr>.Equals(UIntPtr) |
傳回值,這個值表示這個實例是否等於另一個不帶正負號的整數。 |
| ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
會 SerializationInfo 將物件填入序列化當前 UIntPtr 物件所需的資料。 |
適用於
執行緒安全性
此類型是安全線程。