作为一名C++程序员,每次我使用C#时,我都想知道为什么它缺乏对独立功能的支持; 换句话说:不属于任何类的函数.我真的很想念这个功能,因为独立功能允许向类添加功能而无需完全私有访问,从而避免了难以维护的整体类.此外,它允许扩展第三方库.我知道你可以使用静态类,但类名完全无关,使得客户端代码不必要地冗长.
例如.我想创建一个辅助函数来计算字符串中的单词.我怎样才能避免写"StringHelperClass.CountWords();" 在客户端代码?StringHelperClass充当命名空间,只有我不能写"使用StringHelperClass;".我被迫在每次使用时重复"StringHelperClass",而很明显它是一个字符串辅助函数,因为它唯一的参数是一个字符串.
有没有办法扩展类的功能,同时保持客户端代码简洁?
Mar*_*ell 10
编辑:请注意,由于该using static ....指令是在C#6中添加的,因此这在很大程度上可视为等效功能.只需使用常规.NET static方法,然后使用using static指令,这些方法立即可用.
更好的问题是:
"它为什么要包含它?"
鉴于C#在没有独立功能的情况下保持良好状态,添加它们的要求是什么?特别是,静态实用程序类可以很好地托管(例如常规方法或扩展方法),并且在出现冲突时允许简单的消歧.
它(如评论中的OregonGhost注释)有助于模块化代码,防止死亡 - 智能感知等.
那么:为什么要添加它们?有什么问题(在C#中)尚未解决?
我同意这是我发现 C# 所缺乏的功能。主要原因是使用函数的冗长。类名充当命名空间,但无法在代码文件的开头简单地“使用”该命名空间。例如,如果您想用 C# 编写 OpenGL,则必须输入以下内容: OpenGL.glClearDepth(1.0f); OpenGL.glEnable(GL_DEPTH_TEST); 等。我知道这可能与将所有内容都变成一个类的基本概念有关,但我真的不喜欢强迫你以某种方式做事的语言。当然,这可能是我不真正使用 C# 的原因,除非我别无选择(比如在工作中)。
| 归档时间: |
|
| 查看次数: |
1788 次 |
| 最近记录: |