正确理解C#中的关键字[1]

 我来答
舒适还明净的海鸥i
2022-11-03 · TA获得超过1.7万个赞
知道小有建树答主
回答量:380
采纳率:0%
帮助的人:69万
展开全部

最近有人问到 ref 关键字的正确用法 下面我们来举例说明 其实要更好的理解 ref 关键字 结合 C++ 代码更加容易一些 另外在开始我们的例子之前 需要提前说明几点

 

C# 中的数据有两种类型 引用类型 (reference types) 和值类型 (value types) 简单类型 ( 包括 int long double 等 ) 和结构 (structs) 都是值类型 而其他的类都是引用类型 简单类型在传值的时候会做复制操作 而引用类型只是传递引用 就像 C++ 中的指针一样

 

注意 structs 在 C# 和 C++ 中的区别 在 C++ 中 structs 和类基本相同 (except that the default inheritance and default access are public rather than private) 而在 C# 中 structs 和类有很大的区别 其中最大的区别 ( 我个人觉得 同时也是容易忽略的一个地方 ) 可能就是它是值类型 而不是引用类型

 

下面这段代码是 MSDN 中的例子

 

   // cs_ref cs

   using System;

   public class MyClass

   {

   public static void TestRef(ref char i)

   {

   // The value of i will be changed in the calling method

    i = b ;

    }

    public static void TestNoRef(char i)

    {

   // The value of i will be unchanged in the calling method

    i = c ;

   }

   // This method passes a variable as a ref parameter; the value of the

  // variable is changed after control passes back to this method

    // The same variable is passed as a value parameter; the value of the

    // variable is unchanged after control is passed back to this method

    public static void Main ()

    {

      char i = a ; // variable must be initialized

      TestRef(ref i); // the arg must be passed as ref

      Console WriteLine(i);

      TestNoRef(i);

      Console WriteLine(i);

   }

}

 

大家很容易看出输出结果是

 

   b

b

 

  那么如果把这个例子做一些新的改动 将值类型 ( 这里用的是 char) 改成引用类型 程序运行又是什么效果呢 ?

lishixinzhi/Article/program/net/201311/15037

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式