写这点东西主要是看到知乎上有人在讨论相关的问题,但是有不少人都在说一些不严谨,甚至是完全错误 但是流传甚广的东西,甚至是一些大神都在说,以下根据我的回答总结。
    一个很常见又很低级的误区是:认为引用类型保存在堆上,值类型保存在栈上……其实这个问题幼稚得我懒得说……但是实在又忍不住吐槽。
    很多人都在说这句话,甚至很多初学者把他当成金科玉律。实际上第一句话是正确的,但值类型的保存位置是要看上下文的,应该说值类型保存在他的声明位置。比如在一个类里声明一个Int a,a此时当然是保存在堆上的。只有局部变量和方法参数(在C#1中)总是保存在栈上,在C#2以后局部变量很多也不完全在栈上了。
    其实以上所有都没有在C#规范中硬性规定,不过CLR总是这么做的。

第二个问题也是昨天知乎上很多人在扯的,所谓“C#中的对象默认是引用传递的”。
    首先……引用传递和传递引用完全不是一回事…… 引用传递和值传递是一种求值策略,正式定义解释起来比较麻烦,不过正常计算机专业本科生应该会知道,不知道的去谷歌……
    (
    顺便吐槽一下,在java里只有值传递这一种情况,而C#中可以用ref  out标识是引用传递还是值传递,另外,如果不想或者不能用值类型的值,在C#里也可以通过装箱和拆箱来实现,就语言特性来客观的来说,C#甩了java一百条街,所以用C#可以写出非常风骚的代码,同时也能从语言层面较好的规范(不合格的)程序员。
    ) 
     实际上正好相反,如果没有ref out标识符的话,事实上基本都是值传递。

写了这么多了不想写了……最后再安利一下,C#是一门特别甜的语言,非常多的糖,非常多的特性,别说特性可以模拟,是可以模拟,但你是愿意写一大堆丑陋的东西去模拟还是用一个干干净净的关键字呢?而且有些特性你也模拟不了,比如c#里的dynamic,当然c#并不是一个原生的动态语言,总会有一些缺陷,但是比起大多数静态语言的动态特性要强太多了。

哦对了,我突然又想起一点。
    关于隐式类型和匿名类型很多人有莫名其妙的性能担心。
    比如:
    var 3ds = { comment = "good", price = "1000" }
    var psv = { comment = "terrible" prive = "1500"}

这两个匿名类型 第一,在编译阶段就已经完成了,他们的属性也是普通属性,并不会发生动态查找,第二,编译器会将他们编译成同一种类型,你可以试试3ds = psv ,是可以通过的(当然我心理上不接受)。 
    另外像这样的匿名方法:
    Func<int,int,string> pixel = (x,y) =>(x*y).ToString(); 
    也只是一个普通的函数,不需要产生性能担心。他只是很甜而已。

不过要说的是当委托无法释放的时候事件也无法被GC回收,这一点需要注意。

不说了!写了这么多。

也许是关于C#的一些常见误区的更多相关文章

  1. NODE.JS学习的常见误区及四大名著

    NODE.JS学习的常见误区及四大名著 前段时间由于不满于社区里很多人对于NODE.JS的种种误解而写了一篇文章名为: NODE.JS之我见:http://www.cnblogs.com/pugang ...

  2. 绝对定位常见误区:position:absolute相对于谁定位、及当溢出时怎么隐藏

    1.绝对定位元素溢出父元素,怎么隐藏问题? 通常,为了让DIV子元素超出部分隐藏,都是在父元素设置overflow:hidden,这样即可防止子元素撑开父元素,使子元素能够溢出隐藏! 但是,对于pos ...

  3. nginx反向代理跨域基本配置与常见误区

    最近公司前后端分离,前端独立提供页面和静态服务很自然的就想到了用nginx去做静态服务器.同时由于跨域了,就想利用nginx的反向代理去处理一下跨域,但是在解决问题的同时,发现网上有些方案的确是存在一 ...

  4. 【原创】C语言和C++常见误区(一)

    本文仅在博客园发布,认准原文地址:https://www.cnblogs.com/jisuanjizhishizatan/p/15414469.html 问题1:int类型占几个字节? 常见误区:占4 ...

  5. JavaScript的一些常见误区

    原文出处: 色拉油的博客   接触JavaScript两年多遇到过各种错误,其中有一些让人防不胜防,原来对JavaScript的误会如此之深,仅以此文总结一下常见的各种想当然的误区. String r ...

  6. oc常见误区

    1.同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作, 2.异步请求不会阻塞主线程,而会建立一个新的线程来操作,用户发出异步请求后,依然 ...

  7. Java的常见误区与细节

    网上转来的 昨天整整一天,我都都呆在图书里.本打算找一些书学习“正则表达式”,很失望,没找到有这部分的内容的书.发现了一本<Java深入解析>,其中涉及了很多平时没有注意的一些误区,也许开 ...

  8. Lodop客户端本地角色注册号常见误区

    之前写过一篇关于Lodop和c-lodop注册号的区别:LODOP.C-LODOP注册号的区别第一种角色客户端本地打印角色是最常见的角色,最常见的场景,关于c-lodop云打印,它的第一种角色是取代L ...

  9. DDD学习笔录——领域驱动设计的常见误区(即错误的理解)

    可以将DDD看成一种开发思想体系:它促成了一种新的以领域为中心的思维方式. 它是一种学习过程,而非最终目标,这就是DDD的最大优势. 任何团队都可以编写一个软件来满足一组用例的需求,但那些将时间和精力 ...

随机推荐

  1. Django 数据库查询优化

    Django数据层提供各种途径优化数据的访问,一个项目大量优化工作一般是放在后期来做,早期的优化是“万恶之源”,这是前人总结的经验,不无道理.如果事先理解Django的优化技巧,开发过程中稍稍留意,后 ...

  2. Word删除复制后产生空行

    如上图,用网上说的^p^p替换为^p无效,我全选,然后在样式里选择正文才搞定.实践出真知!!!!!!!!!网络上附和的多

  3. ubuntu系统下创建软件桌面快捷方式

    转自ubuntu系统下创建软件桌面快捷方式 默认情况下,ubuntu会将自动安装的软件快捷方式保存在/usr/share/applications目录下,如果我们要创建桌面快捷方式,只需要右键-复制- ...

  4. 《鸟哥的Linux私房菜》读书笔记一

    1.CPU为一个具有特定功能的芯片,里面含有微指令集,一个CPU又可以分为两个主要的单元:算术逻辑单元和控制单元.CPU读取的数据都是从内存读取来的,内存内的数据是从输入单元传输来的.CPU处理完也要 ...

  5. 《Gulp 入门指南》 : 使用 gulp 压缩 JS

    <Gulp 入门指南> : 使用 gulp 压缩 JS 请务必理解如下章节后阅读此章节: 安装 Node 和 gulp 访问论坛获取帮助 压缩 js 代码可降低 js 文件大小,提高页面打 ...

  6. linux系统目录详解

    Linux目录结构包括文件类型和一些重要的文件子目录. linux文件系统的最顶端是/,称为linux的root,所有的目录.文件.设备都在/之下.文件类型linux有四种基本文件系统类型:普通文件. ...

  7. ASP.NET使用EasyUI-DataGrid + ashx + JQuery Ajax:实现数据的增删查改,查询和分页!

    转自:http://www.cnblogs.com/lt-style/p/3457399.html 数据表: 学生表:学生编号.姓名.性别.班级编号.年龄 班级表:班级编号.班级名称 开发过程: 1. ...

  8. (转载)Linux下IPTABLES配置详解

    (转载)http://www.cnblogs.com/JemBai/archive/2009/03/19/1416364.html 如果你的IPTABLES基础知识还不了解,建议先去看看. 开始配置 ...

  9. 蓝桥杯--算法训练 区间k大数查询

                                                                                 算法训练 区间k大数查询   时间限制:1.0 ...

  10. 离散数学A

    自反性:(都自指)所有的点自己指向自己[<a,a><b,b>]:反自反性:(都不自指)所有的点都绝不自己指向自己:对称性:但凡指,定互指[<a,b>,<b,a ...