c# - 使用指针实现某些东西的安全(在 C# 意义上)方式

标签 c# pointers

            ...
            {
                int *r1, *r2;
                r1 = GetCorrectRegister(first);
                r2 = GetCorrectRegister(second);
                switch ((OpCode)current.opcode)
                {
                    case OpCode.ADDR:
                        r2 = r1 + r2;
                        break;
                }
            }
            ...

这是解决此问题的最明显、最简单的方法。但是,如果可以避免的话,我宁愿不使用不安全的方法。基本上,我有一堆代表寄存器的整数。有一些汇编指令将寄存器助记符作为参数。我不希望有逻辑来确定在 switch 语句的每个分支中分配给哪个变量,或者制作某种笨拙的 GetRegisterValue(mnemonic) 和 SetRegisterValue(mnemonic) 函数。是否有一些 C#y 方法可以做类似的事情?

最佳答案

I have a bunch of integers which represent registers

这里显而易见的是不要有一堆整数。创建数组

 int[] registers = new int[NUMBER_OF_REGISTERS];

你上面的代码变成了

    {
            int r1Index, r2Index;
            r1Index = GetCorrectRegisterIndex(first);
            r2Index = GetCorrectRegisterIndex(second);
            switch ((OpCode)current.opcode)
            {
                case OpCode.ADDR:
                    registers[r1Index] = registers[r1Index] + registers[r2Index];
                    break;
            }


     }

此外,使用 enum 为您的寄存器名称创建符号名称,其中每个名称都为您提供正确的索引。

关于c# - 使用指针实现某些东西的安全(在 C# 意义上)方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4982962/

相关文章:

c# - 更新很多东西时滞后?新华社

c - C多维数组和解引用数组指针

c - 如何存储 char* 的值?

c++ - 为什么这个指针是8个字节?

混淆数组元素地址

c# - Visual Studio 单元测试代码覆盖异常 "file path of .coverage file is invalid or corrupt"

c# - 如何使用 add-in express 获取 outlook 电子邮件主题

c# - DataGrid 宽度上的 WPF 全宽 DataGrid 列

C# DI Func工厂无需注册Func?

c++ - 从另一个类访问指针数组的对象