收藏此站 联系我们 网站
当前位置:首页» 技术日志 » 【建站服务】无锡微信公众号开发【无锡网络推广】无锡建站、无锡网站维护、无锡网页制作、无锡微信小程序代运营公司-域名申请

【建站服务】无锡微信公众号开发【无锡网络推广】无锡建站、无锡网站维护、无锡网页制作、无锡微信小程序代运营公司-域名申请

作者: 风兰 . 阅读量: 7 . 发表时间:2022-09-20 15:19:57

网站建设

上往建站提供服务器空间服务商百度快照排名网站托管百度推广运营,致力于设计外包服务与源代码定制开发360推广搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。


无锡微信公众号开发【无锡网络推广】无锡建站、无锡网站维护、无锡网页制作、无锡微信小程序代运营公司

无锡(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。


  1. public int Count { get { return list.Count; } }public IEnumerator<string> GetEnumerator(){
        return list.GetEnumerator();}复制代码

    这个例子生动地展示了什么叫作“例行公事”般的代码,这种写法仅仅是为了满足语法要求。有了C# 6,就可以使用=>标记作为表达式主体成员,大幅简化代码:

    public int Count => list.Count;public IEnumerator<string> GetEnumerator() => list.GetEnumerator();复制代码

    如今=>符号已经广泛应用于lambda表达式中了。

    表达式主体成员增强了代码的可读性,实在令人赞叹。尽管只是一种主观感受,但我确实难以掩饰对它的喜爱之情。关于字符串,C#新增了一项名为字符串内插(string interpolation)的改进。我个人对字符串内插的使用频率之高远超预期。
     

  2. 字符串处理

    C#中的字符串处理总共涉及3大方面改进。

    篇幅所限,这里只针对最后一个特性给出相关示例。将变量、属性、函数返回值等用于创建字符串是常见需求,可用于记录日志、为用户提供错误信息(假设没有属地化需求)、构建异常信息,等等。

    举一个取自我的Noda Time项目的例子:用户通过ID查找日历系统,如果该ID不存在,则代码抛出一个KeyNotFoundException。在C# 6之前,代码写法如下:

    throw new KeyNotFoundException(
        "No calendar system for ID "  + id + " exists");复制代码

    或者直接调用字符串格式化方法:

    throw new KeyNotFoundException(
        string.Format("No calendar system for ID {0} exists", id));复制代码

    说明 1.4.2节有关于Noda Time的介绍,理解本例不需要了解它。

    而到了C# 6,由于有了内插字符串字面量,只需把id这个变量值包含在字符串中即可:

    throw new KeyNotFoundException($"No calendar system for ID {id} exists");复制代码

    尽管不是什么大的改动,但这项特性已然深入我的日常编码,变得不可或缺了。

    前面提到的这些特性,都是助力开发人员精简代码的精华部分。除此以外,其他优秀的特性还包括C# 6中的using static指令和空值条件运算符,C# 7中的模式匹配、分解、out变量等。不过没有必要逐个版本地阐述这些特性,下面重点探究一个堪称革命性改进的新特性:LINQ。

    • C# 5引入了调用方信息特性(caller information attribute)。通过这项特性,编译器可以将方法名和文件名自动填充到参数值中。无论是用于持久化日志还是临时性测试,这项特性对程序诊断大有帮助。

    • C# 6引入了nameof运算符,用于获取变量、类型、方法或成员的名字。常言道:“手握nameof运算符,代码重构不发怵。”

    • C# 6引入了内插字符串字面量(interpolated string literal),极大地简化了动态构建字符串的方式,尽管它并不算一个全新的概念。

1.1.3 使用LINQ简化数据访问

如果问程序员“你喜欢C#的什么”,提到LINQ的估计不在少数。前面介绍了成就LINQ的不少特性,不过LINQ的核心特性还是查询表达式。参考如下代码:

var offers =
    from product in db.Products
    where product.SalePrice <= product.Price / 2
    orderby product.SalePrice
    select new {
        product.Id, product.Description,
        product.SalePrice, product.Price
    };复制代码

以上代码和那些“传统”代码可以说风格迥异。难以想象如果穿越回2007年,去跟一个还在使用C# 2的程序员展示这段代码会是怎样的场景:你会告诉他这段代码支持编译时检查以及智能提示,还会产生一次高效的数据库查询操作。另外,这种特殊的语法对普通集合同样适用。

LINQ使用表达式树来完成进程外数据的查询操作。表达式树把代码当作数据进行处理,LINQ Provider可以分析代码,并将其转换为SQL或其他查询语言。其实我个人很少用到这项出色的特性,因为我很少需要同SQL数据库交互,但是我需要使用查询表达式或者lambda表达式来处理内存集合,所以使用LINQ的频度也很高。

对于C#程序员来说,LINQ绝不仅仅是一个新“工具”,它还驱动着我们突破数据访问的限制,以函数式编程的角度看待数据转换过程。LINQ对开发人员的函数式思维起到了抛砖引玉的作用,开发人员则以此为契机把这一思维应用得更加广泛。

尽管C# 4对动态类型做出了天翻地覆的改进,可是要说到对程序员影响之深远,还是首推LINQ。而等到C# 5出场,它凭借异步特性再一次令C#改头换面。

1.1.4 异步

异步对于主流编程语言一直是个难题,而很多小众语言自设计之初就充分考虑了异步机制的设计,一些函数式语言更是将异步问题处理得游刃有余。C# 5采用async/await机制,进一步简化了主流语言的异步编程模式。此项特性共包含2项关于async方法的补充内容。

  • async方法会生成一个返回值,该返回值代表了一个异步操作。这部分完全不需要开发人员介入。该返回值的类型一般是Task或者Task<T>

  • async方法使用await表达式来消费异步操作。如果async方法试图等待一个尚未完成的操作,该方法就会异步地暂停,直到操作完成后再继续执行。

说明 其实称“异步函数”更合适,因为匿名方法和lambda表达式也可以是异步的。

异步操作异步暂停这两个概念的具体细节和机制较为复杂,这里不再赘述。总而言之,凭借上述特性,我们可以按照编写同步代码的方式来编写异步代码,同时让并发操作更接近自然的思维方式。参考如下示例代码,假设有一个由Windows Forms事件触发的异步方法:

private async Task UpdateStatus(){
    Task<Weather> weatherTask = GetWeatherAsync();  (本行及以下1行) 同时开始两个操作
    Task<EmailStatus> emailTask = GetEmailStatusAsync();

    Weather weather = await weatherTask;  (本行及以下1行) 异步地等待二者完成
    EmailStatus email = await emailTask;

    weatherLabel.Text = weather.Description;  (本行及以下1行) 更新用户界面
    inboxLabel.Text = email.InboxCount.ToString();}复制代码

这段代码展示了如何同时启动两个并发操作并等待返回结果,还展示了async/await如何识别同步上下文。这段代码同时做两件事:更新UI信息(只能在UI线程中执行),启动并等待一个耗时很长的操作。在async/await机制出现以前,同样功能的实现代码更复杂且容易出错。

然而并不是有了async/await之后处理异步编程就变得轻而易举了,异步编程自身的复杂性不会就此消失,它只是剔除了以前那些样板代码,便于开发人员将精力集中于异步编程的核心难点。

上述特性都致力于精简代码,关于最后一个特性,下面讲一些不一样的东西。

1.1.5 编码效率与执行效率之间的取舍

我仍记得第一次使用Java时的感受。那时Java还是彻头彻尾的解释性语言,而且执行速度极慢。不久之后,JIT(Just-In-Time)编译器开始进入人们的视野,并最终发展成为Java实现的唯一指定编译方式。

之后为了提升Java语言的性能,大家可谓殚精竭虑。众人在Java身上倾注心血,起码证明Java肯定不是一款失败的产品。开发人员看到了它的潜力,感受到它为开发效率带来了前所未有的提升。程序的运行速度同开发和交付的速度比起来,往往就显得不那么重要了。

c51c866ffa1ab3457f2021e8bbdbcc1.jpg


无锡微信公众号开发无锡网络推广无锡建站、无锡网站维护、无锡网页制作、无锡微信小程序代运营公司


上往建站提供搭建网站域名注册官网备案服务网店详情页设计企业网店专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管网页美工排版,致力于域名申请竞价托管软文推广全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机网站推广百度竞价托管网站建设上网建站推广服务网络公司有哪些等业务,专业团队服务,效果好。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)


关键词:网站建设,企业网站,网站制作,网页设计,高端网站建设,企业网站制作,网页制作,制作网站,网站设计,高端网页设计,高端网站设计,做网站,自适应网站

全国服务热线
18114747181
二维码
手机端二维码
上往建站
地址:全国各地都有驻点商务 |  网站建设上往建站
在线咨询QQ:1120768800
 
QQ在线咨询
售前咨询热线
18114747181
营销顾问
营销顾问
售后服务热线
400-000-1116
售后服务
售后服务