• C#:C#语言为我们提供了三类语句


    查阅了C#语言规范之后,得知C#提供了三种类型的语句:标签语句、声明语句、嵌入式语句。

    第一种:标签语句

    static void Main(string[] args)
    {
        goto label;
        System.Console.WriteLine("由于使用了goto语句");
        System.Console.WriteLine("所以中间的这些不会执行");
        label: System.Console.WriteLine("撒浪嘿哟");
    }

    解析:上面通过一个例子,简单认识一下什么是标签语句。标签语句一般搭配goto语句来使用(能够改变程序运行的逻辑)。

    第二种:嵌入式语句

    顾名思义,它可以嵌套在别的语句中使用。嵌入式语句包含的范围很广,它能够继续细分为:块语句;表达式语句;选择语句;迭代语句;跳转语句;try..catch...finally语句;checked/unchecked语句;lock语句;using语句;yield语句;空语句。

    什么是块语句?

    static void Main(string[] args)
    {
        {
            var a = 10;
            System.Console.WriteLine("a");
        }
    }

    解析:中间部分的花括号就是块语句。

    块语句发明的目的是:块语句就是用来解决某些地方只能写一条语句的情况。

    如何证明这点?

    例子:当a值大于90输出优秀,爱你两句话。

    static void Main(string[] args)
    {
        var a = 100;
        if (a > 90)
            System.Console.WriteLine("优秀");
        System.Console.WriteLine("爱你");
    }

    输出:

    优秀
    爱你

    上面的输出看似没有问题,并且能够满足我们的需求。

    现在将a值改成80,预期应该是一句都不会输出的,下面我们看下结果。

    static void Main(string[] args)
    {
        var a = 80;
        if (a > 90)
            System.Console.WriteLine("优秀");
        System.Console.WriteLine("爱你");
    }

    输出:

    爱你

    问题出现了,和我们预想的不一致,这是因为:if()后面只能写一条语句,当我们写了两条语句时,它只会把离他最近的语句当成复符合条件的语句去执行。

    所以,这个时候,块语句就能够帮我们解决遇到的问题,

    即:当程序某些位置只能出现一条语句,但我们的逻辑复杂,一条语句不能满足要求时,可以使用块语句:

    static void Main(string[] args)
    {
        var a = 80;
        if (a > 90)
        {
            System.Console.WriteLine("优秀");
            System.Console.WriteLine("爱你");
        }
    }

    再次运行程序,控制台无输出。与我们的预期吻合。

    注意:从上面例子可以发现块语句除了可以包含多条语句的用途外,还作为if语句的嵌套语句存在。

    第三种:声明语句

    定义:声明语句是用来声明局部变量或局部常量的。声明语句可以出现在块中,但是不能作为嵌入式语句使用。

    第一点:声明语句用来声明局部变量或者局部常量?那在类体中的属性声明不算声明语句么?不算。

    using System;
    namespace statements
    {
        class Program
        {
            static void Main(string[] args)
            {
                var a = 80;
                if (a > 90)
                    System.Console.WriteLine("哈哈");
            }
        }
    
        class Person
        {
            public int Number { get; set; }
        }
    }

    上述例子中,var a =80;就是一条声明语句。声明了一个局部变量a。但是在Person类中,public int Number { get; set; }并不是声明语句。

    第二点:声明语句可以出现在块中,但是不能作为嵌入式语句使用?举个例子,便可理解。

    static void Main(string[] args)
    {
        var a = 80;
        if (a > 90)
            var b = 88;
        if(a<=80)
        {
            var b = 88;
        }
    }

    我们可以看一下,编译器给我们的提示:

    第一条 声明语句 var b=88;作为了被嵌套在了if语句中,与声明语句的定义不符;第二条 声明语句 var b =88;被放到了块{}中。这是允许的。

    总结:

    1、标签语句不怎么用,声明语句用起来非常简单又非常常用,唯独需要花功夫去记忆的即使嵌套语句。

    2、在上面块语句作为嵌套语句使用在if语句的例子中,忽然觉得,从前老师教的 if语句后面只写一条语句时,{}可以省略?---- 正常的解释是:if后面只能跟一条语句,若想执行多条语句时需要使用块语句,才对吧?

    以上是对语句部分的总结,记录下来,以便以后查阅。

  • 相关阅读:
    c#构造函数对string类型赋初值
    个人计算机管理
    .net Core2建立MVC网站,部署
    运行或开发.NET Core 的先决条件(支持项目、依赖项)
    在Windows下不使用密码远程登陆Linux
    在Linux下不使用密码远程登陆其他Linux
    如何查看MySQL中每张表占用的空间大小
    pdo如何防止 sql注入
    受教了,memcache比较全面点的介绍,受益匪浅,适用memcached的业务场景有哪些?memcached的cache机制是怎样的?在设计应用时,可以通过Memcached缓存那些内容?
    LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法)
  • 原文地址:https://www.cnblogs.com/bigbosscyb/p/13562794.html
Copyright © 2020-2023  润新知