微软新一代开发工具Visual Studio 2015正式版已经于北京时间 2015年7月20日 23:30 发布了,而作为.Net开发中的主力开发语言C#,也已经走到了C# 6

那么作为C#开发语言的最新版本,微软又给它添加或改进了哪些特性呢?

C# 6的新特性是和微软的 .Net 开源编译器Roslyn紧密相连的,在其 GitHub 页面中,也给出了C# 6新特性:New Language Features in C# 6。下面内容一部分为简单的翻译,以及在查看时的一些理解和疑问,由于目前我还没发下载最新版 Win10 和 VS 2015,因此有些地方暂时还没发验证猜想。等待后续更新。

下面先列出C# 6中的新特性:

  • 自动属性初始值表达式

    public int X { get; set; } = x;

  • 只读自动属性

    public int Y { get; } = y;

  • 静态导入using static

    using static System.Console;
    // ...
    Write(4);
    
  • 索引器对象初始化

    new JObject { ["x"] = 3 }

  • catchfinally块中使用await

    try { ... } catch { await ... } finally { await ... }

  • 异常筛选器

    catch(Exception e) when (e.Count > 5) { ... }

  • 函数/属性表达式

    public double Dist => Sqrt(X * X + Y * Y);

  • Null条件运算符

    customer?.Orders?[5]

  • 字符串插值

    $"{p.Name} is {p.Age} years old."

  • nameof运算符

    string s = nameof(Console.Write);

  • 其它改进

    • #pragma
    • 集合初始化支持扩展方法Add
    • 重载方法解析改进

Read More

SQLite

SQLite 的网站 (sqlite.org) 对SQL进行了如下描述:

SQLite 是一个可实现独立、无服务器、零配置、事务性 SQL 数据库引擎的软件库。

SQLite 完全驻留在客户端进程中,这使之成为一种嵌入式数据库。 在使用期间,SQLite 数据库的运行空间是一个存储在客户端文件系统的某一位置中的单个文件,并且安装空间通常也相当小。

尽管如此,SQLite 数据库的功能却是极其丰富的,因为它支持大部分SQL-92 规范,只是去除了 RIGHT 和 FULL OUTER JOIN、ALTER TABLE、某一触发器支持、GRANT/REVOKE 以及写入 VIEW 等几项内容(更详细的说明请参见SQLite 网站)。令人印象深刻的是支持的功能数量,包括事务和各种数据类型。这使 SQLite 十分适合只需轻型 SQL的情形。

有关更详细的 SQLite 体系结构和用法说明,还可以查看这里

Read More

在使用电脑的过程中,总会遇到各种各样的故障,导致电脑非正常关机,或者由于其它的原因,最终使得磁盘某些文件(夹)存储出现错误。一般表现为文件夹无法访问,或者是在资源管理器中看不到对应文件或文件夹(而实际上这些文件还是可访问),这时候我们就需要想办法将这些数据恢复到正常状态或者从磁盘中删除了,因为虽然你无法通过资源管理器或者一般应用去访问这些数据,但是它们其实还是被存储在磁盘中某一个区域,仍然占据着磁盘空间。

Read More

平时如果一个项目需要网络连接,一般都是直接用如C#Java等高级语言直接调用相关的函数去实现功能,甚至从未关注过在底层这些函数是怎么运作的;而截至不久前,也只是用C#中的Socket相关类做过一点有关长连接的事情。

而最近,恰好由于网络课程实验要求,使用Windows Socket API + C/C++来实现一个简单的多线程Web服务器,于是开始一边摸索,一边实现功能。在这个实验中,不仅仅是简单的Windows Socket函数调用,其实主要的工作还在于多线程(包括GUI线程)之间的通信,对于HTTP请求,也只是简单的实现了GET方法。

实验要求

  1. 可配置IP地址、监听端口和主目录
  2. 能够在监听端口上进行监听
  3. 支持服务的启动
  4. 支持服务的关闭
  5. 能够响应客户端的请求,并定位相应的html文件
  6. 对每个请求能够创建单独的响应线程
  7. 能够发送可被客户端解析的响应报文
  8. 对于错误的请求能够定位错误的原因并给出相应的响应
  9. 支持多种类型文件的输出
  10. 具备图形GUI界面

Read More

第一篇博文,不知道该写个什么名字最好,干脆就保持默认的标题Hello World吧,这也算是学计算机软件的一个启蒙标志吧。

Read More