使用指针和ref关键字引用值之间有什么区别

墙行者

我有以下代码:

class Program
{
    private unsafe static void SquarePtrParam(int* input)
    {
        *input *= *input;
    }

    private static void SquareRefParam(ref int input)
    {
        input *= input;
    }

    private unsafe static void Main()
    {
        int value = 10;
        SquarePtrParam(&value);
        Console.WriteLine(value);

        int value2 = 10;
        SquareRefParam(ref value2);
        Console.WriteLine(value2);

        //output 100, 100
        Console.ReadKey();
    }
}

在方法中传递指针和ref关键字作为参数有什么区别?

内森·阿尔登

ref关键字的作用就像一个指针,而是从变化到在存储器中的对象的实际位置绝缘。指针是内存中的特定位置。对于垃圾收集的对象,此指针可能会更改,但是如果您使用fixed语句阻止它,则不会更改

您应该更改此:

SquarePtrParam(&value);

对此:

fixed (int* pValue = &value)
{
    SquarePtrParam(pValue);
}

确保指针继续指向int您期望数据。

http://msdn.microsoft.com/zh-CN/library/f58wzh21.aspx

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用和不使用`New`关键字定义数组之间有什么区别?

来自分类Dev

volatile和static关键字有什么区别?

来自分类Dev

“数据”和“类型”关键字有什么区别?

来自分类Dev

volatile和static关键字有什么区别?

来自分类Dev

语句和关键字有什么区别?

来自分类Dev

“ as”和“ as!”有什么区别?迅速的关键字?

来自分类Dev

在序言中,关键字is和=有什么区别?

来自分类Dev

关键字“私人”和“最终”之间有什么区别?

来自分类Dev

关键字default和new之间有什么区别

来自分类Dev

c和c ++之间的关键字static有什么区别?

来自分类Dev

Java API中的“ Class”类和“ class”关键字之间有什么区别?

来自分类Dev

使用“new”关键字和不使用它有什么区别?

来自分类Dev

使用box关键字和Box :: new有什么区别?

来自分类Dev

特质,自由文本和关键字之间有什么区别,我应该在wit.ai中使用哪个

来自分类Dev

在CPU绑定的任务上使用await关键字与Task.Wait()方法之间有什么区别?

来自分类Dev

Java API中的“ Class”类与“ class”关键字之间有什么区别?

来自分类Dev

noexcept关键字和_NOEXCEPT宏有什么区别?

来自分类Dev

shell Builtin和shell关键字有什么区别?

来自分类Dev

shell Builtin和shell关键字有什么区别?

来自分类Dev

命令行中的关键字“ python”和“ python3”有什么区别?

来自分类Dev

Laravel `app` 方法和 `new` 关键字有什么区别?

来自分类Dev

在PARALLEL QUERY / DML / DDL中使用FORCE,ENABLE,DISABLE关键字有什么区别

来自分类Dev

在JavaScript中,以引号作为关键字的字符与作为对象的属性的关键字作为字符的字符之间有什么区别

来自分类Dev

使用ref关键字传递值

来自分类Dev

使用return关键字而不是仅使用console.log函数并仅传递参数有什么区别?

来自分类Dev

Firebase-ref和child之间有什么区别?

来自分类Dev

空指针常量(nullptr),空指针值和空成员指针值之间有什么区别?

来自分类Dev

通过await关键字返回任务和不使用await关键字返回任务之间的主要区别是什么?

来自分类Dev

通过await关键字返回任务和不使用await关键字返回任务之间的主要区别是什么?

Related 相关文章

  1. 1

    使用和不使用`New`关键字定义数组之间有什么区别?

  2. 2

    volatile和static关键字有什么区别?

  3. 3

    “数据”和“类型”关键字有什么区别?

  4. 4

    volatile和static关键字有什么区别?

  5. 5

    语句和关键字有什么区别?

  6. 6

    “ as”和“ as!”有什么区别?迅速的关键字?

  7. 7

    在序言中,关键字is和=有什么区别?

  8. 8

    关键字“私人”和“最终”之间有什么区别?

  9. 9

    关键字default和new之间有什么区别

  10. 10

    c和c ++之间的关键字static有什么区别?

  11. 11

    Java API中的“ Class”类和“ class”关键字之间有什么区别?

  12. 12

    使用“new”关键字和不使用它有什么区别?

  13. 13

    使用box关键字和Box :: new有什么区别?

  14. 14

    特质,自由文本和关键字之间有什么区别,我应该在wit.ai中使用哪个

  15. 15

    在CPU绑定的任务上使用await关键字与Task.Wait()方法之间有什么区别?

  16. 16

    Java API中的“ Class”类与“ class”关键字之间有什么区别?

  17. 17

    noexcept关键字和_NOEXCEPT宏有什么区别?

  18. 18

    shell Builtin和shell关键字有什么区别?

  19. 19

    shell Builtin和shell关键字有什么区别?

  20. 20

    命令行中的关键字“ python”和“ python3”有什么区别?

  21. 21

    Laravel `app` 方法和 `new` 关键字有什么区别?

  22. 22

    在PARALLEL QUERY / DML / DDL中使用FORCE,ENABLE,DISABLE关键字有什么区别

  23. 23

    在JavaScript中,以引号作为关键字的字符与作为对象的属性的关键字作为字符的字符之间有什么区别

  24. 24

    使用ref关键字传递值

  25. 25

    使用return关键字而不是仅使用console.log函数并仅传递参数有什么区别?

  26. 26

    Firebase-ref和child之间有什么区别?

  27. 27

    空指针常量(nullptr),空指针值和空成员指针值之间有什么区别?

  28. 28

    通过await关键字返回任务和不使用await关键字返回任务之间的主要区别是什么?

  29. 29

    通过await关键字返回任务和不使用await关键字返回任务之间的主要区别是什么?

热门标签

归档