C#学习(6)-----表达式、语句

一、

这个感觉没什么好说捏……

表达式,命令,声明是编程语言的基本组件。表达式可以得到一个值、一个对象、一个方法、一个方法的重载、一个名称空间、一个类等等等。

要注意的:

1.

此处只是得到这个方法,并不是要调用他(没用())

类似于C的函数指针。

        static void Main()
        {
            Action myAction = new Action(Console.WriteLine);
        }

2.

??:x是null吗?是的话把y变成100.

但是注意,y的type仍然跟x是一样的,是double。

        static void Main()
        {
            double? x = null;
            var y = x ?? 100;
            Console.WriteLine(y.GetType().Name);
        }
//输出结果:Double

但是好像涉及到类,如果x非空结果还是一样的,与x的类型相同。但是如果x是空,这一点就很不同捏。毕竟似乎gettype到的是牵引着的实例的类型。

        static void Main()
        {
            haha x = null;
            Program t = new Program();
            var y = x ?? t;
            Console.WriteLine(y.GetType().Name);

        }
//运行结果:Program

3.?:操作符

如果涉及的没有变量的话,对于值类型,会选择左右两边精度更高的作为返回的类型。

        static void Main()
        {
            var y = 5 > 3 ? 2 : 3.0;
            Console.WriteLine(y.GetType().Name);

        }

而且注意,写在冒号两边的东西必须能进行隐式类型转换。

二、语句概述

程序中语句执行的顺序称为控制流,也叫做执行流。

根据输入数据不同,语句不变,每次程序执行的控制流可能改变。

       static void Main()
        {
            string result = Console.ReadLine();
            try
            {
                double score = double.Parse(result);
                if (score >= 60)
                {
                    result = "Pass!";
                }
                else
                {
                    result = "Failed!";
                }
                Console.WriteLine(result);
            }
            catch
            {
                Console.WriteLine("Invalid input!");
                throw;
            }
        }

语句由分号结尾,但不一定所有分号结尾的都是语句。

如:using Systerm;是一个指令,public static int a = 0;是字段的声明

语句一定是出现在方法体的。

C#语言中的语句类型:

语句分为标签语句,声明语句和嵌入式语句。

下面让我们来一一介绍。

三、

1.声明语句

分为局部变量声明和局部常量声明。

变量声明:

        类型+声明器(变量名+初始化器)

        局部变量类型有具体类型和var类型。

 常量声明:

         const+类型+声明器(变量名+初始化器)

        必须有初始化器。

2.表达式语句

语句表达式+分号

当然不是所有的表达式都可以作为语句。

3.选择语句

4.try语句

try用于捕捉语句块的各种异常。尝试执行一个语句块,使用catch语句分门别类对异常进行处理。而try语句还有一个子句finally语句,不论是否异常都会执行。

一个try语句只能有一个finally语句,可以有多个catch语句,但只能执行多个catch语句中的一个。catch有两类,一类是通用的,一类是专用的。

namespace ConsoleAppPractice
{
    class Program
    {
        static void Main()
        {
            Calculator it = new Calculator();
            Console.WriteLine(it.Add(null,"aaa"));
        }

    }

    class Calculator
    {
        public int Add(string a,string b)
        {
            int result;
            int m = 0, n = 0;
            try
            {
                m = int.Parse(a);
                n = Convert.ToInt32(b);
            }
            catch (ArgumentNullException ane)
            {
                Console.WriteLine(ane.Message);
            }
            catch (FormatException)
            {
                Console.WriteLine("Your string form is invalid...");
            }
            finally
            {
                if (hasError)
                {
                    Console.WriteLine("Error...");
                }
                else
                {
                    Console.WriteLine("Done.");
                }
            }
            result = m + n;
            return result;
        }
    }

}

try不能同时检测出两个错误,因为会立马乌拉。

finally语句中,我们一般会写两个内容。一是释放系统资源,如关闭数据库连接等等。二是程序的log(执行记录)。

throw关键字是把错误丢给调用者处理。

5.迭代语句(循环语句)

foreach语句用于枚举一个集合的元素,即遍历,并对每个元素进行一次相关语句。

5.1什么样的集合可以被遍历?

对于array数组这个类,含有该接口的类型才能被遍历。其只有一个方法成员:得到这个集合的迭代器。

 

对于泛型的list也是如此。

5.2迭代器

迭代器其实相当于指针,可以逐个指向访问集合中的元素。

它这个bool类型的,如果还能移向下一个则返回true。

current是当前访问的元素,reset是拨回到集合最开始,不指向任何元素。

        static void Main()
        {
            List<int> a = new List<int>() { 1, 2, 3, 4 };
            IEnumerator enumerator = a.GetEnumerator();//此处有子类包含父类方法的知识
            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current);
            }
            enumerator.Reset();
            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current);
            }
        }

foreach就相当于对集合遍历的一种简记法。

        static void Main()
        {
            List<int> a = new List<int>() { 1, 2, 3, 4 };
            foreach ( var current in a)
            {
                Console.WriteLine(current);
            }
        }

6.跳转语句

continue.goto.break.return.throw

使用return原则:尽早return。

上面的写法比下面好 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值