知识大全 正确理解C#中的ref关键字(续)[2]

Posted 指针

篇首语:夫唯不争,故天下莫能与之争。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 正确理解C#中的ref关键字(续)[2]相关的知识,希望对你有一定的参考价值。

正确理解C#中的ref关键字(续)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

那么我们再来看看上次那些 C# 的代码

 

  //

  // MyClass definition

  public class MyClass

  

  public int Value;

  

  //

  // Tester methods

  public static void TestRef(ref MyClass m )

  

  // 这里的 m 也就相当于大家所说的指向指针的指针

  // m 指向 Main 中的 m m 则指向那个实际的 MyClass 的实例

  // 相当于 C++ 中的

  // MyClass** m = &m;

  // (*m ) >Value = ;

  //

  m Value = ;

  

  public static void TestNoRef(MyClass m )

  

  // 这里是一个普通的传递引用类型的例子 相当于

  // MyClass m = m;

  // m Value = ;

  //

  // m 复制了 m 中的内容 也就是说现在 m 也和 m 一样 指向了 m 指向的实例

  // 所以这里对 m 的修改也会影响到 Main 中的 m

  //

  m Value = ;

  

  public static void TestCreateRef(ref MyClass m )

  

  // 这里的 m 也是一个指向引用的引用

  // m 指向 Main 中的 m m 则指向那个实际的 MyClass 的实例

  // 相当于 C++ 中的

  // MyClass** m = &m;

  // *m = new MyClass();

  // (*m ) >Value = ;

  // 在上面的 *m = new MyClass() 这个调用的时候 实际上只是将 Main m 的值(引用)给修改了

  // 也就是说现在 m 指向 Main 中的 m m 现在则指向了这个新生成的实例

  // 所以这里 m Value = 是会影响到 Main 中的结果的

  //

  m = new MyClass();

  m Value = ;

  

  public static void TestCreateNoRef(MyClass m )

  

  // 在这个方法里面 我们新申明了一个 MyClass 的实例 而让 m 指向了这个实例

  // 这时候 实际上将 m 的值修改了 m Main 中的 m 各自指向不同的实例

  // 所以对 m 做的任何修改都不会影响到 m

  //

  m = new MyClass();

  m Value = ;

  

  public static void Main ()

  

   MyClass m = new MyClass();

  m Value = ;

  TestRef(ref m);

  Console WriteLine(m Value);

  TestNoRef(m);

  Console WriteLine(m Value);

  TestCreateRef(ref m);

  Console WriteLine(m Value);

  TestCreateNoRef(m);

  Console WriteLine(m Value);

  

 

[ ]  [ ]  

cha138/Article/program/net/201311/15017

相关参考

知识大全 正确理解C#中的关键字[1]

正确理解C#中的关键字[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!最近有人问到ref关键字

知识大全 正确理解C#中的关键字[2]

正确理解C#中的关键字[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  //  //MyCl

知识大全 正确理解C#中的关键字[3]

正确理解C#中的关键字[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  //  //MyCl

知识大全 全面分析C#方法中的ref和out

全面分析C#方法中的ref和out  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ref&nbs

知识大全 .net程序员的盲点(一):ref,out ,params的区别

  C#中有三个关键字refoutparams虽然本人不喜欢这三个关键字因为它们疑似破坏面向对象特性但是既然m$把融入在c#体系中那么我们就来认识一下参数修饰符refoutparams吧还有它们的区别

知识大全 c#学习体会:使用 ref 和 out 传递数组

  c#学习体会:使用ref和out传递数组(downmoon)希望与大家分享与所有的out参数一样在使用数组类型的out参数前必须先为其赋值即必须由接受方为其赋值例如public stat

知识大全 c#中通过值和引用传递参数

  在C#中既可以通过值也可以通过引用传递参数通过引用传递参数允许函数成员(方法属性索引器运算符和构造函数)更改参数的值并保持该更改若要通过引用传递参数请使用ref或out关键字为简单起见本主题的示例

知识大全 理解C#中的代理和事件(一)

理解C#中的代理和事件(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  突然写这篇文章真的有

知识大全 C#编程中的 New 关键词的几种用法[2]

C#编程中的New关键词的几种用法[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  以下是引

知识大全 c# static的全部用法收集整理

   static的全部用法   要理解static就必须要先理解另一个与之相对的关键字很多人可能都还不知道有这个关键字那就是auto其实我