C#——值类型  引用类型

C#的值类型包括:结构体(数值类型,bool型,用户定义的结构体),枚举,可空类型。
C#的引用类型包括:数组,用户定义的类、接口、委托,object,字符串。

通过例子我们来理解两者的区别

 

(1)修改引用类型(用户自定义的类)的形参来修改实参对象的数据

 

设计界面:

 

编写代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace C
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        void change(Student one) //one是引用类型
        {
            one.name = "黄蓉";
            one.age=22;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Student stu = new Student(textBox1 .Text,int.Parse (textBox2 .Text) );  //stu是引用类型
            label3.Text = "最初的值:"+stu.getInfo();
            change(stu); 
            label3.Text += "\n调用change方法后的值" + stu.getInfo();

        }
    }
    class Student 
    {
        public string name;
        public int age;
        public Student(string name,int age)
        {
            this.name = name;
            this.age = age;
        }
        public string getInfo() 
        {
            return string.Format("姓名:{0}  年龄:{1}",name ,age);
        }
        
    }
}

运行结果:

(2)修改值类型(自定义的结构体)的形参来修改实参对象的数据

如果我们将例子中的自定义类class Student 修改为结构体Struct Student我们会发现运行结果

通过例子我们可以知道

(1)引用类型参数总是按引用传递的,不需要使用ref或out关键字(string除外)。

(2)由于stu 和one 都是引用类型(用户自定义的类Student)的数据变量,二者共用同一个内存空间,修改stu的数据信息必然同时修改x的数据信息。

(3)值类型中形参的改变并不影响实参的值,他们处于不同的内存空间

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值