C#概述

           文章开始,先送上导图一张(千言万语,尽在其中!)~

     

     C#语言是基于微软公司开发的.NET类库,受Java影响,由C/C++演变而来的。因此,C#语言与上述三者存在着很深的联系,下面我们就从上边的图入手,概括分析一下C#。

     1、与C/C++关系

     C#与上述两种语言相比,更加现代、简单、完全面向对象和类型安全。

     现代:为编写下一代应用程序而产生,有很多新特性;简单:学习简单,抛弃了C++的复杂性,没有了指针、宏和多重继承,默认下所有放在任务托管中,垃圾回收由系统控制;完全面向对象:支持所有面向对象机制;类型安全:所有操作有一个类型安全。

    2、与Java关系

     C#可以说是在Java影响下产生的,因此,它们之间的联系就显得更为丰富。

     二者联系。相同点:都是完全面向对象的语言;Java与C#语法类似而且Java类库与.NET基础类的结构也很相似;两者都依赖于字节代码;都取消了指针;实行自动垃圾回收机制;通过多接口实现多重继承等。

     不同点:Java不如C#语法强大(不支持运算符重载和类型安全的枚举);C#可以与其他.NET语言编写的代码进行无缝交互操作,C#可以看做一个不太完整的Java替代器;.NET基类为C#提供了一个统一的、标准化的源,以满足常用功能的需要,但Java程序员有时必须从包中获取。

     另外,Java跨平台性强,技术更加成熟,但有时其功能繁琐,显得学院派,而且开发人员成本高;.NET问题解决度比较强、开发效率较高等。

     3、数据类型(结合VB)

     C#的数据类型分为值类型和引用类型。

     值类型中需要强调的是结构类型和枚举类型,引用类型包括类、接口和数组。

     结构类型是由一组不同类型的成员所组成的新的数据类型,结构类型的变量值包含了所有成员的值。一个结构类型可以声明构造函数、常数、字段、方法、属性、索引、操作符和嵌套类型。尽管列出来的功能看起来象一个成熟的类,但在C#中,结构和类的区别在于结构是一个值类型,而类是一个引用类型

      枚举类型是另一种复合值类型,和结构类型不同的是,枚举类型要求成员只能是整数类型。枚举类型主要用于表示有逻辑上相关量的项的组合。

      值类型和引用类型的区别:

      值类型:表示实际数据,存储的数据有固定长度;该类型数据存贮在栈中,且只将值存放在内存中。

      引用类型:表示指向数据的指针或引用,包含在内存中,如类、接口;引用类型数据存储在堆中。

     注:栈用于存储固定长度的数据,堆是由new分配的内存,一般其存储速度较慢。             

     4、运算符(VB)

     基本类型与VB相似,包括算术、比较、赋值、逻辑、条件、位、成员访问运算符。其中,算术运算符中多了一个简化方法(例:int a,a += b,即 a=a+b)

     5、流程控制(VB)

     顺序、循环、选择三大结构,参考VB学习,介绍一下Break/Using/Continue/Return语句,其他不再详述。

     Break表示中断,可用于退出for/foreach/while或do…while循环,循环结束后,立即执行后面的语句;

     Using语句可以确保在使用完资源密集型的对象后,就处理它们;

     Continue语句类似于Break,也必须用于for/foreach/while或do…while循环中,它只从循环的当前迭代中退出,然后在循环的下一次迭代开始重新执行,而不是退出循环。

     Return语句用于退出类的方法,把控制返回方法的调用者。如果方法有返回类型,return语句必须返回这个类型的值;若无返回类型,则该语句不能用与表达式。

     6、数组(对比VB)

     含义。数组是同一数据类型的一组值,它属于引用类型,因此存储在堆内存中。

     声明方法。C#中数组的声明方法比较多,下面举几个例子:

     int [] numbers;  //定义一个int类型,名为numbers的任意大小的数组变量

     int [] numbers=new int [5]; //声明并创建一个包含五个变量的int 类型数组

     int [] numbers=new int [5] {1,2,3,4,5}; //声明并创建一个包含五个整数1,2,3,4,5的数组

     int [] numbers={1,2,3,4,5};//声明一个包含五个整数1,2,3,4,5的数组

     属性。(1)数组可以是一维、多维或交错的;交错数组是元素为数组的数组,交错数组元素的维度和大小可以不同。

     例(交错数组):

class ArrayTest
{
    static void Main()
    {
        // Declare the array of two elements:
        int[][] arr = new int[2][];

        // Initialize the elements:
        arr[0] = new int[5] { 1, 3, 5, 7, 9 };
        arr[1] = new int[4] { 2, 4, 6, 8 };

        // Display the array elements:
        for (int i = 0; i < arr.Length; i++)
        {
            System.Console.Write("Element({0}): ", i);

            for (int j = 0; j < arr[i].Length; j++)
            {
                System.Console.Write("{0}{1}", arr[i][j], j == (arr[i].Length - 1) ? "" : " ");
            }
            System.Console.WriteLine();
        }
    }
}

结果为:element(0):1,3,5,7,9

       element(1):2,4,6,8

     (2)数值数组元素的默认值为0,引用数组元素的默认值为null;

     (3)数组的索引从零开始,所以具有n个元素的数组的索引是从0至n-1;

     (4)数组类型是从抽象基类型Array派生的引用类型,可以对C#中的所有数组实行foreach迭代。
     

     关于OO和设计模式的部分,我们会在之后的文章中展开详述。

     总结:针对C#的学习,一定要结合我们所学过的VB。各种语言之间都有很多相似的联系,从数据类型、控制结构、运算符、表达式等各个层面都有共同之处。

     同样,VB作为基于面向对象的语言,它和C#的最大不同之处是缺少了继承,但存在封装和多态,因此,我们也有能力据此更深入的理解C#,理解OO。

              

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值