C#基础知识(3)

来源:互联网 发布:淘宝申请中国制造 编辑:程序博客网 时间:2024/04/27 01:08

                            表达式与操作符

    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

原创粉丝点击