C# 和指向成员的指针
本文关键字:指针 成员 | 更新日期: 2023-09-27 18:37:19
需要为某种类型的对象调用函数,但我希望调用者指定我调用的函数。
在C++中,我可以像这样使用指向成员的指针
class C
{
void F(void (A::*F)(int));
}
是否有任何 C# 等效项?
请不要使用函数数组或任何像开关这样的技巧。我希望即使在函数签名满足要求时添加了新功能,此解决方案也能正常工作。
编辑:正如我所读到的:委托就像C++函数指针,但类型安全。
但是我需要成员函数指针。 例如,在我的函数中,我获取确定的对象:
var properties = manager.GetProperties();
现在需要获取某些类型的属性:
var type1 = properties.GetType1();
但我需要这样的东西
var typeX = properties.GetTypeX();
获取此函数调用的用户请求类型。X型必须是什么?
其中类型1..N 有公共基类,我需要使用这个类。
是的,它被称为代表
有两种标准:Func<T>
和Action<T>
在 C# 中,有一些委托来指定要传递到某处的函数的签名。
你的代码应该尝试这样的事情:
class Program
{
static void Write(int i)
{
Console.Write(i);
}
static void Main(string[] args)
{
C c = new C { FunctionToExecute = Write };
c.SomeMethod(5);
}
}
delegate void D(int F);
class C
{
public D FunctionToExecute { get; set; }
public void SomeMethod(int arg)
{
FunctionToExecute(arg);
}
}
D 指定签名,FunctionToExecute 是指向要执行的内容的指针。
如果要传递未知类型的对象,则有泛型。或者我不明白你想要什么。这里提到的 Action 和 Func 是泛型委托。