【发布时间】:2011-02-02 13:16:48
【问题描述】:
以下 C++ 程序按预期编译和运行:
#include <stdio.h>
int main(int argc, char* argv[])
{
int* test = new int[10];
for (int i = 0; i < 10; i++)
test[i] = i * 10;
printf("%d \n", test[5]); // 50
printf("%d \n", 5[test]); // 50
return getchar();
}
我可以为这个问题做的最接近的 C# 简单示例是:
using System;
class Program
{
unsafe static int Main(string[] args)
{
// error CS0029: Cannot implicitly convert type 'int[]' to 'int*'
int* test = new int[10];
for (int i = 0; i < 10; i++)
test[i] = i * 10;
Console.WriteLine(test[5]); // 50
Console.WriteLine(5[test]); // Error
return (int)Console.ReadKey().Key;
}
}
那么我该如何制作指针呢?
【问题讨论】:
-
问问自己为什么要直接在托管语言中操作指针。
-
因为我很无聊 :D
-
在尝试用 C# 编写不安全的代码之前,请阅读规范的第 18 章(两次)来缓解您的无聊。