Windows中win32 和 点net 概念问题

来源:互联网 发布:php 处理ios图片旋转 编辑:程序博客网 时间:2024/06/04 20:14

运行平台:1、CLR 是.net的运行引擎,也是.net的核心,使用CIL JIT 2、Win32 直接运行 生成可执行文件

 

Visual Studio 提供选择 选择库 和平台, 1、MFC/API  (C/C++编译器自带C++标准库 2、ATL  3、 字符集  4 、公共语言支持(平台选择)

 

(可选平台语言)

           Visual C++ 偏向于调用win32但也可以使用CLR  有了 C++/CLR

(只能net平台)

           VisualBasic 已集成到CLR上 可使用.net和 win32

           C#  依赖于.net同时可以在里面使用win32集成net库

 

Visual Studio  有java  C++ Basic  C# 到CIL的解析器,同时有C++  Basic 到可执行程序的编译器 F#等别的编译器。

 

C#是为.net框架而创建的一程语言。.net为了实现 手机等各个平台共应用而设计 !

 

 

 

C++ 中引用.net类库

 

NET中的类型分为两类:值和引用,值对象是可以储存在栈上的,引用类型的对象是储存在托管堆上的。

利用托管C++,也能享受托管运行的几个良好机制。
先了解几个符号:
   : 托管堆对象的引用
   : 托管对象引用解引用的引用类型(类似&) 这个比较复杂,看下面例子(1):
ref  : 定义引用型类
val  : 定义值型类

gcnew: 在托管堆上创建对象(这里不使用旧的语法规则__gc)

 

例(1):

void f(Class1% c){
 c.show();
}

int _tmain(int argc, _TCHAR* argv[])
{
 Class1^ c1 = gcnew Class1();
 f(*c1);
 return 0;
}

 

//运行环境:CLR

利用几个托管C++语法从而使用.NET类库

 

struct S //C++值类型
{
    int i;
};

value struct ValS //值类型
{
    int i;
};

ref struct RefS //引用类型
{
    int i;
};

void TestProc1()
{
    S s;
    s.i = 10;
    S *ps = new S();
    ps->i = 20;
    //     S ^gcs = gcnew S(); //error 因为S是C++值类型,不能在托管堆建立
    //     gcs->i = 30;
    //     S^ %rgcs = gcs;
    //     rgcs->i = 40;
    System::Console::WriteLine(s.i);
    System::Console::WriteLine(ps->i);
}

void TestProc2()
{
    ValS s;
    s.i = 10;
    ValS *ps = new ValS();
    ps->i = 20;
    ValS ^gcs = gcnew ValS(); //可以在托管堆建立
    gcs->i = 30;
    ValS^ %rgcs = gcs;  //注意这个语法,对托管堆的引用的引用使用'%'(托管引用),而不能使用'&'(非托管引用)
    rgcs->i = 40;
    System::Console::WriteLine(s.i);
    System::Console::WriteLine(ps->i);
}

void TestProc3()
{
    RefS s;
    s.i = 10;
    //RefS *ps = new RefS(); //error,只能在托管堆建立
    //ps->i = 20;
    RefS ^gcs = gcnew RefS(); //在托管堆建立
    gcs->i = 30;
    RefS^ %rgcs = gcs;  //注意这个语法,对托管堆的引用的引用使用'%'(托管引用),而不能使用'&'(非托管引用)
    rgcs->i = 40;
    System::Console::WriteLine(s.i);
    //System::Console::WriteLine(ps->i);
}

 

 

Visual Basic  版本

 

2002年开始,微软将.NET Framework与 Visual Basic 结合而成为 Visual Basic .NET (vb .net),重新打造 VB,新增许多特性及语法,又将 VB 推向一个新的高度。最新版本 Visual Basic 2012 也将带来许多令人期待的新功能。
通过几年的发展,它已成为一种专业化的开发语言和环境。用户可用Visual Basic 快速创建Windows程序,并可编写企业水平的客户端/服务器程序及强大的数据库应用程序。

Visual Basic 各版本界面

Visual Basic 各版本界面(8张)

Visual Basic 发展史简
发布日期
名称
说明
.NET Framework 引入之前
1991-04
Visual Basic 1.0 Windows 版本
 
1992-09
Visual Basic 1.0 DOS 版本
 
1992-11
Visual Basic 2.0
对于上一个版本的界面和速度都有所改善。
1993-06
Visual Basic 3.0
包含一个数据引擎,可以直接读取 Access 数据库。
1995-08
Visual Basic 4.0
发布了32位和16位的版本。其中包含了对类的支持。
1997-02
Visual Basic 5.0
包含了对用户自建控件的支持,且从这个版本开始 VB 可以支持中文。
1998-10
Visual Basic 6.0
 
.NET Framework 引入之后
2002-02
Visual Basic .NET 2002 (7.0)
由于其使用了新的核心和特性,所以很多 VB 的程序员都要改写程序。
2003-04
Visual Basic .NET 2003 (7.1)
主要改进了运行状况,提升了 IDE 以及运行时稳定性。
2005-11
Visual Basic 2005 (8.0)
是 vb .net 的重大转变,微软决意在其名称中去掉了".NET"部份。VB2005 提供 My 伪命名空间、泛型、操作符重载,等新语言特性。
2007-11
Visual Basic 2008 (9.0)
提供支持 IIF 函数、匿名类、LINQ、Lambda 表达式、XML 数据结构,等新语言特性。
2008-03
微软宣布结束对于 VB 6.0 的延长支持。
2010-04
Visual Studio 2010 (10.0)
提供支持 Dynamic Language Runtime (DLR)、自动实现属性、集合初始化、不需要在代码断行书写时输入下划线“_”,等新语言特性。
2012-05
Visual Studio 2012 (11.0) RC
提供支持更简易的异步编程(Asynchronous Programming)、Iterator、扩充 Global 关键词,等新语言特性。