学了2、3个月c#,有点问题不是很明白。
1.
.net程序是在第一次运行时将MSIL编译成本地代码的,那么这些编译出来的本地代码是存放在哪里的?如果是在内存的话,那么如果程序很大的话那怎么办,还有什么时候会清理掉。(因为不是退出时清理掉的)
2.
委托就是传入方法的地址(我自己的理解),那么与直接调用方法有什么优势之处?
3.
wpf中可以通过
<RotateTransform Angle="180"/>
之类的方式去对控件进行旋转变换。那么在后台的c#代码里该怎么写?
4.
如果有SQL基础的话,LINQ学起来快吗?粗略看了下,感觉语法、关键字好像都差不多。
希望各位c#的大牛能解决一下我这个小白的问题。

解决方案 »

  1.   

    放哪里都是可以的,只要满足公开的目标,不同.net版本、或者同一版本在不同机器上的实现等等,都是可以有变化的。既可以放在硬盘,又可以用内存作为文件的映射或者缓存。委托绝非是什么“地址”。你那是整出静态的c语言概念来了。另外委托是一个对象,可以赋值给变量,可以用到方法参数的设计中等等。这些完全是基于数据驱动的概念,“我保存了一个方法、我传递了一个方法”跟“我调用了一个方法”完全是应用场景迥异、完全不可比较的概念。你可以看看FrameworkElement的TransForm属性的文档。Linq就是学SQL语法的,自然有很大的借鉴意义。
      

  2.   

    事实上你有没有想过,即便原生的程序,“很大很大”怎么办?比如一个WinRAR的自解压文件,单个exe可能有几GB,超过你的内存容量,照样运行。事实上操作系统会根据需要加载程序,可执行程序中可以定义很多段。具体来说,你需要补充计算机基础知识和操作系统原理课程。关于委托,你说的也没有错,问题是,在C语言中,传递函数的地址有什么用?这样问题又回到了原点,你用你不理解的知识解释了另一个你不理解的知识,仅此而已。所以不要把背诵不理解的东西代替“理解”,这根本不是你自己的理解。建议你补充程序设计的入门知识。在这里,我简单说下,将函数作为参数传给另一个函数,可以将函数中需要变化的东西独立出来,交给调用者去定义,从而提高代码的复用性。关于LINQ,说实话,如果你精通SQL当然学起来没有问题,精通SQL的人自然知道如何学习另一种技术——我的意思是,精通SQL的人去学PHP或者Java都没有问题。问题是,如果你对SQL和LINQ的认识仅仅是用到了一些类似的关键字这个程度,我觉得了解些SQL的皮毛无助于你学习LINQ,还是按照我说的,先把计算机基础知识补齐了再开始学编程。
      

  3.   

    谢谢,那么本地代码就是由CLR自动管理的咯。委托那里暂时还不是很懂,再看看书好了。
    第三点刚刚查msdn找到了
    顺便贴上网址帮以后的人吧http://technet.microsoft.com/zh-cn/library/system.windows.frameworkelement.layouttransform
      

  4.   

    那将程序分成多段是不是跟JIT的原理差不多,只将需要的加载到内存里(对于JIT就是编译了吧)。
    关于委托,其实最初我理解成传入一个方法名的(汗。。)。复用性这一点好像有点理解了。嘛,总之练多一点就有感觉的了。至于计算机基础这个嘛,应该是没时间补回来的了。2年前大一的时候已经学过了,不过现在都全忘光了。操作系统这个学期正在学,不过老师基本都是讲进程啊、线程啊、死锁啊,反正就是按照期末考啥就讲啥,基本就只讲了半本书。顺便诅咒一下中国大学的教育制度。反正我这个人比较笨,只能多练了。