zoukankan      html  css  js  c++  java
  • C#学习记录2——语言基础

    第二部分关于c#语言的一些基础,大部分学过Java,C++的就差不多,so我就只写写C#里面特有的了

    1.输出语句带参数列表

        其实就是上一节里面的那个System.Console.WriteLine()方法,C#为这个方法提供了一个很灵活的输出形式

    1 System.Console.WriteLine("myInt : {0}, myInt1 : {1}", myInt, myInt1);

        很简单,就是在双引号里面用大括号{}和参数index来代表后面的参数列表;实例中:{0}表示myInt,{1}表示myInt1

        不过有几点需要注意:一个是保证myInt和myInt1在前面已经被声明并且赋值,否则不能通过编译。

              另一个就是要保证{}里面的数不要超过后面参数和列表的有效范围(从0开始)。

    2.有关调试和运行

        如果直接通过调试然后直接运行程序,你会发现程序运行之后直接就退出,没有时间查看结果。

        解决方法就是,在程序的结尾加入一句话

    Console.ReadKey();

        它将使程序在此暂停等待用户输入任意一个字符。

    3.枚举类型

        这个在其他语言里面也有,不过C#里面有一些区别

       class Program
        {
            enum ClothSize  : uint
            {
                Small = 1,
                Large = 2,
            }
            static void Main(string[] args)
            {
                System.Console.WriteLine("Size: {0}",ClothSize.Large);
                System.Console.WriteLine("Size2: {0}", (uint)ClothSize.Small);
                Console.ReadKey();
            }
        }

        通过枚举声明了一种称为ClothSize的类型,来表示衣服的尺码。:unit表示它的基类型,也就是里面是使用unit(即unsigned int)表示。这里如果不说明的话则默认为是int,并且这里不可以使用char!!!一定注意。

        例外枚举的声明要在任何方法之外,作为类里面的一个成员变量存在,如果将其写在例如Main()的方法里面是不可以的。做好准备之后,可以调试运行了

        结果如上图。这里体现了枚举值得两种表现形式。如果不加说明,默认的将使用其符号名,也就是枚举声明时使用的名字(如Large,Small);如果想使用枚举常量的值(具体的1或2等等),需要通过类型转换,在前面加上(unit)等。

    3.判断语句

        在if,while,do_while,for等语句里面包含了一个判断语句,如果之前习惯使用其他的语言,那么可能已经养成了一个习惯,就是用0和非0这样的表示方法代替true或false。这种方法在C#里面是不允许的。C#里面所有的判断语句必须使用返回值为布尔类型的语句。这样做保证不会出现一些没有注意到的错误。例如,常见的if( temp = 2)。本意是使用==,这样一个=会返回2这个值,如果是在其他语言里是能够通过的,但是C#会保证进行提醒,要求更正。

    4.switch语句

        C#里面的switch语句,不允许在某一case不是空的情况下继续向下进行。不过既然这个case里面没有任何动作,何必加它呢·······

        如果希望进行某一个case之后转换到其他的case,使用goto。<但是强烈不建议,会使程序变得很难读,转来转去的@@>

    5.foreach语句

        这个在java里面有,C++11里面也添加了。但是还是特别的说一下。

        

     1             int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
     2             foreach (int num in arr)
     3             {
     4                 System.Console.Write(num + " ");
     5             }
     6             Console.WriteLine("遍历"); 7             Console.ReadKey();();

        通过foreach对数组进行遍历。这里说一个要注意的事情,writeline()里面通过+来将两段文字组合,要注意如果只是想添加一个空格隔开,一定要用双引号“ ”将空格包起来。如果用单引号‘ ’,那么根据引号之外的类型:如果是可以转换成int型的,例如char,那么会把两部分都转换成int(空格的int为32),然后两部分相加;如果不能转换成int,例如string,那么就会被当成空格输出。所以为了保证是空格,使用双引号更保险。

        另外,不能通过foreach对in前面的变量进行赋值等改变,例如

    1             foreach (int num in arr)
    2             {
    3                 num--;
    4             }
    5             Console.WriteLine("遍历");

        这样是会出现错误的。可以理解为,num只是一个引用变量(C/C++里面概念),即通过指针进行访问,改变它也没有任何意义。

        ~~~!!!求更详细的解释!!!~~~

        下面一个尝试在foreach里面对arr数组进行改变

            static void Main(string[] args)
            {
                int [] arr= {1,2,3,4,5,6,7,8,9,10};
                int temp =0;
                Console.WriteLine("声明数组后");
                foreach (int num in arr)
                {
                    System.Console.Write(num + " ");
                }
                Console.WriteLine("\n下面再foreach里面尝试改变arr数组");
                foreach (int num in arr)
                {
                    System.Console.Write(num  + " ");
                    arr[temp]++;
                    temp++;
                    System.Console.Write(num + " ");
                }
                Console.WriteLine("\n尝试改变之后的数组");
                foreach (int num in arr)
                {
                    System.Console.Write(num + " ");
    
                }
                Console.WriteLine();
                Console.ReadKey();
            }

     

        注意看到,在第二个foreach语句中,是能够对arr数组里面的值进行修改的,也就是说这个集合是实实在在存在的,可以对它操作。但是in前面的这个num还是不会变。

        ~~~~!!!求解释!!!~~~~

    6.short circuit evaluation

        中文为“短路测试”。其实所有语言都有,但是因为当时我学的时候就有点不理解,所以在这还是说一说。

        这个短路主要是指在AND与,和OR或判断时,可以只判断前面一个,而忽略后面一个。

        if( (x !=null) && (x.instance>=50))

        这个AND判断,如果第一句返回false,就会跳过后面第二句话的判断。

        if( (x == null) || (x.instance<50))

        这个OR判断和上面相反,如果第一句为true就不会进行后面一句了    

        这样做的好处是,有时后一句话的判断要建立在第一句成立的情况下,否则会出项异常。

        向上述的两个例子,如果x是空,那么久不应该再进一步对它的成员变量进行判断,否则会出NullPointerException

  • 相关阅读:
    关于重载和重写的区别
    UML的关联(Association), 聚合(Aggregation), 组合(Composition)区别
    解析CSS加密技术之“障眼法”
    ASP.NET中MEMCACHED
    新建项目的无法应用已有项目
    C# 判断两张图片是否一致的快速方法
    压力测试中需要掌握的几个基本概念
    软件测试Web数据分析工具HttpWatch安装
    在SQL Server实现最短路径的搜索
    从算法入手讲解如何在SQL Server中实现最优最简
  • 原文地址:https://www.cnblogs.com/sywang/p/4359213.html
Copyright © 2011-2022 走看看