Show / Hide Table of Contents

Struct ValueRefFunc<T, TArgs, TResult>

Represents function that accepts arbitrary value by reference.

Implements
ICallable<RefFunc<T, TArgs, TResult>>
ICallable
IConvertible<RefFunc<T, TArgs, TResult>>
IEquatable<ValueRefFunc<T, TArgs, TResult>>
Inherited Members
Object.Equals(Object, Object)
Object.GetType()
Object.ReferenceEquals(Object, Object)
Namespace: DotNext
Assembly: DotNext.dll
Syntax
public struct ValueRefFunc<T, TArgs, TResult> : IValueDelegate<RefFunc<T, TArgs, TResult>>, ICallable<RefFunc<T, TArgs, TResult>>, ICallable, IConvertible<RefFunc<T, TArgs, TResult>>, ISupplier<RefFunc<T, TArgs, TResult>>, IEquatable<ValueRefFunc<T, TArgs, TResult>>
Type Parameters
Name Description
T

The type of the object to be passed by reference into the action.

TArgs

The type of the arguments to be passed into the action.

TResult

The type of the return value of the method that this delegate encapsulates.

Remarks

This method pointer is intended to call managed methods only.

Constructors

| Improve this Doc View Source

ValueRefFunc(RefFunc<T, TArgs, TResult>, Boolean)

Initializes a new pointer based on extracted pointer from the delegate.

Declaration
public ValueRefFunc(RefFunc<T, TArgs, TResult> func, bool wrap = false)
Parameters
Type Name Description
RefFunc<T, TArgs, TResult> func

The delegate representing method.

Boolean wrap

true to wrap func into this delegate; false to extract method pointer without holding reference to the passed delegate.

Remarks

You can use this constructor to create value delegate once and cache it using static readonly field for subsequent calls.

Exceptions
Type Condition
ArgumentNullException

func is null.

| Improve this Doc View Source

ValueRefFunc(MethodInfo)

Initializes a new pointer to the method.

Declaration
public ValueRefFunc(MethodInfo method)
Parameters
Type Name Description
MethodInfo method

The method to convert into pointer.

Remarks

This constructor causes heap allocations because Reflection is needed to check compatibility of method's signature with the delegate type.

Exceptions
Type Condition
ArgumentNullException

method is null.

ArgumentException

Signature of method doesn't match to this pointer type.

Properties

| Improve this Doc View Source

IsEmpty

Indicates that this delegate doesn't refer to any method.

Declaration
public bool IsEmpty { get; }
Property Value
Type Description
Boolean
| Improve this Doc View Source

Target

Gets the object on which the current pointer invokes the method.

Declaration
public object Target { get; }
Property Value
Type Description
Object

Methods

| Improve this Doc View Source

Equals(ValueRefFunc<T, TArgs, TResult>)

Determines whether this object points to the same method as other object.

Declaration
public bool Equals(ValueRefFunc<T, TArgs, TResult> other)
Parameters
Type Name Description
ValueRefFunc<T, TArgs, TResult> other

The pointer to compare.

Returns
Type Description
Boolean

true if both pointers represent the same method; otherwise, false.

| Improve this Doc View Source

Equals(Object)

Determines whether this object points to the same method as other object.

Declaration
public override bool Equals(object other)
Parameters
Type Name Description
Object other

The object implementing ICallable<TDelegate> to compare.

Returns
Type Description
Boolean

true if both pointers represent the same method; otherwise, false.

Overrides
ValueType.Equals(Object)
| Improve this Doc View Source

GetHashCode()

Computes hash code of this pointer.

Declaration
public override int GetHashCode()
Returns
Type Description
Int32

The hash code of this pointer.

Overrides
ValueType.GetHashCode()
| Improve this Doc View Source

Invoke(ref T, TArgs)

Invokes method by pointer.

Declaration
public TResult Invoke(ref T reference, TArgs args)
Parameters
Type Name Description
T reference

The object passed by reference.

TArgs args

The action arguments.

Returns
Type Description
TResult

The value returned by underlying method.

| Improve this Doc View Source

ToDelegate()

Converts this pointer into RefFunc<T, TArgs, TResult>.

Declaration
public RefFunc<T, TArgs, TResult> ToDelegate()
Returns
Type Description
RefFunc<T, TArgs, TResult>

The delegate created from this method pointer; or null if this pointer is zero.

| Improve this Doc View Source

ToString()

Obtains pointer value in HEX format.

Declaration
public override string ToString()
Returns
Type Description
String

The address represented by pointer.

Overrides
ValueType.ToString()

Operators

| Improve this Doc View Source

Equality(ValueRefFunc<T, TArgs, TResult>, ValueRefFunc<T, TArgs, TResult>)

Determines whether the pointers represent the same method.

Declaration
public static bool operator ==(in ValueRefFunc<T, TArgs, TResult> first, in ValueRefFunc<T, TArgs, TResult> second)
Parameters
Type Name Description
ValueRefFunc<T, TArgs, TResult> first

The first pointer to compare.

ValueRefFunc<T, TArgs, TResult> second

The second pointer to compare.

Returns
Type Description
Boolean

true if both pointers represent the same method; otherwise, false.

| Improve this Doc View Source

Explicit(ValueRefFunc<T, TArgs, TResult> to RefFunc<T, TArgs, TResult>)

Converts this pointer into RefFunc<T, TArgs, TResult>.

Declaration
public static explicit operator RefFunc<T, TArgs, TResult>(in ValueRefFunc<T, TArgs, TResult> pointer)
Parameters
Type Name Description
ValueRefFunc<T, TArgs, TResult> pointer

The pointer to convert.

Returns
Type Description
RefFunc<T, TArgs, TResult>

The delegate created from this method pointer.

| Improve this Doc View Source

Inequality(ValueRefFunc<T, TArgs, TResult>, ValueRefFunc<T, TArgs, TResult>)

Determines whether the pointers represent different methods.

Declaration
public static bool operator !=(in ValueRefFunc<T, TArgs, TResult> first, in ValueRefFunc<T, TArgs, TResult> second)
Parameters
Type Name Description
ValueRefFunc<T, TArgs, TResult> first

The first pointer to compare.

ValueRefFunc<T, TArgs, TResult> second

The second pointer to compare.

Returns
Type Description
Boolean

true if both pointers represent different methods; otherwise, false.

Explicit Interface Implementations

| Improve this Doc View Source

ICallable.DynamicInvoke(Object[])

Declaration
object ICallable.DynamicInvoke(params object[] args)
Parameters
Type Name Description
Object[] args
Returns
Type Description
Object

Implements

ICallable<TDelegate>
ICallable
IConvertible<T>
System.IEquatable<T>

Extension Methods

ValueTypeExtensions.IsOneOf<T>(T, IEnumerable<T>)
ValueTypeExtensions.IsOneOf<T>(T, T[])
Sequence.Skip<TEnumerator, T>(ref TEnumerator, Int32)
ExpressionBuilder.Const<T>(T)
  • Improve this Doc
  • View Source
In This Article
Back to top Generated by DocFX