余额宝提现多久到账?怎么转速度最快? 2025-06-19 22:44:59
长虹(CHANGHONG)手机T-FLASH报价 2025-05-19 09:56:53
软考报名实名认证提提示“注册验证失败,请检查输入信息”的解决办法。 2025-06-18 10:32:42
在 Android 上打开 Google Play 商店的 5 种方法 2025-06-05 19:20:15
2024年度越南考拉香烟市场价指南 2025-06-21 14:02:47
2024年短租公寓行业发展现状及趋势分析 2025-05-10 13:56:02
划扣成功后多久能解冻 2025-05-22 07:47:24
DNF魔界清理工琪琪在哪 魔界清理工兑换物品一览 2025-05-03 16:04:12
北京医院张烜教授基于12年循证医学系列研究牵头欧美亚太专家制定雷公藤中药联合治疗类风湿关节炎国际指南 2025-05-26 07:56:28
2024年体育世界杯各国球员完整名单及最新参赛阵容分析 2025-05-17 01:53:02

Visual Basic .NET

此条目的主題是Microsoft Visual Studio 2002或更晚版本所附带的Visual Basic(VB 7.0及以后)。关于Microsoft Visual Studio 6.0或更早版本所附带的Visual Basic(VB 6.0及以前),請見「Visual Basic」。

Visual Basic .NET编程范型多重编程范式(结构化,指令式,面向对象及宣告式)設計者微软實作者微软发行时间2001年当前版本16.9(2024年3月2日;穩定版本)[1][2][3]

型態系統静态、强类型、同时为类型安全和不安全[4],标明类型系統操作系统主要在Microsoft Windows同时可支持Android、BSD、iOS、Linux、Mac OS X、Solaris和Unix許可證专有软件(商业软件/免费软件)文件扩展名.vb網站msdn.microsoft.com/zh-cn/vstudio主要實作產品Microsoft Visual Studio、Microsoft Visual Studio Express、.NET Framework SDK及Mono衍生副語言Small Basic受影响于Visual Basic,C#

Visual Basic .NET(VB.NET)是.NET框架和后来的.NET下的一种多重编程范式高级语言。

VB.NET,是微软公司于2002年作为原有的Visual Basic的继承者而推出。虽然自2005年起,语言名称中的“.NET”就已经被去掉了。但为了与VB 6.0及以前版本的Visual Basic进行区分,“Visual Basic .NET”的名字仍然被社会公众用来指代VB 7.0及以后的Visual Basic。VB.NET与C#同为.Net Framework框架下两种主要的程序设计语言,都是为了调用.Net Framework的类库资源,因此两种语言具有很高的对应性,数据类型、控制结构与语言特性都存在一一对应,容易把源代码从一种语言对译为另一种语言。

微软公司的集成开发环境Visual Studio是最为广泛使用的VB.NET开发工具。然而Visual Studio的大部分版本都是价格不菲的商业软件,除了Express版本和Visual Studio Community(以上两者皆为免费软件)。除了Visual Studio,SharpDevelop和Mono也是可用的VB.NET开发环境。

数据类型与字面常量表示[编辑]

VB.Net的数据类型,实际上是.Net Framework定义的数据类型。

类型名

字节长度

取值范围

表示法

Short

2字节

-32768~32767

number S

Integer

4字节

-2 147 48 3 648~2 147 483 647

number I

Long

8字节

-9223372036854775808 ~ 9223372036854775807

number& numberL

Single

4字节

7位有效数字

num! numberF

Double

8字节

15/16位有效数字

id# numberR

Decimal

16字节

29位有效数字

id@ numberD

Currency

8字节

小数点右4位,左15位

number@

Byte

1字节

0-255

Char

2字节

UTF-16字符

"d"C

DateTime

8字节

0001-01-01T00:00:00.000 ~ 9999-12-31T23.59.59.999

#4/102008 06:01:23.456 PM#

Boolean

2字节

True(-1) False(0)

String

UBSTR, 字符数量*2+2

UTF-16字符串

"Hello"$

Object

4字节

Variant

此外,还有SByte、UShort、UInteger、ULong等无符号数据类型。

&O123表示八进制;&H123表示十六进制。

语法特性[编辑]

VB使用的名字是大小写不敏感的。但是,CLR是大小写敏感的。所以建议保持一致的大小写。

空值[编辑]

VB自版本5以后的数据类型来源于COM,而其根源是OLE数据类型。

Nothing(C#的null)表示Object类型的变量(即COM中的IDispatch指针,VB中的所有类和控件均由IDispatch派生)为空。对于引用型变量,表示未绑定到一个物理实体对象。

Empty表示VARIANT类型变量未初始化(即COM中的VARIANT结构体中的VT成员值为VT_EMPTY)。

Null表示VARIANT类型变量已初始化,其值为Null,这时COM中的VARIANT结构体中的VT成员值为VT_NULL。通常是所要表示的值不存在或者有问题不合规。实际上,一个引用型变量如果被赋值为Null,则它绑定的地址为0x0000

零长度字符串(空字符串)需要分配内存,只不过内存(即COM中的BSTR字符串)头4个字节记录的长度为0。VB.Net定义了一个Public Shared Readonly Empty As String = ""。对于仅声明但未实例化的String对象,实际上都绑定到String.Empty对象上。

vbNullString没有分配数据内存,实际上定义为Dim *vbNullString As String = Nothing。但又规定了字符串比较时vbNullString = ""为真。

在与空值做比较时,需要区分各种不同用法:

对象(引用型变量)是否为Nothing,可用IsNothing(对象名),对象名Is Nothing,对象名IsNot Nothing等

在比较数据库的一个字段的值是否为空,在.Net中应该用IsDBNull函数或Convert.IsDBNull方法。例如IsDBNull(recordSet("Column1").Value))或者recordSet("Column1").Value=DBNull.Value。因为DBNull是派生自Object的一个类,DBNull.Value是它的唯一的值。而数据库中的字段值,在DataRow中总是表示为Object,永远不可能为nothing。

比较字符串对象是否为空串,实际上规定了下述三种是等效的:

对象名 = ""

对象名 = String.Empty

对象名 = vbNullString

对于可空类型,实际上是Nullable(Of T)泛型结构。例如,下述三行等价:

Dim ridesBusToWork1? As Boolean

Dim ridesBusToWork2 As Boolean?

Dim ridesBusToWork3 As Nullable(Of Boolean)

比较表达式someVar = Nothing的结果永远是Nothing,应该用someVar.HasValue()方法去判断是否为空,或者用Is或IsNot关键字。

数组[编辑]

Dim arr([upperLimit]) As dataType = new dataType([upperLimit]) {[initialValues]} '声明数组

arr(index) = value '使用数组

数组的下标开始自0,这遵从了.NET的标准。如果不指定数组的下标上界,则为动态数组,其长度可以动态调整。

结构控制语句[编辑]

分支语句[编辑]

If语句

If 条件 Then

语句

ElseIf 条件 Then

语句

Else

语句

End If

Switch语句

Select Case Variable

Case Value1

Statements

Case Value2

Statements

Case Value3

Statements

...

Case Else

Statements

End Select

循环语句[编辑]

包括下述几种:

For...Next循环

For varName = 初值 To 终值 [Step 步长]

循环体语句

Next varName

Do循环

Do [{While|Until} condition]

statements

[Exit Do]

Loop

Do

statements

[Exit Do]

statements

Loop [{While|Until} condition]

While循环

While condition

statements

[Exit While]

statemenst

End While

For Each...Next循环

For Each element in group

statements

Next [element]

Yield语句[编辑]

实现迭代器遍历一个序列,每次获取一个返回值。迭代器可以作为一个方法或属性的get访问器,其中的Yield 语句返回迭代器的返回值,并记住当前执行的位置。下次再调用迭代器,从该执行位置恢复执行,直至迭代器代码执行完或者遇到Exit Function或Return语句。编译器把迭代器作为一个状态机的类。

Sub Main()

Dim days As New DaysOfTheWeek()

For Each day As String In days

Console.Write(day & " ")

Next

' Output: Sun Mon Tue Wed Thu Fri Sat

Console.ReadKey()

End Sub

Private Class DaysOfTheWeek

Implements IEnumerable

Public days =

New String() {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}

Public Iterator Function GetEnumerator() As IEnumerator _

Implements IEnumerable.GetEnumerator

' Yield each day of the week.

For i As Integer = 0 To days.Length - 1

Yield days(i)

Next

End Function

End Class

物件導向[编辑]

物件導向時,類的聲明範例:

Public Class className [Inherits bassClassName]

Public varName As Integer '資料成員

Public [ReadOnly/WriteOnly] Property propertyName() As Integer '屬性

Public Get

Return m_var

End Get

Public Set(ByVal value As Integer)

m_var=value

End Set

End Property

Public Sub subName(ByVal param1 As Integer) '方法

End Sub

Public Function funcName(ByVal param2 As Integer ) As Integer '函數

Return 101

End Function

[atrributive_list][accessibiliby][Shadows]Event eventName([Parameter]) [Implements interfaces.event] '事件

Public Sub new([Parameter]) '類的構造子(constructor),可以有多個(即可以重載)

End Sub

End Class

上述示例中的Public關鍵字表示可存取性(accessibility),表示可以被任意代碼存取;它可以替換為其他的可存取性:Private(僅限該Class自身存取)、Friend(僅限同一項目中的代碼存取)、Protected(僅限自身或衍生類別存取)、Protected Friend等。如果使用ReadOnly,則表示資料成員或屬性是唯讀;WriteOnly表示只寫。Shadows關鍵字表示覆蓋父類中同名(但不一定參數相同)的Event。使用關鍵字MyBase引用基礎類別。

類可用繼承修飾詞:NotInheritable關鍵字,表示該類不能做基礎類別;MustInherit關鍵字,表示這是一個抽象類。

類的屬性與方法能否被覆蓋:Overridable關鍵字表示可被覆蓋;Overrides關鍵字表示覆蓋了基礎類別中同名的方法或屬性;NotOverridable關鍵字表示不可覆蓋;MustOverride表示方法或屬性僅聲明沒有實現,這時該類必須有MustInherit修飾詞,是一個抽象類或者介面,僅能包含屬性、方法、函數的聲明。

如同其他.Net語,Visual Basic不允許多重繼承,但可以同時實現多個interface。

介面(interface)[编辑]

介面是一類特殊的抽象類,不能包括可執行代碼與類的資料成員的聲明:

Interface interfaceName

Event eventName([param])

Property [ReadOnly/WriteOnly] propertyName As typeName

Function funcName([param]) As returnTypeName

End Interface

介面中這些成員都強制是Public可存取性。

實現一個介面,使用Implements關鍵字:

Public Function GetEnumerator() As IEnumerator _

Implements IEnumerable.GetEnumerator

多型(Polymetric)[编辑]

基於繼承的多型,是指用基礎類別類型的變數繫結不同的子類別物件,這樣呼叫基礎類別變數的方法,在執行時動態確定實際執行了哪個衍生類別的同名的方法。多型的優點是可以針對基礎類別(或介面)的方法來寫一個通用的過程或者資料容器,適用於各種不同的衍生類別的具體實現。

委托(Delegate)[编辑]

主条目:Delegate (CLI)

委託本質上是一種Class,衍生自System.Delegate,包含了三部分資料:一個類物件的地址、該物件所屬類的一個方法的地址,以及另一個委託的引用(reference)。前两部分可以實現對一個類物件的方法的呼叫;第三部分把委託形成一個連結串列,使其依次被呼叫執行。如下聲明了一個委託:

Delegate Sub PlayHandler(ByVal sender As Object, ByVal e As System.EventArgs)

委託常用於事件處理(Event Handler)。.Net Framework的事件是類的屬性(實際上是一個巢狀類),用於封裝參數格式固定的委託;該委託的參數總是為(ByVal sender As Object, ByVal e as System.EventArgs),返回值為void(即Sub類型)。例如:

Public Class clsName

Public Event monitor As PlayHandler

End Class

對一個具體的實例,可以給它的事件在運行時動態追加上一個或多個事件處理函數:

AddHandlerins.monitor, AddressOf playHandle_1

AddHandle指向引發事件的對象;AddressOf把一個函數或過程名轉化為一個隱式創建的委託實例,用於確定該事件物件所要呼叫的事件處理程序。在AddressOf關鍵字可隱式創建一個引用特定過程的委託的實例。

程序可以抛出一個事件:

Dim WithEvents e As New System.EventArgs

Dim ins As New clsName

RaiseEvent ins.monitor(ins,e)

using語句[编辑]

using语句,定义一个范围,在范围结束时自动释放对象所占用的资源。

Using conn As New SqlConnection'當在某個代碼段中使用了類別的實例,而希望無論因為什麼原因,只要離開了這個代碼段就自動呼叫這個類別實例的Dispose。

'执行代码

End Using

自动属性[编辑]

例如:

Public Property pa As String=""

對象初始化器[编辑]

集合(Collection)对象的初始化与普通类对象的属性初始化,分别使用From与With关键字。例如:

Public Class Person

Public Property age As Integer

Public Property Name As String

End Class

Dim personList As New List(Of Person) From {

New Person With {.Name = "Qiang", .age = 24},

New Person With {.Name = "Wei", .age = 42}

}

匿名类型[编辑]

例如:

Dim people = New With {.name="kyo", .age=22}

匿名函数或lambda表达式[编辑]

即无名的函数或过程,作为表达式的值。可以写为一行或多行。例如:

Dim func1=Function(i As integer) i+10

Dim action = sub()

End Sub

Dim func2 = Function()

End Function

可以在声明匿名函数的同时调用它。单行的lambda表达式不能使用Return关键字,其返回类型是自动推导得出;其参数要么都是用As关键字指明类型,要么全部是自动推导出类型。

lambda表达式在定义时可以使用所在上下文(context,即C++语言的闭包closure)的局部变量、参数、属性、Me等等的值,即使lambda表达式离开了定义时所在的context,这些被使用的局部变量等的值仍然有效。这是因为lambda表达式在定义时把所用到的context的值保存到它自己的定义类中。lambda表达式可以嵌套定义。

扩展方法[编辑]

例如:

Imports System.Runtime.CompilerServices

Public Function funcName(ByVal ins As className) As String

'Do something

End Function

异常处理[编辑]

Try

' write the condition here

Catch ex As Exception When condition

' Handle Exception when a specific condition is true

Catch ex As Exception

' Handle Exception

Finally

' Cleanup, close connections etc

' NB this code is always executed regardless of if an Exception was raised or not!

End Try

LINQ[编辑]

From element [ As type ] In collection [, element2 [ As type2 ] In collection2 [, ... ] ] [Where 表达式]

例子(Hello World)[编辑]

这里给出了一个Hello World的例子。通过它们您可以更好地理解Visual Basic的特性。(此源代码运行于命令行下)

Module Mdl_Main

Sub Main()

Console.WriteLine("Hello World")

End Sub

End Module

这个程序能输出Hello World。

Module Mdl_Main

第一行是模块定义,命名空间的定义一般可以省略。VB.NET中,所有函数,过程与变量的声明都必须在模块或者类的内部,而不能直接存在于命名空间内部。

Sub Main()

第二行定义了名为Main的过程。一般来说,“Sub Main()”是程序的入口点。

Console.WriteLine("Hello World")

第三行输出“Hello World”。

End Sub

第四行结束了过程Main的定义。

End Module

第五行结束了模块Mdl_Main的定义。

与旧版VB比较[编辑]

与旧版VB(VB 6.0及以前)相比较,VB.NET明显受到了.Net Framework中其他语言思想的影响。与旧版VB相比,VB.NET更加严格而不失灵活。

Long类型与Integer类型的长度分别倍增,达到了64位和32位。

事件的处理过程不再依赖于名称,而是通过Handle子句进行静态绑定或者在运行时进行动态绑定。例如处理按钮控件Button1的Click事件:

Visual Basic 6:(注意此过程的名称不可改变)

Private Sub Button1_Click()

'Work to do

End Sub

VB.NET:(注意此过程的名称无关紧要)

Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

'Work to do

End Sub

很多原有的实现特殊功能的语句被相应定义好的函数替代。这减少了关键字的使用(如Open()函数取代Open语句,窗体的Print()方法取代Print语句)。同时,被封装好的、功能更强大的、通用于.Net Framework框架的类被推荐用来取代原有的语句。

对一些更强大的语法特性的支持,如:LINQ,Lambda表达式(Visual Basic 2010起支持多行Lambda)。

同样使用:作为一行中分行的符号,_作为续行符。但是VB.NET自Visual Basic 2012起允许在函数的定义与调用中不加_地用换行分隔各个参数。

与C#等C家族语言比较[编辑]

与C家族语言相比,VB.NET则较多保留了VB的特征,比如:

与C家族语言统一使用{、}定义语句块不同,VB.NET每种语句块都有对应的开头与结尾。如If ... Else ... End If,Class ... End Class。

VB.NET定义变量使用Dim关键字,同时使用Public、Private或Protected表明作用域时可以省略Dim。

VB.NET表示变量类型的方式是在变量名后附加As Type(Type为变量类型),而C家族语言是在变量名之前书写类型名,无论在定义变量时还是在函数与形参的声明时都是这样。

VB.NET中有没有返回值的特殊子过程Sub。VB.NET中没有void类型,C#中返回值为void的函数对应了VB.NET中的Sub。

VB.NET中有一种特殊的类型Module,相当于C#中的static class。

下面这两份功能一致的代码展现出了VB.NET与C#的很多不同之处:

VB.NET:

Namespace N

'Comment

Module M

Public Function GetSum(arr() As Integer) As Integer

Dim Sum = 0 'Auto Type Infer

Dim i As Integer

For Each i In arr

Sum += i

Next

Return Sum

End Function

End Module

Class C

Private v As Integer

Public Function F() As Integer

Return v * v

End Function

Public Sub S(value As Integer)

Me.v = value

End Sub

Public Sub New() 'Constructor

Me.v = 0

End Sub

End Class

End Namespace

C#:

namespace N

{

//Comment

static class M

{

int GetSum(int[] arr)

{

var Sum = 0;

int i;

foreach(i in arr)

{

Sum += i;

}

return Sum;

}

};

class C

{

private:

int v;

public:

int F()

{

return v * v;

}

void S(int value)

{

this.v = value;

}

C() //Constructor

{

this.v = 0;

}

};

}

VB.NET与C#同为.Net Framework的两大主力程序设计语言,尽管有着各种各样的不同,两者最终都编译为MSIL并由CLR运行。两者功能基本一致,并可以在.Net Framework框架下方便地互相调用与协同开发。关于两者的优劣一直见仁见智。

调用C语言函数的规范[编辑]

C语言编写的DLL文件,VB在调用时,需要注意:对于C语言的数组指针,在VB中调用时应将数组的首元素传递给DLL。不能直接传递数组名,因为如果传递数组名,VB实际会传一个复杂的结构类型给DLL。C函数无法确定数组大小,通常用另一个参数指出数组的大小。

Public Sub test(ByVal param As Integer, ByRef OK As Integer)

End Sub

'下述方法只能使用_stdcall调用约定:

Public Declare Function test1 Lib "D:\PackingDLL.dll" Alias "_test@4" (ByVal param As Integer) As Integer

历史[编辑]

2002年Visual Basic .NET(VB 7.0)[编辑]

Visual Basic .NET(VB 7.0)是随Visual C#和ASP.NET一起在2002年发布的最初始的VB.NET版本。C#被大力宣传为微软对付JAVA的王牌,受到媒体极力关注。然而VB.NET(有时被称为VB 7.0)影响面不广,这导致VB社区之外很少人关注它。那些试用过此版VB.NET的人在层层幕布下发现一个强大却艰深的语言,而且还有不少缺点,例如它的运行阶段组件(Run-Time)比VB6大了十倍,存储器使用量也大大增加。

VB 7.0引起了广泛的争议,主要原因在于对旧版VB的改动过大。许多资深的VB程序员抱怨VB.NET,因为VB.NET 2002丢掉了许多不再发行的VB6中使用的大量语言结构和用户界面功能,并且对保留下来的东西也改变了语意。例如,在VB.NET参数默认是以值方式传递的,而不是以引用方式。VB.NET 2002被半嘲讽半认真地称为Visual Fred或VB DOTNOT。作为对2005年3月8日微软拒绝为VB6再提供维护与支持的回应,当月月底出现了反对者的请愿[6]。

VB.NET的支持者们认为新语言在很多方面比旧版本更为强大,比如它以相比早期版本更为自然、紧密和完全的方式地加入了现代面向对象的编程范式。反对者们有不同意见,虽然VB6对对象模型支持有缺点,但是二次开发升级到VB.NET的成本比升级后的收益要高得多。而开发软件发布因特网版本的独立程序员也对VB.NET的RunTime尺寸过大不满。

针对开发者的不满,微软主要做了如下努力:使新的开发更容易启动,而把已經开发的VB6代码升级到VB.NET[7]。例子主要包括:完成VB6中的常见任务如打印预览;整合VB6和VB.NET解决方案(dubbed VB Fusion),从VB6代码转换到VB.NET。

微软在后续版本中撤销了一些过激的更改,并且吸取了经验。在以后版本中,语法的更改变得更加谨慎。

2003年Visual Basic .NET 2003(VB 7.0)[编辑]

Visual Basic .NET 2003(VB 7.0)和.NET Framework 1.1一起发布。新功能包括对.NET Compact Framework的支持和更好的VB升迁向导。并改进了运行状况,IDE稳定性(尤其是后台编译器),以及运行时RunTime稳定性。另外,VB.NET 2003还有一个学院版Visual Studio .NET 2003 Academic Edition(VS03AE),它是分发给各国某些学者免费使用的版本。

2005年Visual Basic 2005(VB 8.0)[编辑]

Visual Basic 2005(VB 8.0)是VB.Net的重大转变,微软决意在其软件名称中去掉了.NET部份。在VB2005中,微软增加了许多新功能,以引用VB对于初学者来说的一些优点:

主要的变动:

不再支持“Edit and Continue” - 早期Visual Basic可以在调试时修改代码并且不经重新编译地执行。Visual Basic 2005去掉了这个功能;

设计时表达式求值;

提供My伪命名空间,包含了不需大量编码而访问特定.NET Framework功能的简单方式;提供了改进的VB到VB.NET转换向导;Using语法,简化了需要部署pattern to free resources的对象的使用;My编码,可隐藏由VB.NET IDE写的模板代码;数据源绑定,简化了数据库C/S开发。上述功能(尤其是My)增强了VB.Net成为快速开发应用平台的可能,并与C#进一步区别开来。Visual Basic 2005通过增加新功能而减小了和其它所谓更强大的.NET语言的差距。

增加了.NET 2.0语言功能包括:泛型(generics)和Partial类(在一个文件里定义一个类的某部份然后在另外的文件里添加更多的定义,这个方法在整合用户书写的代码和系统自动生成的代码时尤其有用);

XML注释,可以被NDoc等工具处理而自动生成文档;

操作符重载;

支持在其它语言中已经广泛使用的unsigned integer数据类型;

支持在许多C衍生编程语言已提供的复合操作符如:"+=", "-=";

IsNot专利:If Not X Is Y表达式被转换成If X IsNot Y。当微软为IsNot申请专利时招致了恶名(尤其来自Real公司);

Visual Basic 2005 Express:作为VS产品线上的一部份,VB2005 Express是专为业余爱好者和新手定制的免费的VS Express系列的一员。Express版本目的定位在帮助人们学习一种语言,所以他们有和标准版一致的用户界面,只是少了一些高级功能。另外,VS Express版包括了VB6.0转换器,提供了从VB老版本升级的可行方法。

2008年Visual Basic 2008(VB 9.0)[编辑]

Visual Basic 2008(VB 9.0)于2007年11月9日与Microsoft .NET Framework 3.5一起发布。

在VB2008中,微软增加了许多功能,包括:

IIF函数

匿名类型

支持LINQ

Lambda表达式

XML数据结构

类接口

2010年Visual Basic 2010(VB 10.0)[编辑]

Visual Basic 2010于2010年4月发布。

2012年Visual Basic 2012(VB 11.0)[编辑]

2013年Visual Basic 2013(VB 12.0)[编辑]

2015年Visual Basic 2015(VB 14.0)[编辑]

Visual Basic 2015(VB 14.0)於2015年7月20日發佈。

2017年Visual Basic 2017(VB 15.0)[编辑]

2019年Visual Basic 2019(VB 16.0)[编辑]

2022年Visual Basic 2022(VB 17.0)[编辑]

[8]

2022 年 9 月 13 日 - Visual Studio 2022 17.0.14版 NewReleaseIcon

2022 年 8 月 9 日 - Visual Studio 2022 17.0.13版

2022 年 7 月 12 日 - Visual Studio 2022 17.0.12 版

2022 年 6 月 14 日 - Visual Studio 2022 17.0.11版

2022 年 5 月 10 日 - Visual Studio 2022 17.0.10 版

2022 年 4 月 19 日 - Visual Studio 2022 17.0.9版

2022 年 4 月 12 日 - Visual Studio 2022 17.0.8版

2022 年 3 月 8 日 - Visual Studio 2022 17.0.7 版

2022 年 2 月 8 日 - Visual Studio 2022 17.0.6版

2022 年 1 月 13 日 - Visual Studio 2022 17.0.5 版

2021 年12 月 16 日 - Visual Studio 2022 17.0.4版

2021 年 12 月 14 日 - Visual Studio 2022 17.0.3 版

2021 年 11 月 30 日 - Visual Studio 2022 17.0.2版

2021 年 11 月 16 日 - Visual Studio 2022 17.0.1版

2021 年 11 月 8 日 - Visual Studio 2022 17.0.0 版

参考資料[编辑]

^ https://learn.microsoft.com/en-us/visualstudio/releases/2019/release-notes-v16.9.

^ https://learn.microsoft.com/en-us/dotnet/visual-basic/whats-new/#visual-basic-169.

^ https://dotnet.microsoft.com/en-us/download/dotnet/9.0.

^ Option Strict开关可以用于切换安全或不安全。

^ 新增功能 - Visual Basic. [2021-08-16]. (原始内容存档于2021-12-03).

^ 存档副本. [2014-04-05]. (原始内容存档于2014-04-07). petition

^ http://msdn.microsoft.com/VBRun/ (页面存档备份,存于互联网档案馆) VBRun website

^ 存档副本. [2022-09-30]. (原始内容存档于2022-10-02).

参见[编辑]

C#

Visual Basic

Visual Studio

外部链接[编辑]

官方網站[编辑]

(英文)Microsoft's VB.NET (页面存档备份,存于互联网档案馆)

(英文)Visual Basic 2005 Express Edition

(英文)VBRun网站 (页面存档备份,存于互联网档案馆)

(繁體中文)Visual Studio Express(页面存档备份,存于互联网档案馆)

(繁體中文)Visual Studio Express Visual BASIC下載 (页面存档备份,存于互联网档案馆)

教程[编辑]

使用My开发 (页面存档备份,存于互联网档案馆)

通过My命名空间访问.NET Framework和项目

其他[编辑]

SharpDevelop (页面存档备份,存于互联网档案馆) - VB.NET的一个免费IDE

VB.NET的MONO应用

VB.NET Knowledge Base(页面存档备份,存于互联网档案馆) - VB.NET知識庫 / 程式設計俱樂部

查论编编程语言范型过程式

FORTRAN

COBOL

JOVIAL

ALGOL 60

JOSS(英语:JOSS)

BASIC

PL/I

MUMPS(英语:MUMPS)

ALGOL 68

Forth

Pascal

Turbo Pascal

C

Modula-2

Ada 83

occam

Oberon

Go

Ballerina(英语:Ballerina (programming language))

面向对象

Simula 67

Smalltalk

Objective-C

Eiffel

Object Pascal

Delphi

Self

CLOS

Visual Basic

Gambas

Ada 95

Java

C#

Vala

Crystal(英语:Crystal (programming language))

多范型

C++

Modula-3

Dylan

Python

Lua

JavaScript

Ruby

D

Factor

Scala

F#

Haxe

Nim

Chapel(英语:Chapel (programming language))

Rust

Kotlin

Dart

Swift

Zig

Ring(英语:Ring (programming language))

V(英语:V (programming language))

Mojo

Carbon

函数式

LISP

Scheme

Common Lisp

Clojure

Logo

APL/J

ML

Standard ML

OCaml

Erlang

Elixir

Haskell

SAC

Agda

Idris

jq

Gleam(英语:Gleam (programming language))

逻辑式

Prolog

Datalog

Mercury

AnsProlog

ProbLog(英语:ProbLog)

脚本语言动态语言

SNOBOL

Icon

REXX

Perl

Raku

Tcl/Tk

Python

Lua

Ruby

PHP

Hack

CFML(英语:ColdFusion Markup Language)

REBOL

Red(英语:Red (programming language))

Io

Julia

jq

Shell语言

Unix shell

sh/ash/dash

csh/tcsh

ksh

bash

zsh

rc(英语:rc (Unix shell))

AWK

PowerShell

ECMA-262

ECMAScript

JavaScript

TypeScript

CoffeeScript/LiveScript(英语:LiveScript (programming language))

Elm

PureScript

Reason

Bosque(英语:Bosque (programming language))

特定平台.NET

C#

C++/CLI

F#

PowerShell

VB.NET

Small Basic

JVM

Java

AspectJ(英语:AspectJ)

Scala

Clojure

Groovy

Kotlin

特定领域科学计算

Speakeasy(英语:Speakeasy (computational environment))

IDL

GDL

Maxima

Maple

MATLAB

Octave

Scilab

Wolfram

R

Yorick(英语:Yorick (programming language))

SageMath

Julia

GPU计算

Cg/HLSL

GLSL/GLSL ES

Brook(英语:BrookGPU)

CUDA/PTX(英语:Parallel Thread Execution)

OpenCL/SPIR-V(英语:Standard Portable Intermediate Representation)

Futhark

WGSL(英语:WebGPU Shading Language)

数据查询

CODASYL(英语:CODASYL)

SQL

PL/SQL

T-SQL

SQL/PSM(英语:SQL/PSM)

xBase(英语:xBase)

XPath

XQuery(英语:XQuery)

GraphQL

可视化

Prograph(英语:Prograph)

Simulink

LabVIEW

Orange(英语:Orange (software))

KNIME(英语:KNIME)

Scratch

Snap!

App Inventor

Power Fx

传媒设计

SuperCollider

Pure Data

AviSynth

Processing

ChucK

其它

汇编语言

APT(英语:APT (programming language))

GPSS(英语:GPSS)

CLIPS(英语:CLIPS)

AMPL

dc

sed

yacc

make

PostScript

XSLT

LLVM IR

WebAssembly

深奥的编程语言

目录

列表

按类型排列(英语:List of programming languages by type)

历史

比较(英语:Comparison of programming languages)

时间线

查论编人物創始人

比尔·盖茨

保罗·艾伦

董事会

薩蒂亞·納德拉(董事长兼首席执行官)

迪娜·杜伯倫

瑪利亞·克拉維

David Marquardt(英语:David Marquardt)

Charles Noski(英语:Charles Noski)

Helmut Panke(英语:Helmut Panke)

Mason Morfit(英语:Mason Morfit)

John W. Stanton(英语:John W. Stanton)

高層領導團隊

薩蒂亞·納德拉(執行長)

Scott Guthrie(英语:Scott Guthrie)

Amy Hood(英语:Amy Hood)(財務長)

特里·迈尔森

沈向洋

菲尔·斯宾塞(英语:Phil Spencer (business executive))

公司副總裁

Gabe Aul(英语:Gabe Aul) (副總裁)

理查德·拉希德(高級副總裁)

S. Somasegar(英语:S. Somasegar)(高級副總裁)

部門

工程團隊

配件

行動

反網絡犯罪中心(英语:Microsoft Digital Crimes Unit)

車庫(英语:Microsoft Garage)

出版社

研究院

.NET基金會

Outercurve基金會(英语:Outercurve Foundation)

微软游戏

Xbox游戏工作室

產品系列

作業系統

Windows

软件

Office

Servers

Visual Studio

硬件

HoloLens

Surface

Xbox

代号列表

網絡

Azure

Bing

Channel 9

CodePlex

開發者網絡

MSN

Mixer

Office.com

OneDrive

Outlook.com

商店

TechNet

大會

Build

Inspire

MIX(英语:MIX (Microsoft))

PDC

Ignite(英语:Microsoft Ignite)

WinHEC

批評

Microsoft Windows捆綁銷售(英语:Bundling of Microsoft Windows)

Clippy

iLoo(英语:iLoo)

Internet Explorer

Microsoft Bob

_NSAKEY(英语:_NSAKEY)

Windows

XP

Vista

8

10

Xbox 360

訴訟

阿爾卡特-朗訊訴微軟(英语:Alcatel-Lucent v. Microsoft Corp.)

蘋果訴微軟(英语:Apple Computer, Inc. v. Microsoft Corp.)

歐盟微軟競爭案(英语:Microsoft Corp v Commission)

微軟訴Lindows(英语:Microsoft Corp. v. Lindows.com, Inc.)

微軟訴MikeRoweSoft

微軟訴Shah(英语:Microsoft Corp. v. Shah)

合众国诉微软案

收購(英语:List of mergers and acquisitions by Microsoft)

6Wunderkinder

动视暴雪

收购案(英语:Acquisition of Activision Blizzard by Microsoft)

Altamira Software(英语:Altamira Software)

AltspaceVR(英语:AltspaceVR)

aQuantive

Azyxxi

Mixer

The Blue Ribbon SoundWorks(英语:The Blue Ribbon SoundWorks)

Bungie

Calista Technologies(英语:Calista Technologies)

Colloquis(英语:Colloquis)

Connectix(英语:Connectix)

Consumers Software(英语:Consumers Software)

Danger(英语:Danger Inc.)

Farecast(英语:MSN Travel)

FASA Studio

Fast Search & Transfer(英语:Microsoft Development Center Norway)

Fast Search & Transfer(英语:Fast Search & Transfer)

螢火蟲(英语:Firefly (website))

Forethought(英语:Forethought, Inc.)

GIANT Company Software

GitHub

GreenButton(英语:GreenButton)

Groove Networks(英语:Groove Networks)

High Heat Major League Baseball(英语:High Heat Major League Baseball)

Hotmail

Jellyfish.com(英语:Jellyfish.com)

領英

LinkExchange(英语:LinkExchange)

Lionhead Studios

Massive Incorporated(英语:Massive Incorporated)

Mobile Data Labs(英语:MileIQ)

Mojang Studios

诺基亚设备和服务

Nuance Communications

Onfolio

Pando Networks(英语:Pando Networks)

感知像素

PlaceWare(英语:PlaceWare)

Powerset

ProClarity(英语:ProClarity)

Rare

Revolution Analytics(英语:Revolution Analytics)

ScreenTonic(英语:ScreenTonic)

Secure Islands(英语:Secure Islands)

Simplygon(英语:Simplygon)

Skype

Sunrise Atelier(英语:Sunrise Calendar)

Winternals Software

SwiftKey

Winternals Software(英语:Sysinternals)

Teleo(英语:Teleo)

Telekinesys Research

Tellme Networks(英语:Tellme Networks)

Twisted Pixel Games

Vermeer Technologies(英语:Vermeer Technologies)

Visio Corporation(英语:Visio Corporation)

Vivaty(英语:Flux (software))(解散)

VoloMetrix(英语:VoloMetrix)

VXtreme(英语:NetShow)

WebTV Networks

Xamarin

Yammer

Yupi(英语:Yupi)

ZeniMax Media

分类

共享資源

微軟主题

歷史

查论编.NET实现

.NET(.NET CORE) 3

.NET框架

Mono

Compact Framework

Micro Framework

Silverlight

SSCLI

DotGNU(Portable.NET)

架構

基礎類別庫

共同語言執行期元件

程序碼存取安全性

組件

中介資料

COM互通性

.NET標準

共同語言基礎架構

共同語言基礎架構(CLI)

共同型別系統

共同中介語言

虛擬執行系統

CLI支持語言共同語言1

C#

Visual Basic .NET

C++/CLI(Managed)

F#

J#

JScript .NET

PowerShell

其他語言2

Axum

A#

Boo

Oxygene

IronLisp

IronPython

IronRuby

Nemerle

Phalanger

P#

Core家族3

ASP.NET Core (

Entity Framework Core

ASP.NET Core MVC )

元件

ADO.NET (Entity Framework

Data Services)

ASP.NET (AJAX

Dynamic Data

MVC

Razor)

ClickOnce

动态语言运行时

LINQ

MAUI

Parallel FX Library (PLINQ

TPL)

WCF

Windows Forms

WPF

Windows CardSpace

WF(WWF)

Remoting

XAML

比較

C#与Java

C#与Visual Basic .NET

Java与.NET平台

即將推出

"Acropolis"

"Jasper"

1微软在Visual Studio或.NET Framework中提供了或者将提供支持的语言2被多數使用者使用,且非教學或研究型的語言。3具有跨平台(Windows, Mac OSX, Linux)能力的開發框架。