Prise en charge des langages
La plate-forme Microsoft .NET offre actuellement une prise en charge intégrée pour trois langages : C#, Visual Basic et JScript.
Les exercices et les exemples de code de ce didacticiel montrent comment créer des applications .NET à l'aide de C#, Visual Basic et JScript. Pour plus d'informations sur la syntaxe des autres langages, consultez la documentation du Kit de développement .NET Framework SDK.
L'objectif du tableau suivant est de vous aider à comprendre les exemples de code de ce didacticiel et à identifier les différences entre les trois langages :
Déclarations de variables
int x;
String s;
String s1, s2;
Object o;
Object obj = new Object();
public String name;
Dim x As Integer
Dim s As String
Dim s1, s2 As String
Dim o 'Implicitly Object
Dim obj As New Object()
Public name As String
var x : int;
var s : String;
var s1 : String, s2 : String;
var o;
var obj : Object = new Object();
var name : String;
|
| C# |
VB |
JScript |
|
Instructions
Response.Write("foo");
Response.Write("foo")
Response.Write("foo");
|
| C# |
VB |
JScript |
|
Commentaires
// This is a comment
/*
This
is
a
multiline
comment
*/
' This is a comment
' This
' is
' a
' multiline
' comment
// This is a comment
/*
This
is
a
multiline
comment
*/
|
| C# |
VB |
JScript |
|
Accès aux propriétés indexées
String s = Request.QueryString["Name"];
String value = Request.Cookies["key"];
Dim s, value As String
s = Request.QueryString("Name")
value = Request.Cookies("Key").Value
'Note that default non-indexed properties
'must be explicitly named in VB
var s : String = Request.QueryString("Name");
var value : String = Request.Cookies("key");
|
| C# |
VB |
JScript |
|
Déclaration de propriétés indexées
// Default Indexed Property
public String this[String name] {
get {
return (String) lookuptable[name];
}
}
' Default Indexed Property
Public Default ReadOnly Property DefaultProperty(Name As String) As String
Get
Return CStr(lookuptable(name))
End Get
End Property
JScript does not support the creation of indexed or default indexed properties.
To emulate these properties in JScript, use function
declarations instead. Even though you cannot access the functions using indexed property syntax in C#, it will provide the illusion for VB.
public function Item(name:String) : String {
return String(lookuptable(name));
}
|
| C# |
VB |
JScript |
|
Déclaration de propriétés simples
public String name {
get {
...
return ...;
}
set {
... = value;
}
}
Public Property Name As String
Get
...
Return ...
End Get
Set
... = Value
End Set
End Property
function get name() : String {
...
return ...;
}
function set name(value : String) {
... = value;
}
|
| C# |
VB |
JScript |
|
Déclaration et utilisation d'une énumération
// Declare the Enumeration
public enum MessageSize {
Small = 0,
Medium = 1,
Large = 2
}
// Create a Field or Property
public MessageSize msgsize;
// Assign to the property using the Enumeration values
msgsize = Small;
' Declare the Enumeration
Public Enum MessageSize
Small = 0
Medium = 1
Large = 2
End Enum
' Create a Field or Property
Public MsgSize As MessageSize
' Assign to the property using the Enumeration values
MsgSize = small
// Declare the Enumeration
public enum MessageSize {
Small = 0,
Medium = 1,
Large = 2
}
// Create a Field or Property
public var msgsize:MessageSize;
// Assign to the property using the Enumeration values
msgsize = Small;
|
| C# |
VB |
JScript |
|
Énumération d'une collection
foreach ( String s in coll ) {
...
}
Dim S As String
For Each S In Coll
...
Next
var s:String;
for ( s in coll ) {
...
}
|
| C# |
VB |
JScript |
|
Déclaration et utilisation de méthodes
// Declare a void return function
void voidfunction() {
...
}
// Declare a function that returns a value
String stringfunction() {
...
return (String) val;
}
// Declare a function that takes and returns values
String parmfunction(String a, String b) {
...
return (String) (a + b);
}
// Use the Functions
voidfunction();
String s1 = stringfunction();
String s2 = parmfunction("Hello", "World!");
' Declare a void return function
Sub VoidFunction()
...
End Sub
' Declare a function that returns a value
Function StringFunction() As String
...
Return CStr(val)
End Function
' Declare a function that takes and returns values
Function ParmFunction(a As String, b As String) As String
...
Return CStr(A & B)
End Function
' Use the Functions
VoidFunction()
Dim s1 As String = StringFunction()
Dim s2 As String = ParmFunction("Hello", "World!")
// Declare a void return function
function voidfunction() : void {
...
}
// Declare a function that returns a value
function stringfunction() : String {
...
return String(val);
}
// Declare a function that takes and returns values
function parmfunction(a:String, b:String) : String {
...
return String(a + b);
}
// Use the Functions
voidfunction();
var s1:String = stringfunction();
var s2:String = parmfunction("Hello", "World!");
|
| C# |
VB |
JScript |
|
Attributs personnalisés
// Stand-alone attribute
[STAThread]
// Attribute with parameters
[DllImport("ADVAPI32.DLL")]
// Attribute with named parameters
[DllImport("KERNEL32.DLL", CharSet=CharSet.Auto)]
' Stand-alone attribute
' Attribute with parameters
' Attribute with named parameters
// Stand-alone attribute
STAThreadAttribute
// Attribute with parameters
DllImportAttribute("ADVAPI32.DLL")
// Attribute with named parameters
DllImportAttribute("KERNEL32.DLL", CharSet=CharSet.Auto)
|
| C# |
VB |
JScript |
|
Tableaux
String[] a = new String[3];
a[0] = "1";
a[1] = "2";
a[2] = "3";
String[][] a = new String[3][3];
a[0][0] = "1";
a[1][0] = "2";
a[2][0] = "3";
Dim a(2) As String
a(0) = "1"
a(1) = "2"
a(2) = "3"
Dim a(2,2) As String
a(0,0) = "1"
a(1,0) = "2"
a(2,0) = "3"
var a : String[] = new String[3];
a[0] = "1";
a[1] = "2";
a[2] = "3";
var a : String[][] = new String[3][3];
a[0][0] = "1";
a[1][0] = "2";
a[2][0] = "3";
|
| C# |
VB |
JScript |
|
Initialisation
String s = "Hello World";
int i = 1;
double[] a = { 3.00, 4.00, 5.00 };
Dim s As String = "Hello World"
Dim i As Integer = 1
Dim a() As Double = { 3.00, 4.00, 5.00 }
var s : String = "Hello World";
var i : int = 1;
var a : double[] = [ 3.00, 4.00, 5.00 ];
|
| C# |
VB |
JScript |
|
Instructions If
if (Request.QueryString != null) {
...
}
If Not (Request.QueryString = Nothing)
...
End If
if (Request.QueryString != null) {
...
}
|
| C# |
VB |
JScript |
|
Instructions Case
switch (FirstName) {
case "John" :
...
break;
case "Paul" :
...
break;
case "Ringo" :
...
break;
default:
...
break;
}
Select Case FirstName
Case "John"
...
Case "Paul"
...
Case "Ringo"
...
Case Else
...
End Select
switch (FirstName) {
case "John" :
...
break;
case "Paul" :
...
break;
case "Ringo" :
...
break;
default:
...
break;
}
|
| C# |
VB |
JScript |
|
Boucles For
for (int i=0; i<3; i++)
a(i) = "test";
Dim I As Integer
For I = 0 To 2
a(I) = "test"
Next
for (var i : int = 0; i < 3; i++)
a[i] = "test";
|
| C# |
VB |
JScript |
|
Boucles While
int i = 0;
while (i<3) {
Console.WriteLine(i.ToString());
i += 1;
}
Dim I As Integer
I = 0
Do While I < 3
Console.WriteLine(I.ToString())
I += 1
Loop
var i : int = 0;
while (i < 3) {
Console.WriteLine(i);
i += 1;
}
|
| C# |
VB |
JScript |
|
Gestion des exceptions
try {
// Code that throws exceptions
} catch(OverflowException e) {
// Catch a specific exception
} catch(Exception e) {
// Catch the generic exceptions
} finally {
// Execute some cleanup code
}
Try
' Code that throws exceptions
Catch E As OverflowException
' Catch a specific exception
Catch E As Exception
' Catch the generic exceptions
Finally
' Execute some cleanup code
End Try
try {
// Code that throws exceptions
} catch(e:OverflowException) {
// Catch a specific exception
} catch(e:Exception) {
// Catch the generic exceptions
} finally {
// Execute some cleanup code
}
|
| C# |
VB |
JScript |
|
Concaténation des chaînes
// Using Strings
String s1;
String s2 = "hello";
s2 += " world";
s1 = s2 + " !!!";
// Using StringBuilder class for performance
StringBuilder s3 = new StringBuilder();
s3.Append("hello");
s3.Append(" world");
s3.Append(" !!!");
' Using Strings
Dim s1, s2 As String
s2 = "hello"
s2 &= " world"
s1 = s2 & " !!!"
' Using StringBuilder class for performance
Dim s3 As New StringBuilder()
s3.Append("hello")
s3.Append(" world")
s3.Append(" !!!")
// Using Strings
var s1 : String;
var s2 : String = "hello";
s2 += " world";
s1 = s2 + " !!!";
// Using StringBuilder class for performance
var s3:StringBuilder = new StringBuilder();
s3.Append("hello");
s3.Append(" world");
s3.Append(" !!!");
|
| C# |
VB |
JScript |
|
Délégués de gestionnaire d'événements
void MyButton_Click(Object sender,
EventArgs E) {
...
}
Sub MyButton_Click(Sender As Object,
E As EventArgs)
...
End Sub
function MyButton_Click(sender : Object,
E : EventArgs) {
...
}
|
| C# |
VB |
JScript |
|
Déclaration d'événements
// Create a public event
public event EventHandler MyEvent;
// Create a method for firing the event
protected void OnMyEvent(EventArgs e) {
MyEvent(this, e);
}
' Create a public event
Public Event MyEvent(Sender as Object, E as EventArgs)
' Create a method for firing the event
Protected Sub OnMyEvent(E As EventArgs)
RaiseEvent MyEvent(Me, E)
End Sub
JScript does not support the creation of events. JScript can only
consume events by declaring event handler delegates and adding those
delegates to the events of another control.
|
| C# |
VB |
JScript |
|
Ajout et suppression de gestionnaires d'événements à des événements
Control.Change += new EventHandler(this.ChangeEventHandler);
Control.Change -= new EventHandler(this.ChangeEventHandler);
AddHandler Control.Change, AddressOf Me.ChangeEventHandler
RemoveHandler Control.Change, AddressOf Me.ChangeEventHandler
Control.Change += this.ChangeEventHandler;
Control.Change -= this.ChangeEventHandler;
|
| C# |
VB |
JScript |
|
Casting
MyObject obj = (MyObject)Session["Some Value"];
IMyObject iObj = obj;
Dim obj As MyObject
Dim iObj As IMyObject
obj = Session("Some Value")
iObj = CType(obj, IMyObject)
var obj : MyObject = MyObject(Session("Some Value"));
var iObj : IMyObject = obj;
|
| C# |
VB |
JScript |
|
Conversion
int i = 3;
String s = i.ToString();
double d = Double.Parse(s);
Dim i As Integer
Dim s As String
Dim d As Double
i = 3
s = i.ToString()
d = CDbl(s)
' See also CDbl(...), CStr(...), ...
var i : int = 3;
var s : String = i.ToString();
var d : double = Number(s);
|
| C# |
VB |
JScript |
|
Définition de classes avec héritage
using System;
namespace MySpace {
public class Foo : Bar {
int x;
public Foo() { x = 4; }
public void Add(int x) { this.x += x; }
override public int GetNum() { return x; }
}
}
// csc /out:librarycs.dll /t:library
// library.cs
Imports System
Namespace MySpace
Public Class Foo : Inherits Bar
Dim x As Integer
Public Sub New()
MyBase.New()
x = 4
End Sub
Public Sub Add(x As Integer)
Me.x = Me.x + x
End Sub
Overrides Public Function GetNum() As Integer
Return x
End Function
End Class
End Namespace
' vbc /out:libraryvb.dll /t:library
' library.vb
import System;
package MySpace {
class Foo extends Bar {
private var x : int;
function Foo() { x = 4; }
function Add(x : int) { this.x += x; }
override function GetNum() : int { return x; }
}
}
// jsc /out:libraryjs.dll library.js
|
| C# |
VB |
JScript |
|
Implémentation d'une interface
public class MyClass : IEnumerable {
...
IEnumerator IEnumerable.GetEnumerator() {
...
}
}
Public Class MyClass : Implements IEnumerable
...
Function IEnumerable_GetEnumerator() As IEnumerator Implements IEnumerable.GetEnumerator
...
End Function
End Class
public class MyClass implements IEnumerable {
...
function IEnumerable.GetEnumerator() : IEnumerator {
...
}
}
|
| C# |
VB |
JScript |
|
Définition de classes avec une méthode Main
using System;
public class ConsoleCS {
public ConsoleCS() {
Console.WriteLine("Object Created");
}
public static void Main (String[] args) {
Console.WriteLine("Hello World");
ConsoleCS ccs = new ConsoleCS();
}
}
// csc /out:consolecs.exe /t:exe console.cs
Imports System
Public Class ConsoleVB
Public Sub New()
MyBase.New()
Console.WriteLine("Object Created")
End Sub
Public Shared Sub Main()
Console.WriteLine("Hello World")
Dim cvb As New ConsoleVB
End Sub
End Class
' vbc /out:consolevb.exe /t:exe console.vb
class ConsoleCS {
function ConsoleCS() {
print("Object Created");
}
static function Main (args : String[]) {
print("Hello World");
var ccs : ConsoleCS = new ConsoleCS();
}
}
// jsc /out:consolejs.exe /exe console.js
|
| C# |
VB |
JScript |
|
Module standard
using System;
public class Module {
public static void Main (String[] args) {
Console.WriteLine("Hello World");
}
}
// csc /out:consolecs.exe /t:exe console.cs
Imports System
Public Module ConsoleVB
Public Sub Main()
Console.WriteLine("Hello World")
End Sub
End Module
' vbc /out:consolevb.exe /t:exe console.vb
print("Hello World");
// jsc /out:consolejs.exe /exe console.js
|
| C# |
VB |
JScript |
|