小编ros*_*res的帖子

C# 9.0 记录可以支持字典和列表等数据结构吗?

我见过 C# 9.0 中新记录功能的几个示例。即,能够更新各个属性以创建新的不可变记录。我很想知道with语法是否允许我将新条目插入到字典之类的东西中,创建一个新的不可变字典以及构成记录的所有同级属性。

例如,我可以做这样的事情吗?

public record Person
{
    public string Name;
}
 
public record Car
{
    public string Model;
    public Dictionary<string, Person> Riders;
}

var car = new Car 
{
    Model = "Delorean",
    Riders = ("driver", new Person { Name = "Doc Brown" })
};

var newCar = car with
{ 
    Riders with ("passenger1", new Person { Name = "Marty McFly" })
};
Run Code Online (Sandbox Code Playgroud)

.net c# immutability data-structures

6
推荐指数
1
解决办法
4776
查看次数

为许多图像优化 Konva.js

我目前正在使用 Konva.js 在几个堆叠的 FastLayers 上平铺许多 PNG 图像。PNG 包含不透明度,它们不需要拖动或命中框。瓷砖经常更换,这似乎适用于尺寸约为 30x30 的中型网格。一旦磁贴开始增长到 100x100 左右,甚至 60x60,在替换单个磁贴时性能开始变慢。

我已经开始研究“分块”拼贴,即将拼贴添加到较小的 FastLayer 组中。例如,单个 100x100 FastLayer 将被划分为多个 10x10 FastLayers。当单个 tile 发生变化时,我们的想法是只有那个块应该重新渲染,理想情况下可以加快整体渲染时间。

这是一个值得尝试的好设计,还是我应该尝试不同的方法?我查看了 Konva.js 文档中的性能提示,但没有看到任何与此案例直接相关的内容。

javascript png html5-canvas konvajs electron

3
推荐指数
1
解决办法
1727
查看次数