日期:2014-05-18 浏览次数:21156 次
void f2(int a[])
{
}
void f1()
{
    int a[10];
    f2(a + 5); //C++中可直接传a[5]的地址给f2函数
}
static void f2(int a[])
{
}
static void f1()
{
    int a[10];
    f2(a + 5); //C#中不可直接传a[5]的地址给f2函数
}
void f2(UINT32 *a)
{
}
void f1()
{
    UINT8 a[10];
    f2((UINT32 *)a); //C++中可直接强制把UINT8*转换为UINT32*并传给f2函数
}
static void f2(uint a[])
{
}
static void f1()
{
    byte a[10];
    f2(???); //C#中试过,但都不成功,怎么传呢?
}
unsafe class Program
{
    static void f2(int* a)
    {
    }
    static void f3(UInt32* a)
    {
    }
    static void f1()
    {
        fixed (int* a = new int[10])
        {
            f2(a + 5);
            f3((UInt32*)a);
        }
    }
}
------解决方案--------------------
static void f2(ref int a)
{
}
static void f1()
{
    int a[10];
    f2(ref a[5]);
}