c#学习笔记Day1

第一章

1.变量初始化

1.1 变量初始化是c#强调安全性的另一个例子。简单的说,c#编译器需要用某个初始值对变量进行初始化,之后才能在操作中应用变量。大多数现代编译器把没有初始化标记为警告,而C#则把他当做错误来对待,这就可以防止我们无意中从其他程序遗留下来的内存中获取垃圾值。

1.2 c#有两种方法可以确保变量在使用前进行了初始化:

    1.变量是类或结构中的字段,如果没有显示初始化,创建这些变量时,其默认值就是0.

    2.方法的局部变量必须在代码中显示初始化,之后才能在语句中使用他们的值。此时初始化不是在声明该变量时进行的,但编译器会通过方法检查所有可能的路径,如果检测到局部变量在初始化之前就使用了它的值,会产生错误。

1.3 考虑下面语句:

         Something objSomething;

         在c#中,这行代码仅会为Something对象创建一个引用,但这个引用还没有指向任何对象,对该变量调用方法或属性会导致错误。

         在C#中实例化一个引用对象需要使用New关键字。使用New关键字把该引用指向存储在堆上的一个对象。

2.类型推断

2.1 类型推断使用Var关键字。编译器可以根据变量的初始化值“推断”变量类型。

2.2 使用var时的注意事项:

1. 必须在定义时初始化。也就是必须是var s = 1;形式,而不能是如下形式: var s; s = 1;

2. 一但初始化完成,就不能再给变量赋与初始化值类型不同的值了。比如,var s=1;声明后再有s="abc"是不支持的。

3.var要求是局部变量,不能是全局变量。

4.使用var定义变量和object不同,它在效率上和使用强类型方式定义变量完全一样。

3变量的作用域

4.常量

1.常量有如下几个特点:

         常量必须在声明时初始化

         常量的值必须能在编译时用于计算,因此不能从一个变量中提取的值来初始化常量。如果需要那么做,应使用只读字段

         常量总是静态的,但不允许在常量声明时包含static修饰符

5.预定义数据类型

1.值类型与引用类型

         区别是值类型直接存储其值,引用类型存储对其值的引用。

         这两种类型存储在内存的不同地方:值类型存储在堆栈中,引用类型存储在托管堆中。

2.特别的String类型

         String类型是一个引用类型,string对象被分配在堆上,而不是栈上。因此,当把一个字符串变量赋予另一个字符串时,会得到对内存中同一字符串的两个引用。但是,string与引用类型的常见行为有一些区别,例如,字符串是不可以改变的。修改其中一个字符串,就会创建一个全新的string对象,而另一个字符串不发生任何改变。

 

猜你喜欢

转载自blog.csdn.net/weixin_39504659/article/details/84135754