gpt4 book ai didi

c# - 为什么 Windows 窗体设计器将 int 转换为 byte,然后再转换回 FromArgb 的 int?

转载 作者:太空狗 更新时间:2023-10-29 22:14:34 25 4
gpt4 key购买 nike

我今天浏览了一些代码,看到了如下内容:

var colour = Color.FromArgb(((int)(((byte)(227)))), ((int)(((byte)(213)))), ((int)(((byte)(193)))));

当我问为什么会这样时,因为 Resharper 确认所有的转换都是多余的,我被告知设计师是那样做的并且他们复制了那个。

我看了一下,当将属性设置为自定义颜色时,Designer 确实生成了与上面相同的代码。

有谁知道设计师为什么要这么做?从表面上看它似乎没有意义,除非我遗漏了什么?

最佳答案

此代码由 Winforms 设计器中内置的代码序列化程序自动生成。这里的罪魁祸首是 System.Drawing.ColorConverter 类,即 Color 的 TypeConverter。其ConvertTo()方法中的相关代码为:

   member = typeof(Color).GetMethod("FromArgb", new Type[] { typeof(int), typeof(int), typeof(int) });
arguments = new object[] { color2.R, color2.G, color2.B };

R、G 和 B 属性返回一个字节。因此,代码序列化程序首先生成整数文字并应用 (byte) 转换以匹配参数类型。然后看到 FromArgb() 接受整数参数,因此应用 (int) 转换。

这只是疯狂的机器生成代码。它只需要正确,不必漂亮。

关于c# - 为什么 Windows 窗体设计器将 int 转换为 byte,然后再转换回 FromArgb 的 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9073554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com