S2_二本第二章深入C#数据类型

  值类型

             int salaryliuhuan = 7000;
            //文杰
            int salarywenjie = salaryliuhuan;
            Console.WriteLine("去年刘欢的薪资:{0}\t文杰的薪资{1}",salaryliuhuan,salarywenjie);
            //文杰的薪资改变了
            Console.WriteLine("========我是高贵的分割线,谁敢搞我?????===========================");
            salarywenjie = 7001;
            Console.WriteLine("今年刘欢的薪资:{0}\t文杰的薪资{1}", salaryliuhuan, salarywenjie);
            //z所有的值类型的值都保存在栈中,栈是:先进后出 按顺序排列
            //新创建一个值类型会重新创建一个栈,当salarywenjie的栈改变时,并不会影响salaryliuhuan的栈
            //所以改变salarywenjie的值,salaryliuhuan的值并不会改变

应用类型

 //薪资   奖金
            int[] moneyliuhuan = {7000,5000 };
            //文杰
            int[] moneywenjie = moneyliuhuan;
            Console.WriteLine("去年刘欢的薪资:{0}\t文杰的薪资{1}", moneyliuhuan[0], moneywenjie[0]); //7000  7000
            //文杰的薪资改变了
            Console.WriteLine("========我是高贵的分割线,谁敢搞我?????===========================");

            //moneywenjie=new int[]{7001,5001};重新创建的一个堆.改变的只是moneywenjie的堆,而moneyliuhuan的堆没有改变,重新new所以不会传递
            moneywenjie[0] = 7001;//二者共用一个堆,所以改变moneywenjie的堆,两者的实际值都会改变
            moneywenjie[1] = 5001;

            Console.WriteLine("今年刘欢的薪资:{0}\t文杰的薪资{1}", moneyliuhuan[0], moneywenjie[0]);//7000  7001
            //引用类型的值保存在堆中,堆是无序排列的,当新建一个堆,会有一个存储地址保存在栈中,如果又创建一个应用类型,如果将前者赋值给后者
            //那么,将会把前者的存储位置付给后者,两者用的是同一个堆,当改变前者的值后者也会改变
            //如果想要正确的把前者的赋值需要利用循环对数组进行复制
            //首先,创建两个数组,前者先给上初始值,后者只给长度
            //然后用for循环复制
            /*
             for(int i=0;i<后者.length;i++)
             {
             前者[i]=后者[i]
            
             }
           
            
             */

结构体

     //1.结构体是值类型
    //2.结构体可以不new直接使用,但是是有条件的
    //3.不能对结构体中的成员变量赋初值
    //4.声明结构的对象后,必须对结构的成员赋初值
    public struct Student
    {
        public int age;
        public void Say()
        {
            Console.WriteLine("Say");
        }


   static void Main(string[] args)
        {
            //设置控制台字体颜色  前景色
            Console.ForegroundColor = ConsoleColor.Black;
            Console.BackgroundColor = ConsoleColor.Yellow;


            //不new 就能用是有条件的,  必须是公有的成员变量,不能是私有再封装的
            Student stu;
            stu.age = 20;
            stu.Say();
            Console.ReadKey();

        }

构造函数

 public class Employee
    {
        //类中有构造吗?
        //解析:只有定义了一个类,默认系统自动在底层补全一个无参构造
        //1.名称和类名相同  2 。没有返回值类型,甚至连void都不能
        public Employee(string name)
        {

        }
        public Employee()
        {

        }

}


class Program
    {
        static void Main(string[] args)
        {
            //Cat cat = new Cat(2, "皮皮");
            //Cat cat2 = new Cat();
            //cat2.Age = 2;
            //cat2.Name = "皮皮";
        }
    }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值