C#基础知识系列二(值类型和引用类型、可空类型、堆和栈、装箱和拆箱)
前言 之前对几个没什么理解,只是简单的用过可空类型,也是知道怎么用,至于为什么,还真不太清楚,通过整理本文章学到了很多知识,也许对于以后的各种代码优化都有好处。 本文的重点就是:值类型直接存储其值,引用类型存储对值的引用,值类型存在堆栈上,引用类型存储在托管堆上,值类型转为引用类型叫做装箱,引用类型转为值类型叫拆箱。 这一句话概括起来很简单,可是真正的理解起来却没那么 …… 阅读全文
前言 之前对几个没什么理解,只是简单的用过可空类型,也是知道怎么用,至于为什么,还真不太清楚,通过整理本文章学到了很多知识,也许对于以后的各种代码优化都有好处。 本文的重点就是:值类型直接存储其值,引用类型存储对值的引用,值类型存在堆栈上,引用类型存储在托管堆上,值类型转为引用类型叫做装箱,引用类型转为值类型叫拆箱。 这一句话概括起来很简单,可是真正的理解起来却没那么 …… 阅读全文
前言 这一节主要来了解一下类和结构体之间的异同点、以及针对String和StringBuilder的用法、equals和==,其实可以看出很多地方都用到了上一节的值类型和引用类型、堆栈和装箱拆箱操作吧,慢慢的应用于实践,让理论与实践结合起来。类和结构体类和结构体的不同点: 1.关键字不同 一个是class,一个是struct 2.类型不同,一个是引 …… 阅读全文
前言 本节主要来讲C#中的各种运算符。主要包括is运算符、as运算符、checked和unchecked运算符、sizeof运算符、空接合运算符(??)、&和&&、移位运算符、增量和减量运算符、条件运算符(三元运算符)、命名空间别名限定符。正文1、is运算符is运算符可以检查对象是否与特定的类型兼容。比如下例中要检查变量是否与object类型兼容:in …… 阅读全文
前言 本节主要来学习下实例构造函数、私有构造函数和静态构造函数。 构造函数的作用: 1、当一个类在new实例化对象时,可调用构造函数进行初始化对象。 2、不带参数的构造函数称为“默认构造函数”。无论何时,只要使用new运算符实例化对象,并且不为new提供任何参数,就会调用默认构造函数。除非类是static的,否则 C# 编译 器将为无构造函数 …… 阅读全文
静态类 静态类与非静态类基本相同,但存在一个区别:静态类不能实例化。 也就是说,不能使用 new 关键字创建静态类类型的变量。 因为没有实例变量,所以要使用类名本身访问静态类的成员。 例如,如果名为 UtilityClass 的静态类有一个名为 MethodA 的公共方法,则按下面的示例所示调用该方法: public class UtilityClass { …… 阅读全文
前言本文主要来讲解一下C#中,自己觉得掌握的不怎么样或者用的不多,不太熟悉的关键字,主要包括base、this、new、override、abstract、virtual以及针对static字段和static构造函数之间的执行问题。base关键字base关键字用于在派生类中实现对基类公有或者受保护成员的访问,但是只局限在构造函数、实例方法和实例属性访问器中:调 …… 阅读全文
前言 不知道大家对const和readonly这两个关键字的区别有什么了解,原来自己之前还真不清楚它们到底是怎么回事,那么如果你也不是很清楚的话,可以一起来探讨一下。在了解这两个关键字的时候我们先来了解一下静态常量和动态常量。 静态常量:是指编译器在编译时候会对常量进行解析,并将常量的值替换成初始化的那个值。 而动态常量的值则是在运行的那一刻才获得的,编译器编译期间将 …… 阅读全文
前言catch 和 finally 一起使用的常见方式是:在 try 块中获取并使用资源,在 catch 块中处理异常情况,并在 finally 块中释放资源。Catch catch 这将捕获任何发生的异常。 catch(Exception e) 这将捕获任何发生的异常。另外,还提供e参数,你可以在处理异常时使用e参数来获得有关异常的信息。 catc …… 阅读全文