UWP-C#-关键字

来源:互联网 发布:电脑软件推广 编辑:程序博客网 时间:2024/05/24 06:22

new关键字

    用来在堆上申请内存地址,理论可以申请任意大小的内存区块(与系统有关),内存使用比较灵活,但产生的变量不会自动释放,除非delete手动释放,或者程序结束时由系统释放,在频繁调用的函数内创建的对象忘记释放会产生内存溢出,严重时导致程序出错,系统崩溃。

    new一般都是在类的定义中使用,结合delete可以使包含new出来对象的类也具有自带变量功能,这样就继承了两种方式的优势。


auto关键字

    用来声明自动变量。它是存储类型标识符,表明变量具有本地范围,块范围的变量声明(如for循环体内的变量声明)默认为auto存储类型。
    比如   int i=10; auto a = i; //a也是int类型
    其实大多普通声明方式声明的变量都是auto变量,他们不需要明确指定auto关键字默认就是auto。auto变量在离开作用域会变程序自动释放,不会发生内存溢出情况(除了包含指针的类)。

    auto的对应类型不是使用new出来的变量,而是static变量,static变量是程序接收的时候才释放对象的,它不需要手动释放。


ref关键字

    作用是把一个变量的引用传入函数,传入了这个变量的栈指针(不加ref的引用是堆引用)。传递到 ref 参数的参数必须最先初始化,这与out不同,后者的参数在传递之前不需要显式初始化。

out关键字

    作用是把一个变量在函数内赋值,实现返回多个变量。作为out参数传递的变量不必在传递之前进行初始化,但需要在方法返回之前赋值。如果在函数内没有对out变量赋值的话编译会不通过。(没有赋值,它并没有真正地分配内存)

    out可看作一种特殊的return,它作用、行为、特点和return是一样的,目的就是为了解决return无法返回多个参数的问题。

    如果一个方法采用ref或out参数,而另一个方法没有采用这两类参数,则可以进行重载。ref限制该参数在传入方法前必须被赋值,out限制该参数在方法中必须被赋值。

    使用ref和out,可以强制改变赋值方式返回引用对象而不是被复制的对象,在函数中处理的变量与函数调用中使用的变量是同一个,而不仅仅是值相同的copy,例如加了ref后可以直接new一下将原对象清空。

原创粉丝点击