zoukankan      html  css  js  c++  java
  • 顺序

    程序

    进程

    线程  线程栈

    程序运行时数据存储的内存区域

    栈   内存数组 

          某些类型变量的值  程序当前的执行环境 传递给方法的参数

          数据项压入栈顶 数据只能从栈的顶部插入和删除  入栈 出栈

         值类型

          预定义类型  非数值类型 bool char    数值类型             整数类型     浮点类型

          用户定义类型 struck enum

         

    堆  heap 内存区域

           以任意顺序存入和移除,

          对于引用类型的任何对象,它所有的数据成员(数据成员,函数成员)都存放在堆里,无论它们是值类型还是引用类型。

          引用类型存储的实际数据位于堆中

                   预定义类型 object ,string ,dynamic              用户定义类型   class,interface,delegate,arrary

    栈帧 stack frame调用方法的时候,从栈的顶部开始分配,保存和方法关联的一些数据项,这块内存叫方法的栈帧

           返回地址    值参数 或参数数组    各种和方法调用相关的其他管理数据项

           方法调用时,整个栈帧都会压入栈

           方法退出时,整个栈帧从栈上弹出 栈展开

    变量 

    本地变量 栈或者栈和堆  不能自动初始化  值类型栈 引用类型 堆

    类字段     堆                 自动初始化

    结构字段    栈或堆          自动初始化

    参数         栈                 不能自动初始化   方法调用前 实参变量在栈中 

                                                                  值参数      实参必须被赋值或是表达式     调用时 为形参在栈中分配空间    复制实参给形参,方法结束后,形参

                                                                                 弹出,引用类型实参的值被方法内部行为改变 。

                                                                  ref引用参数    实参必须是变量被赋值  方法声明和调用都用ref    调用时  形参名设置为实参的别名 指向相同内

                                                                                      存位置 , 方法结束后,形参名称失效,  实参的值全部被方法内部行为改变。                                                         

                                                                   out输出参数  实参必须是变量  方法声明和调用都用out  调用时  形参名设置为实参的别名 但实参不在方法

                                                                                     的作用域内,不能访问实参。  方法内部对形参赋值,方法结束后,形参名称失效,实参的值全

                                                                                        部被方法内部行为改变。

                                                                  params参数数组      方法声明params。 

                                                                                      延伸式分离的参 编译器接受实参列表在堆中创建并初始化一个数组, 把数组的引用保存到栈

                                                                                     中的形参里,如果在对应的形参数组的位置没有实参,编译器会创建一个有零个元素的数组来

                                                                                     使用  。当数组在堆中创建时,实参的值被复制到数组中,如果数组参数是值类型,那么值被

                                                                                     复制,实参不受方法内部的影响,如果参数是引用类型,那么引用被复制,实参的引用的对象

                                                                                      可以受到方法内部的影响。

                                                                                      数组做实参  编译器使用数组而不是重新创建一个。                                        

    参数数组  堆                   自动初始化

    类的实例 类类型的变量  引用在栈    new运算符为实际数据分配内存

    每个实例都拥有自己的各个类成员的复制,改变一个实例字段的值不会影响其他实例中成员的值。

    静态字段被类的所有实例共享 访问同一内存地址,改变对所有实例成员都可见。

    数组是引用类型,但数组元素可以是值类型,应用类型,分为值类型数组,引用类型数组。数组声明维度固定,实例化长度确定,在foreach循环中,迭代变量是个数组元素的只读别名,不可改变其值。但引用类型数组元素,迭代变量存储的是数组元素的引用,通过改变数组元素的引用来改变引用数组。 

    clone方法浅复制 值类型数组产生两个独立的数组  引用类型产生指向相同对象的两个数组 

    namespace ConsoleApplication1
    {
        class Program//
        {
           // int i = 0;//字段  类成员默认private   i = 3;错误    1    非静态的字段、方法或属性“ConsoleApplication1.Program.i”要求对象引用    I:\endsubmit\ConsoleApplication1\Program.cs    17    29    main方法
            static int i = 0;//静态字段加载在堆上分配内存,在任何地方对它进行赋值,改变可见。
            // void print()
        static void print()//方法声明      在main()中调用加static
                 {
                     //  i = 3;//访问字段赋值  非静态的字段方法属性需要。。对象的引用
             //  Program . i = 3;//完全限定名称,方法中局部变量和全局变量同名时   ?   
                                i = 3;
                Console.WriteLine(i);
            }
        static int  sum(int a,int b)//值参数
        {
            int initial = 0;//本地变量
            for (int i = a; i <= b; i++)
            {
                initial += i;//方法内部赋值
            }
            return initial;//返回赋值后变量
        
        }
    
            static void Main(string[] args)//静态方法调用静态方法
            {
                int result = sum(1, 29);
                Console.WriteLine("{0}",result ); //18中方法重载 object value   
                Console.WriteLine( result);//18中方法重载 int value   
                   print();//方法调用 
                   Console.WriteLine(i);
                Console.ReadKey();
                //类中函数成员访问 数据成员
            }
        }
    }
  • 相关阅读:
    转:Web Service介绍
    CodeIgniter网页缓存
    CodeIgniter管理你的应用程序
    CodeIgniter自动装载资源
    python feedparser 使用
    HTC文件的使用
    动态执行javascript代码
    jQuery获取文本节点之text()/val()/html() 方法区别
    style,runtimeStyle与currentStyle的定义及用法
    File,FileStream,byte[]3者互相转换总结(转)
  • 原文地址:https://www.cnblogs.com/ggg34674/p/2569604.html
Copyright © 2011-2022 走看看