Csharp/C#教程:对于有经验的C ++程序员来说,C#开发中最常见或最恶毒的错误分享


对于有经验的C ++程序员来说,C#开发中最常见或最恶毒的错误

当有经验的C ++程序员在C#中开发时,最常见或最恶毒的错误是什么?

我在C#中看到许多C ++编码器以COM风格编写代码,试图解决语言的不足之处。 C#为您的枚举提供了许多类型安全支持,并且通常有更好的API,然后P / Invback回到C ++。

我见过的另一件事是大多数人都认为C#generics不是模板。

调用GC.Collect

  1. 使用结构体一直支持类
  2. 始终使用in,out和ref参数(这是第1点的结果)。
  3. 使用int值作为错误条件而不是使用exception
  4. 使用virtual关键字而不是override关键字。
  5. 认为char是8位有符号值

认为“垃圾收集”=“我根本不必担心对象的生命周期”。 例如,打开FileStream并忘记关闭它。

要么:

  1. 分配很多对象
  2. 把它们放在一个大的全球字典中(通常在“我知道之后,我会制作缓存”)
  3. 想知道为什么应用程序的内存使用率总是上升而且从不下降(“但它应该是垃圾收集!”)

混淆“通过引用传递”和“引用类型”:

 void GetAnArray(int input, ref string[] output); 

(与C ++比较: void getAnArray(int input, std::vector& output);

每次都写入完整的命名空间。

当你输入std::thisboost::that时,这在C ++中很好。 当您重复System.Windows.Forms.Whatever时,在C#中不是那么好。 System.Windows.Forms.Whatever在。

顺便提一下,C#编译器中有许多启发式方法可以帮助经验丰富的C ++程序员,他们是新手C#程序员。 例如,如果你说

 int x[]; 

编译器将有助于指出[]是C#中类型的一部分,所以你可能意味着

 int[] x; 

C#还允许在类声明的末尾添加不必要的分号,这样那些习惯的C ++程序员就不会被它咬掉。

忘记为每个类成员指定访问修饰符。

试图在string s上实现const正确性。

得到我的一个,我相信很多非C ++人员,由于注册事件使对象保持活跃而泄露内存。

IDis可以接受开头(如果我是诚实的话,仍然会这样做)但是从原生代码到托管代码显然会有所不同,所以我不希望C ++开发人员真正犯规,他们只是不喜欢它。

使用匈牙利表示法和其他C ++命名约定

上述就是C#学习教程:对于有经验的C ++程序员来说,C#开发中最常见或最恶毒的错误分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 private int m_iMyIntField; class CWidget { ... } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1001954.html

(0)
上一篇 2021年12月27日
下一篇 2021年12月27日

精彩推荐