今天我查看了一些代码,看到了类似以下内容:
var colour = Color.FromArgb(((int)(((byte)(227)))), ((int)(((byte)(213)))), ((int)(((byte)(193)))));
当我问为什么会这样时,由于 Resharper 确认所有演员都是多余的,我被告知设计师就是这样做的,他们已经复制了。
我看了一下,果然设计师在将属性设置为自定义颜色时生成了与上面相同的代码。
有谁知道设计师为什么要这样做吗?从表面上看,这似乎没有意义,除非我错过了一些东西?
该代码是由 Winforms 设计器内置的代码序列化器自动生成的。这里的罪魁祸首是 System.Drawing.ColorConverter 类,即颜色的 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 属性返回一个字节。因此,代码序列化器首先生成整数文字并应用(字节)强制转换以匹配参数类型。然后看到 FromArgb() 接受整数参数,因此应用 (int) 强制转换。
这只是疯狂的机器生成的代码。它只需是正确的,不必是漂亮的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)