看完C#视频后,感觉好像东西混了,脑袋里一团糟。很想将C、C++和C#的相关内容仔细比较一下,可又感觉不是那么容易搞明白的。估计需要再看书比较才行。对于与类相关的知识,还处于最初阶段。最想总结的就是基础部分,我感觉其实它不是看书时那么多的一个一个罗列下来的。它有内在规律。
1.类型转换部分:隐式转换总是由低精度向高精度转换,而显式转换则是手工的完成隐式转换不能做到的,是逆向的。这两种方法是互补的。面向对象中是通过convert类实现的。先看一下C#中的最常用的几种数据类型:
这张表中所列出的数据类型可以分为四类:整数型、字符型、浮点数型和布尔型。其中布尔型只有bool,字符型只有char,浮点型有三个:decimal,double,float.而整数型有八个,又可分为两类:有符号的和无符号的。sbyte和byte,short和ushort ,int和uint,long和ulong.
我们在看一下隐式转换的种类:
我们就以第二个为例来看,sbyte都可以隐式转换为哪些:short,int ,long,float,double,decimal.sbyte是有符号的,有负数部分,所以,所有无符号的类型它都不能实现转换,剩下的就是可以转换的这些了。
显式转换的类型是逆向进行的,隐式不能实现的,显式来实现。比如:sbyte可以转换为byte,ushort,uint,ulong等。
还有convert类可以实现以下转换:
2.操作x&&y和x&y有什么不同?
首先一个&和两个&&都是实现逻辑“与”的判断。操作x && y 对应于操作 x & y ,不同的是,如果 x 为 false,则不计算 y(因为不论 y 为何值,“与”操作的结果都为 false)。 这被称作为“短路”计算。不要小看这点不同。在以下三种场景中有区别的:
1 if(userName !=null && userName .length>0) 这样的条件只能用&&,而不能用&,因如果用userName !=null 为false 的话,userName .lengh>0就不会再判断了,但如果换成& 的就会报错。这种场景下只能使用&&。
2 if(userName!=null && age>0) 这种场景下&&和& 都可以,但&&性能会好一点,因为x为false ,那么就不会再判断y了。
3 还有一种场景需要使用& ,如:silverlight 后台数据验证,当提交后没有通过验证的都需要标记,这种情况下就可以用&。