您的位置:首页 > 编程语言 > C#

C#基础知识(3)

2009-12-06 14:52 197 查看
表达式与操作符

1.基本操作符

. C#的点操作符用于成员访问。包括命名空间访问类、类访问方法和字段

等。
System.Console.WriteLine("你好世界"); //命名空间访问类,类访问方法
int maxNum = Int32.MaxValue; //类访问属性

() 在C#中表示方法、方法调用、委托和委托调用。
int i = int32.Parse("123"); //一个参数的方法调用
System.Console.WriteLine("i={0}",i); //两个参数的方法调用

[] 在C#中用于访问元素。该操作符主要用于数组访问和索引器访问
int[] intArray = new int[32];
intArray[0] = 8; //数组访问第一个元素

++和-- 自增、自减操作符只能用于一个变量、一个属性访问或索引器,而

不能用于常量和其他表达式(如:--8、++9、(i+j)++等都是错的)

int i =8,j;
j = i++; //执行运算后 i等于9 j等于8 即先使用,后加1
i = 8;
j = i--; //执行运算后 i等于7 j等于8 即先使用,后减1
i = 8;
j = ++i; //执行运算后 i等于9 j等于9 即先加1,后使用
i = 8;
j = --i; //执行运算后 i等于7 j等于7 即先减1,后使用

int i = 1;
i++;
Console.WriteLine(i);
i = 4;
Console.WriteLine(i++);
执行结果为:
2
4

new new关键字是为引用类型(主要是类、数组、委托)在堆中开辟空间创建

对象。

object obj = new object(); //创建object类的一个实例对象
int[] intArray = new int[32]; //创建一个int类型数组

sizeof sizeof操作符返回由给定类型的变量占用的字节数,只能用来计算

值类型所占的字节数。返回值类型是int类型。只能sizeof(int)等,不能sizeof

(1)等。

typeof typeof操作符返回的是给定类型的System.Type对象即系统类名称,
只能typeof(int),返回System.Int32,不能typeof(i)等。

2.赋值操作符

简单赋值操作符 =
它将右操作数的值赋予左操作数给定的变量、属性或索引器元素。

复合赋值操作符 += -= *= /= %= &= |= ^= <<= >>=
它对两个操作数进行指定的操作,然后将结果值赋予左操作数指定的变量、

属性或索引器元素。
int i,j,k; i=j=k=8; //操作完成后,i、j、k的值都是8
int i=j=k=8; 是错误的

3.算数操作符
+ - * / % (加、减、乘、除、模(求余数))

4.一元加减操作符
+ - 相当于正负号

5.比较操作符
== != < > <= >= (等于、不等于、小于、大于、小于等于、大于等于)

6.位操作符
& | ^ ~ (与、或、异或、取补)
它们是针对二进制位进行操作,高级语言主要采用十进制来计数,汇编语言

采用二进制。C#除了支持十进制也支持十六进制(数字0-9,字母a-f表示10-15),

用0x作为十六进制数值的前缀,如:0x0c表示数值12,0xec表示数值236。十进制转

换成其他进制用除以基数求余数的方法。其他进制转换成十进制用乘以基数的幂

的方法。
& 对于布尔型 有false就为false 对于数值型的二进制位有0就为0

| 对于布尔型 有true就为true 对于数值型的二进制位有1就为1

^ 对于布尔型 有false和true才为true 对于数值型的二进制位有1和0才为1

~只能针对一个数值型的二进制位,是把该二进制的0变成1,1变成0

7.移位操作符
<< >> (左移、右移)

它们只能对数值型的二进制位移位。
x<<2 把x的二进制位向左移两位,后面用0填补

8.条件逻辑操作符
&& || ! (逻辑与、逻辑或、逻辑非)
&&与& ||与| 的区别除了&&、||只能运算布尔类型外 x&&y 只有x为true

时才运算y x||y 只有x为false时才运算y
如:求一年是不是闰年(能被400整除或能被4整除但不能被100整除)

int year = int.Parse(Console.ReadLine());
bool runnian =(year/400==0)||((year/4==0)&&(year/100!=00));
if (runnian)
Console.WriteLine("{0}是闰年",year);
else
Console.WriteLine("{0}不是闰年",year);

9.三元运算符
?: 如b?x:y b为true就运算x,得到的值就是运算结果,否则运算y,得到的

值就是运算结果

如:可以在求闰年加入以下语句
string rn = runnian?"是":"不是";
Console.WriteLine("{0}{1}闰年",year,rn);

用冒泡排序法排序

//首先把要输入的数放进一个数组
int[] intArray = new int[10];
for (int i=0;i<10;i++)
{intArray[i] = int.Parse(Console.ReadLine());}
//再利用冒泡排序法排序
//两层循环(第一层的变量与数组没关系,两层都是有几个数就循环几次)
for (int x=0;x<=intArray.Length-1;x++)
//第二层循环与数组有关,要注意数组元素下表从0开始,这样元素个数就是

//Length-1个了
{for (int y=0;y<intArray.Length-1;y++)
{if (intArray[y]>intArray[y+1])
{
int temp = intArray[y];
intArray[y] = intArray[y+1];
intArray[y+1] = temp;
}}}
//最后输出数组中的元素
for (int z=0;z<10;z++)
{
Console.WriteLine(intArray[z]);
}

10.提升操作符

提升操作符外表和前面的简单操作符、算数操作符、位操作符、比较操作符

一样,但提升操作符的操作数可以是可空类型(值类型可以隐式转换为可空类型

,可空类型必须显式转换为值类型)。

如: int i=123;int? j=i;int? k=null;
int? ni1=j++; int ni2=(int)ni1; int? ni3=k+i;
ni1为 123 ni2为 123 ni3为 null

11.空合并操作符

?? T c=a??b 要求a为可空类型或引用类型 只有a为空时运算结果才为b

如: int? a1=123;int? a2=null;int b1=123;int? b2=123;
int c1=(int)(a1??b2); int c2=a2??b1; int?c3=a2??a2;
c1为 123 c2为 123 c3为 null
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: