c# - 将此 C 结构转换为 C#

标签 c# c struct

我正在翻译一个C游戏:https://github.com/minirop/Super-Mario-Remake转向 C# 是为了获得乐趣并提高我的 C# 编程能力。我在 C 编程方面没有那么丰富的经验,并且遇到了一个我不知道如何在 C# 中实现的结构。

    typedef struct _state_t {
    void (*init)(struct _state_t * s);
    void (*update)(struct _state_t * s, Uint32 elapsedTime);
    void (*handleEvent)(struct _state_t * s);
    void (*draw)(struct _state_t * s, SDL_Surface * surface);
    void (*clean)(struct _state_t * s);
    void * data;
} state_t;

到目前为止我尝试过的是:

public class state_t
{
    public void init(state_t S)
    {
        state_t s;

        s = S;
    }

    public void update(state_t S, UInt32 ElapsedTime)
    {
        state_t s;
        UInt32 elapsedTime;

        s = S;
        elapsedTime = ElapsedTime;
    }

    public void handleEvent(state_t S)
    {
        state_t s;
        s = S;
    }

    public void draw(state_t S, SDL.SDL_Surface Surface)
    {
        state_t s;
        SDL.SDL_Surface surface;

        s = S;
        surface = Surface;
    }
    public void clean(state_t S)
    {
        state_t s;

        s = S;
    }

    public void data()
    {

    }
}

但我认为这是不对的。我收到一个错误:

        state_t MS_get()
        {
           state_t state = new state_t();
           state.init = MS_init; // Error 2 Cannot assign to 'init' because it is a 'method group'

        }  ...

最佳答案

您已将 init 定义为方法,因此需要调用它;不分配它。像这样的东西应该有效:

state.init(MS_init);

但是,我看到在该方法中,您只是将状态保存在 init() 方法内声明的变量中,这不会实现任何目标。

关于c# - 将此 C 结构转换为 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37509638/

相关文章:

c# - C# travis 的问题

c# - 如何在Windows任务栏中制作一个文本框?

c - 为什么我不能得到整个字符串的长度?

c - 尝试为结构中的 void 指针赋值

c# - Unity3D StartCoroutine调用一个函数,那个函数什么时候返回?

java - 在 'for' 循环中递增 1 时格式化背后的技术原因?

c - C中指针的引用传递

c - 如何从 NaCl 开发环境应用程序打开文件?

linux - 在Qt中通过套接字发送结构

c - 在结构体中搜索 - C 语言