![]() |
1
5
请omg使用此版本。
|
![]() |
2
3
|
![]() |
3
3
关于开关,我写了很多这样的东西:
我认为与常规switch语句相比,它看起来更可读,并且能够进行更复杂的比较。是的,它会慢一些,因为你需要比较每种情况,但99%的时间都不重要。 |
![]() |
4
3
在Java中,我有时发现实现公共接口的私有内部类对于由紧密耦合元素组成的对象非常有用。我看到过在使用Allen Holub的创建UI的上下文中讨论的这个小模式(习惯用法) Visual Proxy 建筑,但仅此而已。据我所知,它没有名字。 例如,假设您有一个可以提供迭代器的集合接口:
如果您有一个实现集合的堆栈,则可以将其迭代器实现为私有内部类:
堆栈及其迭代器将趋向于紧密耦合。最坏的情况是,将堆栈的迭代器实现为公共类可能会迫使您破坏堆栈的封装。私有内部类允许您避免这种情况。无论哪种方式,都可以避免用一些真正的实现细节来污染类层次结构。 |
![]() |
5
2
在我的上一份工作中,我写了一个C++版本的Andrei Alexandrescu和Petru Marginean在C++中引入的概念。 original article here ). 这真的很酷,因为它可以让您在不中断流程的情况下将错误处理或条件检入与正常代码交织在一起-例如:
这将检查第一个参数是否为null,如果为null,则抛出EnforcementException并将第二个参数作为消息,否则返回第一个参数。还有一些重载也采用字符串格式参数,还有一些重载允许您指定不同的异常类型。 你可能会争辩说,这类事情在C#中不太相关,因为运行时检查更好,而且已经非常有用了——但是这个习惯用法让你更接近源代码,提供更多信息,同时保持表达能力。
我可能会编写一个开源版本并从这里链接它。 |
![]() |
6
1
因为当我快速编写代码(截止日期!截止日期!为什么我在stackoverflow.com上?截止日期!)时,我会得到这样的代码:
|
![]() |
7
0
对于Windows窗体,我经常使用Tag字段来放置psuedo命令字符串,这样就可以为一组共享的按钮提供一个事件处理程序。这对于功能几乎相同但参数化的按钮尤其有效。
对于具有某种形式的用于调度操作的基于文本的命令处理器的应用程序,标记是一个刚刚输入命令处理器的字符串。很好用。
|
![]() |
9
0
也许已经有了更好的方法(vbEx2005/.Net2.0),但我发现有一类泛型委托创建者非常有用,它接受一个方法,该方法接受一些参数,以及这些参数中的所有或除一个以外的所有参数的值,并生成一个委托,该委托在调用时,将使用指定的参数调用指定的函数。与ParameteredThreadStart等基于ParamArray的东西不同,所有东西都是类型安全的。 例如,如果我说: Sub Foo(param1 As Integer, param2 As String) ... End Sub ... Dim theAct as Action(of Integer) = _ ActionOf(of Integer).NewInv(AddressOf Foo,"Hello there") theAct(5) ... 结果将是对声明了Foo的对象调用Foo(5,“Hello there”)。不幸的是,对于我想要支持的每一个不同数量的参数,我最终不得不有单独的泛型类和方法,但是将所有的剪切和粘贴放在一个文件中要比将额外的代码分散在各处以创建适当的委托更好。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 4 月前 |
![]() |
pseudodev · 失败的测试仅显示堆栈跟踪,不显示完整日志 4 月前 |
![]() |
CactusCake · if语句中应有分号 5 月前 |
![]() |
Bin4ry · 子文件夹中的应用程序设置 6 月前 |