.NET 7 Preview 7 发布,下一版本进入 RC 阶段

.NET 7 发布了最后一个预览版 Preview 7,在此之后将会进入 RC 阶段。

此版本主要变化包括对 System.LINQ、Unix 文件权限、底层结构、p/Invoke 源代码生成、代码生成和 websocket 的改进。

优化System.LINQ

System.Linq现在包含OrderOrderDescending方法,它们可以根据TIEnumerable进行排序。IQueryable现在也同样提供对此的支持。

用法

此前需要通过引用自身的值来调用OrderBy/OrderByDescending 

var data = new[] { 2, 1, 3 };
var sorted = data.OrderBy(static e => e);
var sortedDesc = data.OrderByDescending(static e => e);

现在支持直接写成:

var data = new[] { 2, 1, 3 };
var sorted = data.Order();
var sortedDesc = data.OrderByDescending();

支持 Unix 文件模式

此前 .NET 没有内置支持获取和设置 Unix 文件权限,这些权限用于控制哪些用户可以读取、写入和执行文件以及目录。而且 P/Invoking 手动调用 syscalls 并不容易,因为有些 syscalls 在不同的发行版上有不同的公开方式。例如,在 Ubuntu 上,你可能要对__xstat进行 Pinvoke,在 Red Hat 上对stat进行 Pinvoke,诸如此类。为此,Preview 7 引入了一个新的枚举:

public enum UnixFileMode
{
    None,
    OtherExecute, OtherWrite, OtherRead,
    GroupExecute, GroupWrite, GroupRead,
    UserExecute, UserWrite, UserRead,
     ...
}

用法

// Create a new directory with specific permissions
Directory.CreateDirectory("myDirectory", UnixFileMode.UserRead | UnixFileMode.UserWrite | UnixFileMode.UserExecute);

// Create a new file with specific permissions
FileStreamOptions options = new()
{
    Access = FileAccess.Write,
    Mode = FileMode.Create,
    UnixCreateMode =  UnixFileMode.UserRead | UnixFileMode.UserWrite,
};
using FileStream myFile = new FileStream("myFile", options);

// Get the mode of an existing file
UnixFileMode mode = File.GetUnixFileMode("myFile");

// Set the mode of an existing file
File.SetUnixFileMode("myFile", UnixFileMode.UserRead | UnixFileMode.UserWrite | UnixFileMode.UserExecute);

优化底层struct:支持ref 字段

.NET 7 运行时环境现在完全支持 ByRefLike 类型中的ref字段(即ref struct)。此功能背后包含大量的语言设计,例如改进底层结构。借助此功能,以前需要在运行时环境中进行专门处理的类型(例如Span<T>ReadOnlySpan<T>),现在可以在 C# 中完全实现。

猜你喜欢

转载自www.oschina.net/news/206217/dotnet-7-preview-7-released