C#中一些很基础但有经常导致错误的一些概念


char 的双重身份
char表示字符但却被看成是整数家族的一部分,它所表示的值是一个无符号整数,它可以参加计算,并可以隐式转换成int,long,ushort,uint和ulong
我看一下下面的例子就明白了:

 1using System;
 2
 3public class Characters
 4{
 5    public static void Main()
 6    {
 7        char firstSymbol;
 8        char secondSymbol;
 9        int intFirstSymbol;
10        int intSecondSymbol;
11        int result;
12
13        firstSymbol = '\u0034';
14        secondSymbol = '\u0039';
15
16        Console.WriteLine("firset as charactor:{0}",firstSymbol);
17        Console.WriteLine("SecondSymbol as Charactor:{0}",secondSymbol);
18        intFirstSymbol = firstSymbol;
19        intSecondSymbol = secondSymbol;
20        Console.WriteLine("firstSymbol as int:{0}",intFirstSymbol);
21        Console.WriteLine("SecondSymbol as int:{0}",intSecondSymbol);
22        result = firstSymbol + secondSymbol;
23        Console.WriteLine("result as int:{0}",result);
24        Console.WriteLine("result as character:{0}",(char)result);
25    }

26}
运行结果:


\u0034为字符4的Unicode值,\u0039为字符‘9’的Unicode值。

关于“++ --”操作符 放在操作数的前面和后面的区别
很多人都会认为 “++ --” 操作符放在变量的前后是没有区别的,看下面这段代码:
 1using System;
 2
 3class PlusPlus
 4{
 5    public static void Main()
 6    {
 7        int a=5;
 8        int b=10;
 9
10        Console.WriteLine("a++ = {0}",a++);
11        Console.WriteLine("++b = {0}",++b);
12    }

13}
运行结果:
a++ = 5
++b = 11
在代码中我们把操作符“++”分别放在变量“a”和变量“b”的前面和后面,但是输出的结果却是不同的,放在后面的a变量输出的结果没事使a变量增加,而操作符放在前面的b变量却自动增加了,一般我们都不会注意到这点,以至于我们在程序中出现了这样的错误我们都找不到原因,这是因为操作符“++ --”如果放在变量的后面是在整个表达式完成运算以后才会自增1,而放在放在前面则是先自增以后再参与表达式的运算。
posted @ 2008-01-21 14:48  Forrest Gump  阅读(212)  评论(0编辑  收藏  举报