Struct ValueReference<T>
Represents a mutable reference to the field.
Inherited Members
Namespace: DotNext.Runtime
Assembly: DotNext.dll
Syntax
public readonly struct ValueReference<T> : IEquatable<ValueReference<T>>, IEqualityOperators<ValueReference<T>, ValueReference<T>, bool>, ISupplier<T>, IConsumer<T>, IFunctional, ITypedReference<T>
Type Parameters
| Name | Description |
|---|---|
| T | The type of the field. |
Constructors
View SourceValueReference(object, ref T)
Represents a mutable reference to the field.
Declaration
public ValueReference(object owner, ref T fieldRef)
Parameters
| Type | Name | Description |
|---|---|---|
| object | owner | An object that owns the field. |
| T | fieldRef | The reference to the field. |
ValueReference(T)
Creates a reference to the anonymous value.
Declaration
public ValueReference(T value)
Parameters
| Type | Name | Description |
|---|---|---|
| T | value | The anonymous value. |
ValueReference(ref T)
Creates a reference to a static field.
Declaration
[CLSCompliant(false)]
public ValueReference(ref T staticFieldRef)
Parameters
| Type | Name | Description |
|---|---|---|
| T | staticFieldRef | A reference to the static field. |
Remarks
If T is a value type then your static field MUST be marked
with FixedAddressValueTypeAttribute. Otherwise, the behavior is unpredictable.
Correctness of this constructor is based on the fact that static fields are stored
as elements of object array allocated by the runtime in the Pinned Object Heap.
It means that the address of the field cannot be changed by GC.
See Also
View SourceValueReference(T[], int)
Creates a reference to an array element.
Declaration
public ValueReference(T[] array, int index)
Parameters
| Type | Name | Description |
|---|---|---|
| T[] | array | The array. |
| int | index | The index of the array element. |
Exceptions
| Type | Condition |
|---|---|
| ArrayTypeMismatchException |
|
Properties
View SourceIsEmpty
Gets a value indicating that is reference is empty.
Declaration
public bool IsEmpty { get; }
Property Value
| Type | Description |
|---|---|
| bool |
Value
Gets a reference to the field.
Declaration
public ref T Value { get; }
Property Value
| Type | Description |
|---|---|
| T |
Methods
View SourceEquals(ValueReference<T>)
Declaration
public bool Equals(ValueReference<T> reference)
Parameters
| Type | Name | Description |
|---|---|---|
| ValueReference<T> | reference |
Returns
| Type | Description |
|---|---|
| bool |
Equals(object?)
Declaration
public override bool Equals(object? other)
Parameters
| Type | Name | Description |
|---|---|---|
| object | other |
Returns
| Type | Description |
|---|---|
| bool |
Overrides
View SourceGetHashCode()
Declaration
public override int GetHashCode()
Returns
| Type | Description |
|---|---|
| int |
Overrides
View SourceToString()
Declaration
public override string? ToString()
Returns
| Type | Description |
|---|---|
| string |
Overrides
Operators
View Sourceexplicit operator Action<T>(ValueReference<T>)
Returns a setter for the memory location.
Declaration
public static explicit operator Action<T>(ValueReference<T> reference)
Parameters
| Type | Name | Description |
|---|---|---|
| ValueReference<T> | reference | A reference to a value. |
Returns
| Type | Description |
|---|---|
| Action<T> | A setter for the memory location. |
explicit operator Func<T>(ValueReference<T>)
Returns a getter for the memory location.
Declaration
public static explicit operator Func<T>(ValueReference<T> reference)
Parameters
| Type | Name | Description |
|---|---|---|
| ValueReference<T> | reference | A reference to a value. |
Returns
| Type | Description |
|---|---|
| Func<T> | A getter for the memory location. |
implicit operator LocalReference<T>(ValueReference<T>)
Converts the reference to the local reference.
Declaration
public static implicit operator LocalReference<T>(ValueReference<T> reference)
Parameters
| Type | Name | Description |
|---|---|---|
| ValueReference<T> | reference | The reference to convert. |
Returns
| Type | Description |
|---|---|
| LocalReference<T> | The local reference the same value as |
implicit operator ReadOnlyValueReference<T>(ValueReference<T>)
Converts mutable field reference to immutable field reference.
Declaration
public static implicit operator ReadOnlyValueReference<T>(ValueReference<T> reference)
Parameters
| Type | Name | Description |
|---|---|---|
| ValueReference<T> | reference | The reference to convert. |
Returns
| Type | Description |
|---|---|
| ReadOnlyValueReference<T> | The immutable field reference. |
implicit operator Variant(ValueReference<T>)
Converts the reference to variant value.
Declaration
public static implicit operator Variant(ValueReference<T> reference)
Parameters
| Type | Name | Description |
|---|---|---|
| ValueReference<T> | reference | The reference to convert. |
Returns
| Type | Description |
|---|---|
| Variant | The variant value referencing the same value as |
implicit operator Span<T>(ValueReference<T>)
Gets a span over the referenced value.
Declaration
public static implicit operator Span<T>(ValueReference<T> reference)
Parameters
| Type | Name | Description |
|---|---|---|
| ValueReference<T> | reference | The value reference. |
Returns
| Type | Description |
|---|---|
| Span<T> | The span that contains Value; or empty span if |
Explicit Interface Implementations
View Sourceoperator ==(ValueReference<T>, ValueReference<T>)
Determines whether the two references point to the same field.
Declaration
static bool operator ==(ValueReference<T> x, ValueReference<T> y)
Parameters
| Type | Name | Description |
|---|---|---|
| ValueReference<T> | x | The first reference to compare. |
| ValueReference<T> | y | The second reference to compare. |
Returns
| Type | Description |
|---|---|
| bool |
operator !=(ValueReference<T>, ValueReference<T>)
Determines whether the two references point to the different fields.
Declaration
static bool operator !=(ValueReference<T> x, ValueReference<T> y)
Parameters
| Type | Name | Description |
|---|---|---|
| ValueReference<T> | x | The first reference to compare. |
| ValueReference<T> | y | The second reference to compare. |
Returns
| Type | Description |
|---|---|
| bool |