• .net第三章-- C#语句的组成与使用


    前言

    • C#语句的组成与使用

    • 运算符
      算术运算符;关系和类型测试运算符;逻辑运算符;赋值运算;字符串运算符;位运算符;条件运算符;运算符优先级

    • 表达式的组成和书写规则

    C#语句的组成与使用

    语句(statement)

    • C# 程序的过程构造块,用于声明变量和常量、创建对象、变量赋值、调用方法、控制分支、创建循环等

    • 语句通常以分号终止

    • 由花括号({ 和 })括起来的一系列语句构成代码块

    C#语句的组成与使用

    在这里插入图片描述

    例子

    using System;
    namespace CSharpBook.Chapter03
    {
        class StatementTest
        {
            void PrintArea(int r)
            {  //代码块:printArea的方法体
                const double PI = 3.14;   //声明语句:声明常量
                double a;              //声明语句:声明变量
                if (r > 0)               //控制语句
                {
                    a = PI * r * r;       //赋值语句,计算圆面积
                    Console.WriteLine("半径={0}, 面积={1}", r, a);
                }
                else
                {
                    Console.WriteLine("半径={0},半径<=0,错误!", r); //调用静态方法
                }
            }
            static void Main()
            {  //代码块:Main的方法体
                StatementTest obj;        //声明语句:声明对象
                obj = new StatementTest(); //赋值语句/创建对象
                for (int i = -2; i < 3; i++)  //循环语句
                {
                    obj.PrintArea(i);    //调用对象方法
                }
                Console.ReadKey();
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    运算符

    • C#运算符(operator)是术语或符号,用于在表达式中对一个或多个称为操作数的进行计算并返回结果值

    • 一元运算符如++或new;二元运算符如算术运算符+、-、*、/;三元运算符:条件运算符“?:”

    • 当表达式包含多个运算符时,运算符的优先级控制各运算符的计算顺序

    • 通过运算符重载(overload)可以为用户自定义的类型定义新的运算符

    算术运算符

    在这里插入图片描述

    • 算术运算符两边的操作应是数值型。若是字符型,则自动转换成字符所对应的ASCII码值后再进行运算

    • 增量运算符(++、–)可以出现在操作数之前(++variable、–variable)或之后(variable++ 、variable–)

    关系和类型测试运算符

    在这里插入图片描述

    • 关系运算符的优先级相同
    • 对于两个预定义的数值类型,关系运算符按照操作数的数值大小进行比较
    • 对于string类型,关系运算符比较字符串的值,即按字符的ASCII码值从左到右一一比较:

    首先比较两个字符串的第一个字符,其ASCII码值大的字符串大,若第一个字符相等,则继续比较第二个字符,依此类推,直至出现不同的字符为止

    • 对于string以外的引用类型,如果两个操作数引用同一个对象,则==返回True。如果两个操作数引用不同的对象,则!=返回True。
    • int 和System.Int32是相同的数据类型

    逻辑运算符

    在这里插入图片描述

    赋值运算符

    在这里插入图片描述

    字符串运算符

    • C#提供的字符串运算符只有一个:“+”,用于串联(拼接)两个字符串
    • 在字符串串联运算中,如果一个操作数为null,则用空字符串来替换此操作数
      在这里插入图片描述

    位运算符

    在这里插入图片描述

    条件运算符

    • 逻辑表达式? 表达式1: 表达式2;

    • 首先计算“逻辑表达式”的值,如果为true,则运算结果为“表达式1”的值,否则运算结果为“表达式2”的值

    • 计算a和b两个数中较大的数,并将其赋给变量maxnum中,语句为:
      maxnum = (a > b)? a : b;

    null相关运算符

    在这里插入图片描述

    其他运算符和运算符优先级

    • sizeof用于获取值类型的字节大小,仅适用于值类型,而不适用于引用类型

    • sizeof运算符只能在不安全代码块中使用

    • typeof用于获取类型的System.Type对象,例如:System.Type type = typeof(int);
      若要获取表达式的运行时类型,可以使用.NET Framework方法GetType()

    • nameof用于返回标识符(类型、成员、变量等)的名称
      在这里插入图片描述

     unsafe static void Main()
            {
                Console.WriteLine("The size of short is {0}.", sizeof(short));
                Console.WriteLine("The size of int is {0}.", sizeof(int));
                Console.WriteLine("The size of long is {0}.", sizeof(long));
                Console.ReadKey();
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
               Type t1 = typeof(bool);
                Console.WriteLine("typeof(bool) is {0}", t1);
                int radius = 5;  Type t2 = radius.GetType();
                Console.WriteLine("radius.GetType() is {0}", t2);
                Console.WriteLine("Area = {0}", radius * radius * Math.PI);
                Console.WriteLine("The type of Area is {0}", (radius * radius * Math.PI).GetType());
                Console.ReadKey();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 表达式中的运算符按照运算符优先级(precedence)的特定顺序和结合性规则计算

    • 同一类别中的运算符优先级相同

    • 优先级和结合性都可以用括号控制

    表达式的组成和书写规则

    表达式的组成

    • 表达式由操作数(变量、常量、函数)、运算符和圆括号按一定规则组成。
    • 表达式通过运算后产生运算结果,运算结果的类型由操作数和运算符共同决定

    表达式的书写规则

    • 乘号不能省略,例如,a乘以b应写为a*b。
    • 括号必须成对出现,而且只能使用圆括号;圆括号可以嵌套使用。
    • 表达式从左到右在同一个基准上书写,无高低、大小区分

    例子

    int a = 1,b = 2,c = 3;
    a += b++ + c;
    Console.WriteLine(" a = {0},  b = {1},  c = {2}", a, b, c);
    Console.WriteLine(" c >= b && b >= a 结果为: {0}", c >= b && b >= a);
    Console.WriteLine(" a < b ? a++ : b++ 结果为: {0}", a < b ? a++ : b++);
    Console.WriteLine(" a = {0},  b = {1},  c = {2}", a, b, c);
    Console.WriteLine(" c += a > b ? a++ : b++ 结果为: {0}", c += a > b ? a++ : b++);
    Console.WriteLine(" a = {0},  b = {1},  c = {2}", a, b, c);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
     a = 6,  b = 3,  c = 3
     c >= b && b >= a 结果为: False
     a < b ? a++ : b++ 结果为: 3
     a = 6,  b = 4,  c = 3
     c += a > b ? a++ : b++ 结果为: 9
     a = 7,  b = 4,  c = 9
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    Task 05 Python操作钉钉自动化
    MySQL---安装与配置
    vue element 搜索框根据后台的接口实现模糊查询 + 分页特殊处理+重置表格
    pwnable.kr 简单题目详细笔记汇总
    五、程序员指南:数据平面开发套件
    Linux学习 - vi/vim编辑器
    gRPC(四)基础:gRPC流
    PHP毕业设计毕设辅导课(6):PHP 字符串变量
    创建Django项目_first_Django(下)
    Methyltetrazine-C12-Maleimide/5-TAMRA-5-Tetrazine/BDP FL methyltetrazine的制备
  • 原文地址:https://blog.csdn.net/weixin_51422230/article/details/127685169