【问题标题】:How to shorten control properties [closed]如何缩短控件属性[关闭]
【发布时间】:2017-09-06 20:48:49
【问题描述】:

在我的代码中,我经常更改项目的属性 - 在一个空白中几乎 100 次。这些是最常见的:checkBox.Enabled = truecheckBox.Checked = true

我需要我的应用程序具有较小的文件大小,因此我希望能够键入 checkBox.E(t) 总共节省 11 个字节(减去 *.Ebool t = true 的初始声明。

有没有办法缩短对这些属性的访问,就像我上面展示的那样? 这也意味着 checkBox.E() 将返回 truefalse 作为属性实际设置?

提前致谢!

【问题讨论】:

  • shorten 是什么意思?从技术上讲,这些是属性而不是函数。
  • 您到底为什么要将一个完全可以理解的属性名称更改为需要努力理解正在发生的事情的名称?你有一些关于#define 的 C++ 宏的背景知识吗?
  • 不,我真的无法理解您的要求。 E() 而不是 Enabled 节省 4 个字节并且是 4 个 SOURCE 字节,不在编译的可执行文件上。
  • 所以我猜你也会把变量名checkBox改成cb
  • 如果你在一百个地方使用相同的代码,然后从中提取一个模式并应用它。不要到处乱改易读的成员名称。

标签: c# .net checkbox


【解决方案1】:

如果您想创建一个快捷方式来设置特定类型的属性,您可以使用静态类中的扩展方法来实现:

public static class CheckBoxExtensions {
    public static void E(this CheckBox cb) {
        cb.Enabled = true;
    }
    public static void C(this CheckBox cb) {
        cb.Checked = true;
    }
}

现在您可以写checkbox.E() 而不是checkbox.Enabled = true

您应该非常小心这样的扩展,因为它们很有可能将完全可读的代码转换成只有其作者才有机会理解的东西。

【讨论】:

  • 我试过用这个,但它说由于它的保护级别它不可用。
  • @DavidWheatley 我在代码中缺少public
  • 如果我想设置一个复选框的Enabled属性呢?
  • @DavidWheatley 添加bool 类型的第二个参数,并将其分配给cb.Enabled,而不是常量true。调用将如下所示:check.E(true).
  • @DavidWheatley 对不起,它应该是无效的:public static void E(this CheckBox cb, bool e) {cb.Enabled = e;}
猜你喜欢
  • 2020-06-11
  • 2017-01-09
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-28
相关资源
最近更新 更多