我是个学.net(C#和VB.net都学)的初学者,第一次接触就喜欢上了它。不过有个问题一直困扰着我。过去的非.net平台比如XP的应用程序编程接口是win32API,而现在的.net平台是 .net FrameWork也就是FCL。有些书说FCL其实是win32API的封装,如果这样的话,那.net平台岂不是一直都要依赖于win32API,那“跨平台”岂不是空话?如果.net平台完整的保留了以前的win32API接口,那何以现在很多软件无法在Windows 7上顺利运行!如果FCL不是win32API的封装,那是用C#写的吗?(C#应该不能操作底层封装操作系统的功能吧)希望大家说说自己的看法,谢谢。

解决方案 »

  1.   

    FCL提供了一个API抽象层。App-Win32 这就没办法移植了
    App-FCL-API 只要实现不同的FCL就可以移植了另外,实际上移植性是相对的。传统app可以通过wine在Linux下跑。.net程序则可以使用mono运行在Linux下。
      

  2.   

    正是有了.net FrameWork从理论上来说就可以跨平台!
    .net FrameWork是什么东东呢?
    .net FrameWork就是将我们编写的程序翻译成中间语言(MSIL),
    然后将中间语言编译成机器语言执行之,
    也就是说现在的.net FrameWork只能将中间语言编译成windows认的机器语言!换句话说微软完全可以开发另一套针对unix的.net FrameWork,
    将中间语言编译成unix机器语言,在这个过程中你编写的程序没有改变,翻译成中间语言也没该变,仅改变编译成不同的机器语言!这就是所谓的跨平台,(程序无需改动而运行在不同的系统上)
      

  3.   

    .net FrameWork肯定是C++写的,还没有针对其它操作系统开发出相应的.net FrameWork时就不能说是跨平台,所谓的跨平台只是指多语言可在.net FrameWork上混合编程