我在代码中见过delgates和常量,但是在何时何地使用这些代码的适当时间呢?我见过的用途可以看到其他方法来编程他们?任何人都可以告诉我真正的好处,我从来没有用过。C#常量和代表
Q
C#常量和代表
2
A
回答
2
如果您将事件添加到班级或正在做任何异步操作(还有其他几个充分的理由让代表),代表是绝对必需的。好处是它是一种非常灵活的方法。
常量可帮助您防止“幻数”。又名提供了一个中心位置,您可以指定语义相同的常量数据。他们的好处是他们承担绝对没有性能或内存开销。
1
常量应该用于像pi(3.14159 ...)这样的值。使用它们意味着你的代码读取理智:
double circumference = radius * 2.0 * PI;
这也意味着,如果不断变化的值(显然不适合PI!),那么你只需要改变一个地方的代码。
1
5
我想强调const
和readonly
之间的区别在C#中,即使你不问,也可以是重要的:
- 当您编译时,
const
变量被其文字值替换。这意味着,如果您更改其值(即,将更多数字添加到PI
或增加允许的MAX_PROCESSORS
),并且其他组件使用此常数,则它们将不会看到新值。 - A
readonly
变量也不能被更改,但编译时永远不会被它的字面值替换。更新引用时,应用程序的其他组件将立即看到此更新并且不需要重新编译。
这种差异是微妙的,但非常重要,因为它可以引入微妙的错误。这里的教训是:只有在使用const
时,您绝对确定该值永远不会改变,否则使用readonly
。
代表是一个方法调用的占位符(蓝图,签名)。我认为它们是的接口声明。委托变量属于委托类型。它可以像使用方法一样使用(但它可以指向同一方法签名的不同实现)。
1
代表: http://www.akadia.com/services/dotnet_delegates_and_events.html
常量: 有两种类型在C#中使用常量: 编译时间常数和运行时的常量。他们有不同的行为,并且使用错误的行为会导致性能或正确性。 所以选择适合您的项目的常量类型..
http://dotnetacademy.blogspot.com/2011/09/constants-in-net.html
相关问题
- 1. C++ STL常量迭代和const指针
- 2. C++中的迭代器和常量interator
- 3. C#接口和宏常量替代品
- 4. C++常量过载和代码共享
- 5. 创建常量迭代器和非常量迭代器
- 6. 列表C常量/宏
- 7. C++ - 常量和优化
- 8. 定义常量和Objective-C
- 9. C++ - 常量参数和类变量pessimization?
- 10. 邮资-C WP常量变量和常量数组
- 11. C++:使用常量与STL迭代器
- 12. C#:代表和dynamicInvoke
- 13. 常量在C/C++
- 14. C++:为常量迭代器重载list.end()和list.begin()方法
- 15. 常量和非常量迭代器的单一类。可能吗?
- 16. 使用常量和非常量函数 - C++
- 17. iPhone - NSError参考:常量和代码
- 18. C18:在代码中表示LONG和FLOAT常量
- 19. C++ 11之前的“常量表达式”
- 20. C#二进制常量表示
- 21. C++:非常量转换为常量
- 22. C#异常和代码破坏
- 23. C++转换基*派生*和常量
- 24. C++ Concatinating __func__和常量字符文字
- 25. 静态,定义和常量在C
- 26. C#构造函数和常量神秘
- 27. C++函数(收费和常量)
- 28. C++鉴定转换 - 常量和模板
- 29. C++常量,正确性和const成员
- 30. 常量和只读在C#中?
这可能是值得询问分别代表和常量。这很难回答,因为它们有些独立的概念。 – Chris 2009-10-15 15:33:08
常量的其他方式:直接使用该值(对理解代码不太好),代表的其他方式:我所知道的都不是。 – Abel 2009-10-15 15:45:34