那些年,我们一起疯狂的C#

那些年,我们一起疯狂的C#语言------总结

望大家认真看看哦,有惊喜哦!!!

第一章                   第一个C#程序

 

大概在2000年,微软推出了一种革命性的产品--.NET

 

目标:任何人,在任何地方,使用任何终端设备,都可以访问微软提供的服务。

 

.net Framework:要想让我们自己写的C#应用可以运行在Good FriendComputer上,必须有.net Framework

 

IDE(Itergrated Developer Environment)集成开发环境Linux:XWindow:傻X

解析:,net是一种平台,这种平台上可以跑多种语言,例如,vbj#,C#c#只是一种语言

第一个C#程序

   1. 使用vs创建C#程序的步骤:

新建项目(project)→生成可执行文件(build)→运行(run)

 2.解决方案资源管理器:包括解决方案名称、项目名称、编译后的

  可执行文件和源文件(以.cs为扩展名)等。

3.程序结构:命名空间中包含类,类中包含Main方法

 

   4.C#main方法

 

    注意点:Main方法首字母大写

 

      返回值可以为void或者int

 

    命令行参数是可选的

 

             四种Main()方法:

 

      static void Main(){}

 

      static void Main(){string[] args}

 

      static int Main(){}

 

      static int Main(){string[] args}

 

          5.C#中变量

 

      c#中常用数据类型:整型 int,浮点型float,字符串string

 

      布尔型bool

 

    语法:数据类型变量名称;

 

          c#中变量的命名规则有哪些?

 

          1,组成:英文字母、数字、“_

 

           2,开头:英文字母、“_

 

          3,不能使用关键字;

 

       6.C#中的常量

 

什么是常量

 

  变量:可以变化的量。

 

Int num=5;

 

Num=7;

 

  常量;一旦定义,其值不能再后续代码中再次修改。

 

解析:PI

 

Int num=5;

 

05.海量代码折叠

 

快捷键是Ctrl+K+S#region

 const 数据类型常量名称=;

 注意点:常量不能被重新赋值

  1.  常量必须在声明时初始化

 

 常量命名规则:01,有意义02,均大写03,长度宜长

 

什么时候使用常量:01,多处用到02,其值不易理解03,其值不变

 

      7.输入输出

 

         向控制台输出:

 

          Console.WriteLine()方法--输出后换行

 

          Console.Write()方法--输出后不换行

 

          Console.WriteLine("格式字符串",变量列表);

 

          例如:Console.WriteLine("我的课程名称是:{0}",course);

 

          {0}:占位符

 

          依次使用{0}{1}{2}与变量列表中的变量对应

 

          可以在字符中使用\n\t来控制换行或制表

          从控制台读入:

          Console.ReadLine();

 

          返回值为string类型

c#中的方法         

               方法是类的行为,便于修改、增加可读性、可重用、封装等。

 

               C#中方法的定义形式:

 

              访问修饰符返回类型方法名(参数列表)

              {

                  //方法的主体

              }

              访问修饰符:如publicprivate等。

              返回类型:如int ,double ,string,void等。

        方法名:命名规范:单词首字母大写--Pascal命名法

   类和对象

           类可以生成对象,类是对象的抽象

            成员变量也叫字段

    c#中的注释

 

       单行注释://

 

       多行注释:/**/

 

       文档注释:/**

 

             */

 

    C#中的region

 

       如何让自己的海量代码更可读?

 

       region可以使代码折叠

 

    VS中调试技巧

 

        断点:通知调试器应在某点上中段应用程序并暂停执行

 

        监视窗口:计算变量和表达式的值

 

   调试常用快捷键

 

         F5--开始调试

 

         Shift+F5--停止调试

 

         F9--设置或删除断点

 

         F10--逐过程调试

 

         F11--逐语句

2章           c#语法快速热身

c#javaswitch语句用法有什么不同?

 

     01.javaswitch后的表达式取值只能为(int/char),

 

     但是c#中取值可以是(int/char/string)

 

     02.javacase后可以没有break语句,但是在c#则不行 

 

java中如何定义数组?

 

      int[] nums=new int[]{1,2,3};

 

c#if条件结构

 

      C#java中的条件判断语句对比

 

      条件判断语句       java        c#

 

      if               if(){...}二者完全相同

 

      if...else...     二者完全相同

 

   注意:javac#switch用法有以下两点不同:

 

      01.javaswitch后的表达式取值只能为(int/char),

 

     但是c#中取值可以是(int/char/string)

 

     02.javacase后可以没有break语句,但是在c#则不行

 

     多个可以case 可以共用break语句

 

    c#switch小结

 

        条件判断的表达式类型:整型、字符型或字符串

 

        break语句的要求:

 

          01,每个case都要有break

 

          02default也要有break

 

          03,特殊情况:case中没有其他语句时,不需要break语句

 

 

   c#中的一维数组

 

      01.C#中数组定义语法:

 

      数据类型[] 数组名;

 

      string[] arr1;

 

      02.如何设置数组大小?

 

      使用new设置大小:创建长度为5的整型数组

 

      int[] array=new int[5];

 

      03.数组初始化:

 

      int[ ] arr = new int[5]{0,1,2,3,4};

 

      int[ ] arr = new int[ ]{0,1,2,3,4};   // 省略长度

 

      int[ ] arr = {0,1,2,3,4};                  // 省略new

 

      [5]——方括号中的数字决定数组的长度

 

      {0,1,2,3,4}——大括号中的元素个数决定数组的长度

 

      04.如何获取数组的长度(数组中元素的个数)

 

       答:数组名.Length

 

      05.如何循环输出数组中元素?

 

      // 循环输出数组元素

 

  int[ ] array = new int[5] { 0, 1 ,2, 3, 4};  // 声明并初始化一维数组

 

考题:

 

         //C#中和java中如下语句都可以定义一个长度为3int类型数组

 

         方式一:

 

         int[] arr=new int[]{1,2,3}

 

         方式二:

 

          int[] arr;

 

         arr=new int[]{1,2,3}

 

         //int[] arr=new int[3]{1,2,3;//C#中正确,java中不可以

foreach局限性:当需要改变数组中值的时候会报错

            for (int i = 0; i < array.Length;i++ )       // 输出数组中的所有元素

            {

                    Console.WriteLine(array[i]);

            }

 

      06.使用foreach循环遍历数组元素

 

        foreach循环一般用于遍历整个集合或数组

 

     语法:foreach (元素类型变量名 in 集合或者数组名)

                          {

                                   // 语句

                          }

 

      07.continuebreak语句的使用

 

       continue:结束本次循环,继续下一次循环

 

       break:结束当前循环

 

       08.二重循环复习

 

       int i, j;            // 循环变量

    // 外层循环控制打印的行数

 

     for (i = 1; i <= 5; i++)

     {

             // 内层循环控制每行打印数字的个数

             for (j = 1; j <= i; j++)

             {

                    Console.Write(j);

             }

 

             Console.WriteLine();

     }

 

 冒泡排序

 

       规则:每次比较相邻两数,小的交换到前面,每轮节航速后最大的数交换到最后

 

       用二重循环实现冒泡排序

 

          例如:5n)个数字存放在一维数组中,如何进行排序

 

          分析:外层循环控制比较多少轮,循环变量i

 

                    内层循环控制每轮比较多少次,循环变量j

 

                    观察规律,分析ij的关系,最终得出结论

 

                    i=n-1,j=n-1-i

 

                    代码框架如下:

 

                    for(i=0;i<n-1;i++)

 

                    {

 

                         for(j=0;j<n-1-i;j++)

 

                         {

 

                            //比较jj+1位置的元素

 

                            //如果前大后小就交换

 

                         }

 

                    }

 

int[] nums = { 10, 5, 8, 9, 50 };

 

            Console.WriteLine("排序前:");

 

            foreach (int item in nums)

 

            {

                Console.Write(item+"\t");   

            }

            Console.WriteLine("");

 

            //01.核心排序代码

 

            for (int i = 0; i <4; i++)

            {

 

                for (int j = 0; j <4-i; j++)

 

                {

 

                    if (nums[j]>nums[j+1])

                    {

                        int temp = nums[j];

 

                        nums[j] = nums[j + 1];

 

                        nums[j + 1] = temp;

 

                    }

 

                }

 

            }

 

            Console.WriteLine("排序后:");

 

            foreach (int item in nums)

 

            {

                Console.Write(item + "\t");

            }

            Console.WriteLine("");

 

            Console.ReadKey();

        }

 

    }

冒泡排序速记口诀(升序):  N个数字来排队

两两相比小靠前

外层循环N-1

内层循环N-1-i 

第三章         使用属性升级MyBank

 访问修饰符

public:在任何位置都可以访问

 private:只能在当前类中访问

 C#中的访问修饰符

  当类的某些敏感字段只希望类内部使用时,可以使用private访问

一个类的字段一旦定义成private,其他类访问不到

 c#中的访问修饰符:

  public    不受任何限制,访问级别最高

private   只有类的内部可以使用,访问级别最低

public class Panda{

   private string brand;

 private int age;

  public int Age

 {

 get { return age; }

 set { age = value; }

 }

 public string Brand

{get { return brand; }

 set { brand = value; }

}

属性

属性作用:修改和获取私有字段的值(间接对私有字段赋值,起到保护私有字段的作用)

属性语法

public class Person

{

private int age;

 public int Age

 {

 //get get{return age;}

 //set set{age=value;}

}}

面向对象三大特性

 01.封装

//可以将私有字段封装成属性,看成是一种封装(属性封装了字段)

//可以将一个方法写到类中这种方式成为封装(类封装了方法)

 

02.继承

 

03.多态

 

this关键字的作用

 

         c#this关键字有什么用?

 

         this代表的是当前类的实例,通过this可以访问当前类的对象的所有

 

         成员变量和方法

 

public void SetAge(int age)

 

      {

 

          if (age>0&&age<=20)

 

          {

 

              this.age = age;

 

          }

 

          else

 

          {

 

              this.age = 2;

 

          }

 

        

 

      }

 

 

 

      public int GetAge()

 

      {

 

          return this.age;

 

      }

 

数据安全

 

    static void Main(string[] args)

 

         {

 

               Student stu = new Student();

 

               stu._age = -2;//非法数据

 

               stu. _idCard = "123456"; //身份证号不能被修改

 

         }

 

         有时候将类中的字段公开是不安全的,但是如果设为私有成员:

 

 

 

         无法正常赋值,无法获得数据。

 

 

 

         使用方法解决数据安全问题

 

 

 

1,  使用者不可直接操作_age

 

2,   

 

3,  用方法返回_age供读取

 

4,  用方法限制使用者的非法赋值

 

 

 

       private int _age;

 

       public int 方法1()

 

       {

 

           return this._age;

 

       }

 

       public void 方法2(int 参数)

 

       {

 

         if(参数<0||参数>100)

 

         {

 

            this._age=18;

 

         }

 

         else

 

         {

 

           this._age=参数;

 

         }

 

       }

 

         这种写法太麻烦,于是诞生了属性

 

       class Student

 

{

 

        private string name;

 

        public string Name

 

        {

 

            get { return name; }

 

            set { name = value; }

 

        }       

 

}

 

       value相当于方法的参数,字段和属性的数据类型必须一致。

 

 

 

       get用于获取相应字段的值,

 

 

 

       set用于设置字段的值。

 

 

 

       getset都存在,读写属性。只有get时,只读属性。只有set时,只写属性。

 

 

 

       属性的作用:控制私有字段的可访问性,保护内部数据的安全。

 

 

 

       建议:类内部敏感字段使用属性来控制访问

 

 

 

       快速书写属性的方法:用ctrl+R+E

 

 

 

       类的成员:字段、属性和方法

 

 

 

       属性是不能用来存储对数据的,真正的数据是存储在字段中的。

 

 

 

  参数的传递方式

 

参数传递有两种方式:值传递和引用类型传递

 

 

 

注意:值传递不能保留参数的修改,要按引用传递,使用ref

 

 

 

通过引用传递参数:

 

 

 

1.       定义和调用时,在参数前都要使用ref

 

2.       在方法调用前:作为参数的变量要声明并赋值

使用场景:希望保留参数的更改。

                                                             我挺辛苦的

 

 

 

 

posted on 2015-10-21 20:32  放飞理想  阅读(1088)  评论(1编辑  收藏  举报

导航