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

时间:2016-02-20 09:00:45

标签: c# methods static-methods intptr

除了错误使用DLL之外,当我尝试在theTestValue方法中使用IntPtr时,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);
    }

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

使theTestValue静态或从HookCallBack函数中删除static修饰符。如果该类声明为static,则所有成员也必须是静态的。

相关问题