为什么我不能在 IntPtr 方法中使用值?

Why can I not use a value inside a IntPtr method?

除了错误使用 DLL 之外,当我尝试在 IntPtr 方法中使用 theTestValue 时,IntelliSense 将其标记为失败。我想知道为什么会这样,因为我需要从外部在此方法内部使用 bool

public partial class Form1 : Form
{

    [DllImport("user32.dll")]
    private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode,
    IntPtr wParam, IntPtr lParam);

    [DllImport("user32.dll")]
    private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode,
    IntPtr wParam, IntPtr lParam);

    private static LowLevelKeyboardProc _proc = HookCallback;
    private delegate IntPtr LowLevelKeyboardProc(
    int nCode, IntPtr wParam, IntPtr lParam);

    public bool theTestValue = false; //This is the value

    private static IntPtr HookCallback(
        int nCode, IntPtr wParam, IntPtr lParam)
    {
        theTestValue = true; //Red marked

        }
        return CallNextHookEx(_hookID, nCode, wParam, lParam);
    }

您无法访问该字段,因为该方法是静态的,并且该字段已在实例级别(非静态)上声明。如果您更改代码,使两者要么是静态的,要么不是静态的,错误就会消失。

theTestValue 设为静态或从 HookCallBack 中删除静态修饰符 function.If class 被声明为静态所有成员也必须是静态的。