当前位置: 网站首页>小程序开发>网站优化

无锡网站建设【无锡网络公司】无锡做网站、无锡微信公众号开发、无锡网站设计、无锡小程序制作

发表日期: 2021-04-24 10:25:18 浏览次数:163

无锡网站建设【无锡网络公司】无锡做网站、无锡微信公众号开发、无锡网站设计、无锡小程序制作

无锡(Wuxi),简称“锡”,古称梁溪、金匮,是江苏省地级市,国务院批复确定的中国长江三角洲的中心城市之一、也是重要的风景旅游城市 [1]  ,截至2020年,全市下辖5个区、代管2个县级市,总面积4627.47平方千米,建成区面积552.13平方千米, [2]  截至2019年末,无锡市常住人口659.15万人,其中城镇常住人口508.2万人,常住人口城镇化率77.10%。 [3] 

无锡地处中国华东地区,位于江苏省南部,地处长江三角洲平原,是扬子江城市群重要组成部分,北倚长江、南滨太湖,被誉为“太湖明珠”,京杭大运河从无锡穿过;境内以平原为主,星散分布着低山、残丘;属亚热带湿润季风气候区,四季分明,热量充足。

无锡是国家历史文化名城 [4]  ,自古就是鱼米之乡,素有布码头、钱码头、窑码头、丝都、米市之称。无锡是中国民族工业和乡镇工业的摇篮,是苏南模式的发祥地,也是联勤保障部队无锡联勤保障中心驻地 [5]  。无锡有鼋头渚、灵山大佛、无锡中视影视基地等景点。

2017年11月,复查确认继续保留全国文明城市荣誉称号。 [6]  2018年12月,被评为2018中国大陆最佳地级城市第3名,2018中国创新力最强的30个城市之一,2018中国最佳旅游目的地城市第17名。2019年8月,中国海关总署主办的《中国海关》杂志公布了2018年“中国外贸百强城市”排名,无锡排名第11。

public class Bookshelf{
    public IEnumerable<Book> Books { get { ... } }}复制代码

此外,C# 2还引入了可空值类型(nullable value type)。利用它可以有效表示未定的变量值,从而摆脱对魔数(把-1用作集合索引,或者用DateTime.MinValue表示日期等)的使用。

到了C# 7,使用者还可以采用readonly struct这样的声明,将自定义结构体声明为不可变类型。此项特性原本旨在提升编译器生成代码的效率,但它也有助于开发人员更准确地表达代码意图。

C# 8还计划加入可空引用类型(nullable reference type),以期进一步提升代码的信息表达能力。截至目前,C#还没有提供一种用于描述引用类型(无论是返回值、参数,还是局部变量)是否为空的机制。在这种情况下,如果编码不够严谨,就容易出错;如果编码太过谨慎,又会因为需要增加校验而使代码变得臃肿。两者都不太理想。C# 8假设任何没有显式声明为可空的值都为非可空值,例如下面这个方法声明:

string Method(string x, string? y)复制代码

该方法参数的类型很明确:x是非可空值,y则是可空值。方法的返回值(没有?符号)表示函数的返回值也是非可空的。

C#类型系统中的其他一些变动则是从小处着手,更关注单个方法的实现问题,而非大型系统各组件之间的交互。C# 3引入了匿名类型(anonymous type)和隐式局部变量var),二者用于解决某些静态类型语言的缺陷:代码冗余。对于一个仅在单一方法中使用的数据形态,如果要为其专门创建额外的数据类型,不啻于牛刀杀鸡。而使用匿名类型的好处就在于,在保持静态类型语言优势的同时,可以清晰简洁地描述数据形态。

var book = new { Title = "Lost in the Snow", Author = "Holly Webb" };string title = book.Title;  (本行及以下1行) 编译器依然会检查名称和类型string author = book.Author;复制代码

匿名类型主要用于LINQ查询语句。不过即便没有LINQ,为单一方法专门创建数据类型这种做法也不太可取。

同样,如果调用了某类型的构造方法,就没有必要在同一条语句中显式声明该变量的类型了。下面两种声明方式哪个更简洁一目了然:

Dictionary<string, string> map1 = new Dictionary<string, string>(); <----- 显式类型var map2 = new Dictionary<string, string>(); <----- 隐式类型复制代码

隐式类型在处理匿名类型时不可或缺,在处理普通类型时,其重要性也日益凸显。另外,读者需要重点区分隐式类型(implicit typing)和动态类型(dynamic typing)这两个概念。注意以上代码中的变量map2,它属于静态类型,只是没有显式地写出其类型而已。

不过,匿名类型的作用域仅限于单个代码块,无法将其用作方法的参数或返回值。C# 7引入了元组(tuple)的概念。元组是一种值类型变量,它可以有效地组织变量。元组的framework支持相对比较简单,但还需要额外的语言支持来实现对元素进行命名。可以使用元组来替代前文中的匿名类型:

var book = (title: "Lost in the Snow", author: "Holly Webb");Console.WriteLine(book.title);复制代码

用元组替代匿名类型的用法只适用于部分场合,其好处之一是元组可以用作方法的参数和返回值。目前我个人建议将元组的使用范围尽量限制在内部API中,不要对外暴露,因为元组只是对值进行简单的组合,并没有对其进行封装。所以在我看来,元组只是C#实现层面的小改进,而非整体设计层面的改进。

讲到这里顺便提一下,C# 8可能会引入一种新类型——记录类型(record type)。从记录类型的最简形式来看,它在某种程度上属于“具名的匿名类型”。同匿名类型一样,记录类型有助于消除样板代码,此外它还兼备普通类的行为特征。敬请关注!

1.1.2 代码更简洁

让开发人员能更简洁、更精准地通过代码表达意图,是贯穿于C#各项新特性中一个永恒的主题。从前面讲到的匿名类型就不难看出,类型系统对代码的简洁之道贡献颇多,其他很多特性当然也毫不逊色。关于简化代码的各种论调,读者可能早已不胜其烦,特别是关于新特性推出后,又可以删减哪些代码。利用好C#的这些新特性,可以减少形式化代码、去掉样板化代码、删减额外代码。总的来说,就是一条原则——消灭冗余。这些冗余代码没有错,只是碍眼又多余而已。就精简代码而言,C#在以下几方面均有建树。

  1. 构造与初始化

    首先考虑对象构造和初始化的方式。委托(delegate)应该是演化最多而且最快的一项特性了。在C# 1中,需要先写一个委托可以指向的方法,然后再写一大段代码来创建委托。例如,要为一个按钮的Click事件订阅一个新的事件处理方法,C# 1代码如下所示:

    button.Click += new EventHandler(HandleButtonClick); <------ C# 1复制代码

    C# 2引入方法组转换(method group conversion)和匿名方法(anonymous method)后,就可以采用如下形式来保存HandleButtonClick方法了:

    button.Click += HandleButtonClick; <------ C# 2复制代码

    如果Click处理方法比较简单,也可以只写一个匿名方法,不需要再单独创建方法:

    button.Click += delegate { MessageBox.Show("Clicked!"); }; <------ C# 2复制代码

    另外,匿名函数的闭包(closure)特性还有额外的好处:在匿名函数中访问其所在上下文的局部变量。不过自从C# 3推出lambda表达式之后,匿名函数已渐渐失宠,因为lambda表达式几乎具备匿名函数的所有优长,而且它的语法更简洁。

c51c866ffa1ab3457f2021e8bbdbcc1.jpg

无锡网站建设无锡网络公司无锡做网站、无锡微信公众号开发、无锡网站设计、无锡小程序制作

400-111-6878
服务热线
顶部

备案号: 苏ICP备11067224号

CopyRight © 2011 书生商友信息科技 All Right Reserved

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: http://www.768800.com  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

服务热线:400-111-6878