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后面只能跟一条语句,若想执行多条语句时需要使用块语句,才对吧?

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

原文地址:https://www.cnblogs.com/bigbosscyb/p/13562794.html