gpt4 book ai didi

c# - 如何使用反射调用自定义运算符

转载 作者:IT王子 更新时间:2023-10-29 04:30:32 26 4
gpt4 key购买 nike

在我的小项目中,我使用 System.Reflection 类来生成可执行代码。我需要调用自定义类型的 + 运算符。有人知道如何使用 C# 反射调用自定义类的自定义运算符吗?

最佳答案

C# 编译器将重载运算符转换为名称为 op_XXXX 的函数,其中 XXXX 是操作。例如,operator + 被编译为 op_Addition

以下是可重载运算符及其各自方法名称的完整列表:

┌──────────────────────────┬───────────────────────┬──────────────────────────┐
│ Operator │ Method Name │ Description │
├──────────────────────────┼───────────────────────┼──────────────────────────┤
│ operator + │ op_UnaryPlus │ Unary │
│ operator - │ op_UnaryNegation │ Unary │
│ operator ++ │ op_Increment │ Unary │
│ operator -- │ op_Decrement │ Unary │
│ operator ! │ op_LogicalNot │ Unary │
│ operator + │ op_Addition │ │
│ operator - │ op_Subtraction │ │
│ operator * │ op_Multiply │ │
│ operator / │ op_Division │ │
│ operator & │ op_BitwiseAnd │ │
│ operator | │ op_BitwiseOr │ │
│ operator ^ │ op_ExclusiveOr │ │
│ operator ~ │ op_OnesComplement │ Unary │
│ operator == │ op_Equality │ │
│ operator != │ op_Inequality │ │
│ operator < │ op_LessThan │ │
│ operator > │ op_GreaterThan │ │
│ operator <= │ op_LessThanOrEqual │ │
│ operator >= │ op_GreaterThanOrEqual │ │
│ operator << │ op_LeftShift │ │
│ operator >> │ op_RightShift │ │
│ operator % │ op_Modulus │ │
│ implicit operator <type> │ op_Implicit │ Implicit type conversion │
│ explicit operator <type> │ op_Explicit │ Explicit type conversion │
│ operator true │ op_True │ │
│ operator false │ op_False │ │
└──────────────────────────┴───────────────────────┴──────────────────────────┘

因此要检索DateTime 结构的operator+ 方法,您需要这样写:

MethodInfo mi = typeof(DateTime).GetMethod("op_Addition",
BindingFlags.Static | BindingFlags.Public );

关于c# - 如何使用反射调用自定义运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11113259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com