当在 Entity Framework Core 模型类中使用 nullable-enable 功能时,编译器将发出大量 CS8618 警告,如下所示:
warning CS8618: Non-nullable property 'Title' must contain a non-null value when exiting constructor. Consider declaring the property as nullable.
Run Code Online (Sandbox Code Playgroud)
从 C# 11 开始,required可以使用新的修饰符(不需要其他解决方法)来消除警告:
warning CS8618: Non-nullable property 'Title' must contain a non-null value when exiting constructor. Consider declaring the property as nullable.
Run Code Online (Sandbox Code Playgroud)
现在,我的问题是:
所有属性都应该获得新的required修饰符吗,甚至是值类型?
上面的例子中,应该Price也得到required修饰符吧?因为实际上,您永远不希望价格默认为 0,但您总是希望明确指定它。
应该是:
class Book
{
public int BookId { get; set; }
public required string Title { get; …Run Code Online (Sandbox Code Playgroud) 我想将本地未提交的更改备份到远程存储库,以便备份更改(以防本地硬盘损坏等)
(在 TFSC 中,我只是将更改“搁置”到搁置集中(它“存在”在 TF 服务器上))
我尝试过的:
此时,我的更改已保存在远程存储库上(这意味着我可以在本地硬盘损坏的情况下恢复信息)
但现在我遇到了以下问题:在“master”分支以及“backup_2021-02-13”分支中,我看不到以前挂起的更改:我在备份分支上看不到它们,因为它们有已经提交(是的,更改已经存在,但已经提交)。我在主分支上看不到它们,因为在那里,这些更改根本不存在。
但我想继续工作,就好像备份过程从未发生过一样(所有未提交的更改仍未提交)。
所以,我所做的是将备份分支的更改合并到主分支(无提交、仅 ff、squash)。这样,我将主分支中未提交的更改作为未提交的更改,就像在任何备份工作之前一样。
但我怀疑这是正常的做法。
那么,将本地未提交的更改备份到远程存储库,但同时保持当前(主)分支不变(所有未提交的更改仍然未提交)的正确(也是最简单)方法是什么?
目前我正在将现有的C#Windows 8/iOS应用程序移植到Android(使用Xamarin).
我使用了很多异步/等待文件IO,对话框,网络等...
当应用程序在等待呼叫期间暂停/暂停时会发生什么?在Windows和iOS下有两种可能性:
在这两种情况下,没有任何记事本泄漏,控制流程没有变化.
但是,在Android下,可以在进程保持活动状态时销毁并重新创建一个Activity.在我对async/await的理解中,这意味着:
我的假设是真的吗?如果是的话,可以做些什么?(不使程序像async/await发明那样复杂)
从 API 14 开始,鼠标右键点击应该很容易通过 getButtonState() 检测到。
但是,当我右键单击时,它充当后退按钮。中间按钮的作用类似于主页按钮。(Android 4.4,Galaxy Note 3,通过 USB 适配器的鼠标)
我的问题:
这是一道了解2d矢量图形GPU加速渲染原理的题。
使用 Skia 或 Direct2D,您可以绘制圆角矩形、贝塞尔曲线、多边形等,并且还可以产生模糊等效果。
Skia / Direct2D 提供基于 CPU 和 GPU 的渲染。
对于CPU渲染,我或多或少可以想象如何渲染圆角矩形。我已经见过很多不同的线条渲染算法。
但对于GPU,我没有太多线索。
是否有一些基本示例可以向我展示此类事物如何工作的基本原理?
(也许,解决方案也可以在 Skia 的源代码中找到,但我担心它会如此复杂/通用,以至于像我这样的菜鸟什么都看不懂。)
我使用QGraphicsSceneQt框架。在场景内部,我有一些QGraphicsItem可供用户选择和移动的。我想要一个信息标签,其中显示当前移动的选择的当前x和y坐标(可以包含许多项)。
我曾尝试与信号changed的QGraphicsScene。但是在将项的x()和y()属性设置为新值之前将其触发。因此,标签始终显示倒数第二个坐标。如果缓慢移动鼠标,则显示不是很错误。但是随着动作的迅速和突然的停止,标签是错误的。我需要场景改变后触发的信号。
我还尝试覆盖的itemChange方法QGraphicsItem。但这是一样的。更改之前将其触发。(新坐标位于此方法的参数内,但我需要一次同时选择所有选定项的新坐标)
我也试图重写mouseMove的事件QGraphicsScene和QGraphicsView,但他们也有之前设定的新坐标。
我做了一个测试:我使用了单触发定时器,以便在信号发出100毫秒后更新标签。然后一切正常。但是计时器对我来说不是解决方案。
我能做什么?使所有物品不可移动并自己处理所有物品?
我花了去年(兼职)将我现有的(并且成功的)Windows 8.1应用程序迁移到Windows 10 UWP.现在,在将其发布到商店之前,我在"Release"构建模式(触发.NET Native)中测试了应用程序.一切似乎都有效,直到我 - 偶然 - 注意到一个微妙但严重(因为数据妥协)的错误.我花了两天时间把它缩减为这三行代码:
var array1 = new int[1, 1];
var array2 = (int[,])array1.Clone();
array2[0, 0] = 666;
if (array1[0, 0] != array2[0, 0]) {
ApplicationView.GetForCurrentView().Title = "OK.";
} else {
ApplicationView.GetForCurrentView().Title = "Bug.";
}
Run Code Online (Sandbox Code Playgroud)
在调试模式下,克隆2D数组意味着修改一个数组项不会影响另一个数组.在发布模式下,修改一个阵列也会改变另一个阵列.(我使用的是最新的VS 2017.)
现在,我意识到使用.NET Native 1.6(这不是VS 2017中的默认设置),解决了这个特殊问题.
但我失去了对.NET Native的信心..NET Native仍然在我的应用程序中引入了多少错误?我的Windows 8.1应用程序无需.NET Native即可快速顺畅地运行.那么为什么我必须使用似乎充满bug的.NET Native呢?(我在过去两天了解了很多.NET Native bug.)
最近,项目"UWP Desktop Bridge"允许将传统桌面应用程序发布到App Store(他们不必使用.NET Native).那为什么我必须使用.NET Native?
有没有办法完全跳过.NET Native?如果没有,我可以将.NET Native编译器配置为不那么具有破坏性吗?