Transcript Document

Platforms and tools for Web
Services and Mobile Applications
Introduction to C#
Bent Thomsen
Aalborg University
3rd and 4th of June 2004
Introduction to C#
What is C#
Java like language from Microsoft


Object Orientated Language
Derived from C++
Has the power of C++ and the simplicity of
Visual Basic
Part of Microsoft .NET framework
If you are serious about .Net you need to
learn C#
Introduction to C#
What is C# (con’t)
Cross Platform (or not)

Can only run on Windows OS
Cross Language

Able to use objects created in C++.NET and
Visual Basic.NET and all the other .NET
Languages
Introduction to C#
Getting started with C#
• What do you need?
– Windows OS Machine.
• Windows 2000, XP or 2003
– Microsoft .NET SDK
• www.microsoft.com
– Text Editor
• Save files with a .cs extension
Introduction to C#
Getting started with C# (con’t)
• What about a development environment?
– Visual C++ from Visual Studio 6.0
• Requires registry tweaking
– Visual Studio.NET
– 3rd Party software
• Emacs and XEmacs
• Borland
C# vs. The World
How does C# work?
• Compilation Process
.cs
Source Code
CLS
Compliant
Languages
csc
.exe
.dll
Microsoft
Intermediate
Language
(MSIL)
JIT
CPU
code
C# vs. The World
How does C# work? (con’t)
• Common Language Runtime (CLR)
– Provides an execution engine for developers code
•
•
•
•
•
•
Code management (loading and execution)
Memory management
Garbage Collection
Verification of type safety
Enforcement of code access security
Interoperation between managed code, COM objects,
and pre-existing DLLs
C# vs. The World
The Language (con’t)
• Hello world
using System;
class HelloWorld {
public static void Main() {
Console.WriteLine(“Hello World!");
}
}
>csc HelloWorld.cs
>Hello World!
C# vs. The World
The Language (con’t)
• Properties
public class button {
private string caption;
public string Caption {
get {
return caption;
}
set {
if (value != null)
caption = value;
}
}
}
button b = new button();
b.Caption = “abc”
string s = b.Caption;
C# vs. The World
The Language (con’t)
• Parameter Passing


By Value
By Reference
public static void Swap(ref int x, ref int y) {
int z = x;
x = y;
y = z;
}
C# vs. The World
The Language (con’t)
• Pointers
– Not recommended for use
public struct Node {
public int value;
public unsafe Node* next;
}
public unsafe class A {
. . .
public class A {
public unsafe void B (char *p) {
. . .
C# vs. The World
The Language (con’t)
• Boxing / Unboxing
– Allows value types to be converted to and from
objects automatically
ArrayList list = new ArrayList();
int z = 100;
list.Add(1);
list.Add(13.12);
list.Add(z); //integers are automatically boxed
//when they are added to the list
C# vs. The World
The Language (con’t)
• Delegates
– Basically a type-safe object orientated function
pointer
delegate void simpleDelegate();
Class Test {
static void F() {
System.Console.Writeline(“Test.F”);
}
static void main (){
simpleDelegate d = new simpleDelegate(F);
d();
}
}
C# vs. The World
The Language (con’t)
• Delegates (con’t)
void multiCall (simpleDelegate d, int count) {
for (int i=0; i<count; i++){
d();
}
C# vs. The World
The Language (con’t)
• Versioning
v.1
v.2
Class A
Class A
x();
Class B
y();
x();
y();
Class B
y();
Which one to use?
C# vs. The World
The Language (con’t)
• Versioning
– C# requires developers to clearly state their intent
• Use of the keyword ‘new’ and ‘override’
Class Derived B {
new public void x () {
. . .
Class Derived B {
public override void x () {
. . .
C# vs. The World
The Language (con’t)
• Libraries


Few core libraries
Uses the libraries from the .NET framework

Threading, Collection, XML, ADO+, ASP+, GDI+ &
WinForms libraries
C# vs. The World
Comparison of C# syntax with Java and C++
• Similarities







Single rooted class hierarchy
Similar keywords (derived from C++)
Virtual Machine & IL/CLR
Garbage Collection
No global methods
Interface, no Multiple inheritance
Exception handling
C# vs. The World
Comparison of C# syntax with Java and C++
• Differences



Syntax and Keywords not from C++
Properties, Delegates, Boxing, Pointers,
Libraries, etc.
Preprocessor Directives
C# vs. The World
C# Advantages
• Easy to learn, similar to both C++ and JAVA
• Can use existing pool of C++ and Visual Basic
programmers.
• Can use components from .NET
• Syntactical Sugar
C# vs. The World
C# Disadvantages
•
•
•
•
•
Only runs on Windows machines
Limited choice in development environment
Locked into Microsoft compatibility
Not extensively tested
Not enough maturity time