繁体   English   中英

如何在不取消选中的情况下执行此操作?

[英]How to do this without unchecked?

几个月前我编写了这段代码,因为这是我能想到的唯一方法(在学习C#的同时)。 你会怎么做? unchecked正确的方法吗?

unchecked //FromArgb takes a 32 bit value, though says it's signed. Which colors shouldn't be.
{
  _EditControl.BackColor = System.Drawing.Color.FromArgb((int)0xFFCCCCCC);
}

它需要一个带符号的int b / c,这可以追溯到VB.NET没有无符号值的时候。 因此,为了保持C#和VB.NET之间的兼容性,所有BCL库都使用有符号值,即使它没有逻辑意义。

您可以分解int的组件并使用FromArgb()重载来分别获取它们:

System.Drawing.Color.FromArgb( 0xFF, 0xCC, 0xCC, 0xCC);

扩展方法可以隐藏这个:

public static Color ToColor(this uint argb)
{
    return Color.FromArgb(unchecked((int)argb));
}

public static Color ToColor(this int argb)
{
    return Color.FromArgb(argb);
}

用法:

0xff112233.ToColor(); 
0x7f112233.ToColor();

似乎它们应该是另一种表示法(如0v12345678)或其他一些解决此问题的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM