我正在使用C#尝试开发以下两个。我的操作方式可能会有问题,需要您的友善建议。另外,我不知道是否有任何现有方法可以做到这一点。
private static String HexConverter(System.Drawing.Color c) { String rtn = String.Empty; try { rtn = "#" + c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2"); } catch (Exception ex) { //doing nothing } return rtn; } private static String RGBConverter(System.Drawing.Color c) { String rtn = String.Empty; try { rtn = "RGB(" + c.R.ToString() + "," + c.G.ToString() + "," + c.B.ToString() + ")"; } catch (Exception ex) { //doing nothing } return rtn; }
谢谢。
我在这里看不到问题。该代码对我来说看起来不错。
我能想到的唯一的事情是,try / catch块是多余的- 颜色是一个结构和R,G和B是字节,所以C不能为空并且c.R.ToString(),c.G.ToString()和c.B.ToString()实际上不能失败(在我看到它们失败的唯一方法是使用NullReferenceException,并且它们实际上都不能为null)。
c.R.ToString()
c.G.ToString()
c.B.ToString()
NullReferenceException
您可以使用以下方法清理整个内容:
private static String HexConverter(System.Drawing.Color c) { return "#" + c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2"); } private static String RGBConverter(System.Drawing.Color c) { return "RGB(" + c.R.ToString() + "," + c.G.ToString() + "," + c.B.ToString() + ")"; }