gpt4 book ai didi

c# - 行动委托(delegate)< ref T1, T2>

转载 作者:IT王子 更新时间:2023-10-29 04:12:17 25 4
gpt4 key购买 nike

我正在尝试创建一个采用 ref 参数的静态方法的委托(delegate)。请不要问我为什么要这样做。这都是学习 .Net、C# 和反射如何工作以及如何对其进行优化的一部分。

我的代码是:

    public struct DataRow
{

private double t;
static public void Cram_T(ref DataRow dr, double a_t)
{
dr.t = a_t;
}
}
''''
Type myType = typeof(DataRow);
MethodInfo my_Cram_T_Method = myType.GetMethod("Cram_T");
var myCram_T_Delegate =
Delegate.CreateDelegate(typeof(Action<DataRow, Double>),
my_Cram_T_Method)
as Action<DataRow, Double>;

这给了我一个绑定(bind)错误,因为(我认为)通用操作与方法不匹配。

在监 window 口中检查 Cram_T_Method 的值给出

{Void Cram_T(DataRow ByRef, Double)}

然后我尝试在 Action 中使用 ref 关键字:

  var myCram_T_Delegate = 
Delegate.CreateDelegate(typeof(Action<ref DataRow, Double>),
my_Cram_T_Method)
as Action<ref DataRow, Double>;

但这不会编译。 C# 编译器在 token “ref”处阻塞。

创建此委托(delegate)的正确方法是什么?

最佳答案

创建您自己的委托(delegate)类型:

delegate void MyAction(ref DataRow dataRow, double doubleValue);

并使用 MyAction代替 Action<ref DataRow, Double> -- 正如您所指出的,它无法编译。

关于c# - 行动委托(delegate)< ref T1, T2>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2030303/

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