• C# 发展史


    C#开发的进化史


    今天开始呢,我会跟大家一起学习C# ,我会由浅入深从基础来教大家,给大家推荐一本个人认为最为适合C#入门的书《C#本质论》这本书写的确实不错,如果有兴趣的话可以买来看一看,在期刊期间我也会发一些关于有趣的小案例,努力让大家学到新的知识。我写的文章可能很枯燥,我尽力让他不枯燥吧。

    学习工具 Visual Stdio 2017
    操作环境 win10

    本篇推文要掌握的是:
    1.C#的诞生
    2.一个进化的例子
    3.C#语言写作规范
    闲话少说,进入正题
    一.C#的诞生
    C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。它是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它继承C和C++强大功能但是由去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。C#是微软公司在2000年6月发布的一种新的编程语言,主要由安德斯·海尔斯伯格(Anders Hejlsberg)主持开发,它是第一个面向组件的编程语言,其源码会编译成msil再运行。它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,并且新增了许多功能及语法,而且它是微软公司.NET windows网络框架的主角。 (转自:百科)
    那么拿中国市场来说,C#处于一个很尴尬的地位,功能性强且稳定,但是目前中国可以说是Java语言和近年来崛起的python语言的大部分市场,C#个人认为可是说是最适合快速开发的语言,并且后期的 ASP.NET 首选语言是C#,所以个人还是非常期待c#在将来能崛起。
    二.一个进化的例子

    我们先来大概的了解一下C# 各个版本的诞生年龄和对应的编译软件Visual Stdio 的版本吧。
    语言版本 发布时间 .NET Framework要求 Visual Studio版本
    C# 1.0 2002.1 .NET Framework 1.0 Visual Studio .NET 2002
    C#1.11.2 2003.4 .NET Framework 1.1 Visual Studio .NET 2003
    C# 2.0 2005.11 .NET Framework 2.0 Visual Studio 2005
    C# 3.0 2007.11 .NET Framework 2.03.03.5 Visual Studio 2008
    C# 4.0 2010.4 .NET Framework 4.0 Visual Studio 2010
    C# 5.0 2012.8 .NET Framework 4.5 Visual Studio 20122013
    C# 6.0 2015.7 .NET Framework 4.6 Visual Studio 2015
    C# 7.0 2017.3 .NET Framework 4.6.2 Visual Studio 2017
    C# 7.1 2017.6 .NET Framework Visual Studio 2017 v15.3
    C# 8.0 待发布 .NET Framework 4.7.1 Visual Studio 2017 v15.7
    《C#高级编程》这本书市面上发行的最新版本是《C#高级编程 C# 6.0 & .NET 4.6》 ,如果有能力的话海外淘应该可以买到更新版本的书,但是一般是全英文的。
    接下来我们来领略一下他各个版本的不同吧。
    1:C#1.0可是说是完全模仿Java,并保留了C/C++的一些特性比如说结构体struct,对于咱们学完C语言的同学,这是非常容易理解,非常容易上手的。
    2:C#2.0加入了泛型的概念,也与Java1.5的泛型如出一辙,其实我感觉C#2.0加入的迭代器(Iterators)挺好玩的。
    3:C#3.0加入了一堆语法糖,并在没有修改CLR的情况下引入了Linq查询,这是一个非常大的进步,虽然当时很多项目出于性能之类的原因没有采用,但是C#至今是最适合快速开发的编程语言之一。
    4:C#4.0增加了动态语言的特性,从里面可以看到很多javascript、 python这些动态语言的影子。虽然越来越偏离静态语言的道路,但从另一个角度来说,这些特性也都是为了提高程序员的生产力,当然现在我们也看到了,确实不错,但是近年来好像被国内主流的Java语言遮住了光芒,期待他能在以后大放光彩,因为Java语言不能跨平台确实是一个Java非常严重的缺点,而且Java要收费了,那么意味着中国的大部分公司要找出路了,个人觉得微软公司的.NET语言又要开始崛起了,期待吧,以后的事情以后说。
    5. C#5.0 最大的亮点是 CASE 运算符不单单只是支持单个变量或常量,还支持表达式了
    例如:

    switch(myobj)
    {
       case string.IsNullorEmpty(myotherobj):
    case myotherobj.Trim().Lower:
    }
    这个就可以选择的时候直接判断是否为空值,不用管变量 myotherobj 的值是大写还是小写了。
    6.C# 6.0 的特性就更多了,我先拿一个小程序来讲一下
    以往显示某个变量时, 我们一般会这样写 :那么到了C# 6.0 代码变得更少

    这个案例写的有点长,目的是为了让大家了解一下C#以往全面的编程风格。我们再来了解一下c#新版本语法格式:

    其实这种字符串插值 “$” 可以说是等同于 string.Format
    其余的像空条件操作符、成员函数/属性的Lambda表达式、静态类Using、索引初始化等等的一些C#的特性我会在后面的推文讲,本节不做过多的叙述。
    7.C# 7.0 和C# 8.0 其实我没过多的了解过,因为敲代码的时候有些地方在我大脑里固化了,不然而然的就会写出来,而且因为工作时间原因我不会强迫自己追求太多的东西,当然这不是说没有上进心,我只能说我在努力着,闲下来的时候除了必须做的事情之外,其余的时间就一定是在学习新的知识,因为计算机技术领域更新太快,不了解前沿的知识,是会被时代所淘汰的,那么,等我把C#7.0和C#8.0用熟了后,我补给大家一份推文,以示谢罪。

    三.C#语言写作规范
    3.1命名规范
    上面我也说了C# 是C系语言,那么它其实跟C语言的明名规范一样

    1. 只能以字母或下划线开始;
    2. 不能以数字开始;
    3. 一般小写;
    4. 关键字不允许用系统保留字
      二、函数名的命名规则

    大家了解一下C# 里面控件的命名规则
    首先是C# 里面大家最先接触到的变量的明名规则
    类型 前缀 示例
    Array arr arrShoppingList
    Boolean bln blnIsPostBack
    Byte byt bytPixelValue
    Char chr chrDelimiter
    DateTime dtm dtmStartDate
    Decimal dec decAverageHeight
    Double dbl dblSizeofUniverse
    Integer int intRowCounter
    Long lng lngBillGatesIncome
    Object obj objReturnValue
    Short shr shrAverage
    Single sng sngMaximum
    String str strFirstName

    咱么再来看一下属于C#核心技术的窗体控件的命名规则
    数据类型 数据类型简写 标准命名举例
    Label lbl lblMessage
    LinkLabel llbl llblToday
    Button btn btnSave
    TextBox txt txtName
    MainMenu mmnu mmnuFile
    CheckBox chk chkStock
    RadioButton rbtn rbtnSelected
    GroupBox gbx gbxMain
    PictureBox pic picImage
    Panel pnl pnlBody
    DataGrid dgrd dgrdView
    ListBox lst lstProducts
    CheckedListBox clst clstChecked
    ComboBox cbo cboMenu
    ListView lvw lvwBrowser
    TreeView tvw tvwType
    TabControl tctl tctlSelected
    DateTimePicker dtp dtpStartDate
    HscrollBar hsb hsbImage
    VscrollBar vsb vsbImage
    Timer tmr tmrCount
    ImageList ilst ilstImage
    ToolBar tlb tlbManage
    StatusBar stb stbFootPrint
    OpenFileDialog odlg odlgFile
    SaveFileDialog sdlg sdlgSave
    FoldBrowserDialog fbdlg fgdlgBrowser
    FontDialog fdlg fdlgFoot
    ColorDialog cdlg cdlgColor
    PrintDialog pdlg pdlgPrint

    还有很多时候会遵循“驼峰命名法”或者“匈牙利命名法”
    而且“驼峰命名法”又分为“小驼峰命名法”和“大驼峰命名法”
    小驼峰法
    变量一般用小驼峰法标识。驼峰法的意思是:除第一个单词之外,其他单词首字母大写。譬如
    int myHomeName
    变量myHomeName第一个单词是全部小写,后面的单词首字母大写。
    大驼峰法
    相比小驼峰法,大驼峰法(帕斯卡命名法)把第一个单词的首字母也大写了。常用于类名,命名空间等。譬如 public class DataBaseAdmin; 语句用的就是“大驼峰命名法”。
    例如咱么说,给Button控件命名,我个人的习惯是“小驼峰命名法”

    我们对其中的两个Button 控件(登陆、退出)的命名为btn_Login和btn_Exit 这个就是取了Buttton控件的缩写btn然后用下划线加要表达的意思的英文单词来命名,例如给的这个登陆界面的Name属性为frmLogin,因为Form窗体的简写为frm,而Login 表示该控件的用途。

    例如这个项目,这几个窗体的用途简单明了,对于后期的维护用处非常大。

    但是在做东西的时候,会统一命名规范,那么我们就要遵循统一下来的命名规范,例如
    ,这个项目就是窗体统一的用大写的“F”来开头,加一个下划线后面的用来表示用途。

    那么再来说匈牙利命名法:基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。 这个我没太用过,并不是他不好,而是我周围的人统一用驼峰的方式来命名,那么我就习惯用驼峰来命名了。
    我来举一个算是匈牙利命名法的例子吧
    例如咱么说的 窗体句柄 hwnd ,其中字母 h 表示的是句柄,wnd表示的是windows窗体的缩写,那么 AllWnd 当然就表所有窗体了,这么说不太容易理解。

    这样就容易理解了,这两行代码是以前写c++的时候写的,现在拿来用一下,这两行代码非常容易理解, “ RECT” 类定义一个名为“rect”的对象,“rect”这个对象是用来存储成对出现的参数,比如,一个矩形框的左上角坐标、宽度和高度。
    而“HWND”对象是用来获取句柄的,那么自然而然“AllWnd”就是获取所有窗体的句柄啦。
    在命名规范这说最后几句话,要注意,“写注释是流氓,名字瞎起是扯淡”。因为程序的代码行数是非常多的,人的记忆能力有限,经过一段时间过后,我们会忘记某段代码是用来实现什么功能的。例如说上面定义矩形这行代码如果说命名的简单明了,而是随意取得名字,那么在后期的维护中是非常难的,咱们用一个非常简单的小程序来向大家演示一下:
    static void Main(string[] args)
    {
    double a = 3.14;
    double a1 = 5;
    Console.WriteLine(“圆的面积为:{0}”, a * a1 * a1);
    Console.Read();
    }

    这个小程序无非就是计算半径为5的圆的面积,但是如果说我们命名的变量的非常之多,而我们命名的不规范而去随意取名字,那么以后自己看自己写的代码是也忍不住爆粗口,
    static void Main(string[] args)
    {
    double Pi = 3.14;
    double R = 5;
    Console.WriteLine(“圆的面积为:{0}”, a * b * b);
    Console.Read();
    }
    这样就有了鲜明的对比了,后者非常容易理解,而且咱们说某个东西被大众所接受,并且认为这个东西就要用这个变量来命名,那么我们也就不要另辟蹊径的用别的来命名了,例如咱们说圆周率 “Π” 在编程中被大众所接受的是用“ Pi”或 “P”来命名,那么我们就不要在变动了。

    其实各种命名法没有哪个强哪个好之分,命名法之所以诞生就是为了让使用者看的明白,一看就是到着代表的含义是什么,用什么无所谓,能让人们看明白就好。

    到此,本篇推文就结束了,请记住C#一切皆有可能。

  • 相关阅读:
    eclipse安装插件(具体过程省略)
    Linux权限
    Anaconda + python环境搭建
    Hadoop的shell命令
    安装Hadoop(单机)
    CentOS 7安装jdk
    Linux文档内容操作
    EOJ 3 玩具谜题
    [转载]基础算法——筛法求素数
    EOJ 3213 向右看齐
  • 原文地址:https://www.cnblogs.com/qzdd/p/12251105.html
Copyright © 2020-2023  润新知