Title: 'NET and C
1.NET and C
- Peter Groenewegen
- Vrije Universiteit
- pgroene_at_few.vu.nl
2.NET and C
.NET
3The .NET Evolution
As big a transition as from DOS to Windows
4.NET
5Many Devices
Intel
Win32
universal runtime
Winforms
6Intermediate Language
- All languages are compiled to an intermediate
language
7Intermediate Language
Computer Language
Intel
PPC
6502
8Intermediate Language
Computer Language
libraries
Intermediate Language
runtime
Intel
PPC
6502
9Intermediate Language
C
Perl
Pascal
libraries
MSIL
runtime
Intel
PPC
6502
10Common Language Runtime
11.NET
12Web Services
DCOM
ASP
SOAP
ASP, Webforms
Biztalk
13Web Services
ASP
14Web Services
Webservice
Webservice
Webservice
Webservice
15Web Services
DCOM location transparency does not hold on the
web
CORBA
DCOM
CORBA implementations are not compatible
CORBA
DCOM
CORBA
DCOM
CORBA and DCOM are not compatible
CORBA
CORBA
16Web Services
- Functionality for development and management of
.NET services - Application Center 2000 Extreme reliability and
scalability - Internet Security Acceleration Server Firewall
and proxy server - Commerce Server analyzing site usage
- BizTalk Server 2000 Business process
orchestration Business-to-business document
interchange using XML - SQL Server 2000 Easy-to-use database systems
with native Extensible Markup Language (XML)
support - Host Integration Server 2000 Integration with
host systems and their data - Mobile Information 2001 Server Integration with
mobile devices
17.NET
18Simpler programming model
ComponentBased
Java
C
Cobol
Object Oriented
Haskell
Python
Perl
C
VB
19Simpler programming model
- Cross-language implementation inheritance
- Cross-language exception handling
- Cross-language debugging
- ASP pages in any language
- Client-side scripts in any language
- Languages include
- Perl, Python, COBOL, Pascal, Oberon, ...
- Haskell, Mercury, Eiffel,
- C, C,C,
20Versioning
Office 2000SP1
Leisure suit Larry
The programmer was aware of a bug and thought he
was smart to use the feature
X.dll Version 1949
X.dll Version 2001
Salary
Implementation relied on secret API removed in
new version
21What else...
- Free standards
- XML
- Performance
- Backwards compatibility
- Lots of code ready to use
- ...
22The .NET evolution
DOS ? Windows Windows ? .NET
23.NET and C
C
24C
Not MS alternative for Java
Language for programming.NET framework
Which is MS alternative forJVM ?
25Hello World
using System class Hello static void Main()
Console.WriteLine("Hello world")
DEMO
csc HelloWorld.cs
ildasm HelloWorld.exe
26C Program Structure
- Namespaces
- Types, namespaces
- Type declarations
- Classes, interfaces, structs, enums, delegates
- Members
- Fields,methods, constants, properties, events,
indexers, operators, constructors, destructors
package
inner classes
Java Beans
void finalize ()
27Boxing/Unboxing
- Boxing
- Allocates box, copies value into it
- Unboxing
- Checks type of box, copies value out
int i 123 object o i int j (int)o
123
i
System.Int32
o
123
123
j
28Value Types
- Struct type
- struct Point int x, y
- Simple type
- int i
- Enums type
- enum State Off, On
-
Everything is really an object
29Refrence types
- Interface type
- Delegate type
- Class type
- Array type
30Unsafe code
- Unsafe code
- Low-level code without leaving the box
- Enables unsafe casts, pointer arithmetic
- Declarative pinning
- fixed statement
- Basically inline C
31Unsafe code
class FileStream Stream int handle
public unsafe int Read(byte buffer, int index,
int count) int n 0 fixed (byte
p buffer) ReadFile(handle, p
index, count, n, null) return n
dllimport("kernel32", SetLastErrortrue)
static extern unsafe bool ReadFile(int
hFile, void lpBuffer, int nBytesToRead,
int nBytesRead, Overlapped lpOverlapped)
32Properties
- Properties are smart fields
- Natural syntax, accessors, inlining
class Borrel private int start public int
Start get return start
set if (value lt 1700 value gt 2400)
Console.WriteLine(Invalided time)
else start value
class Demo public static Main ()
Borrel b new Borrel() b.Start 1745
int start b.Start
33Indexers
- Indexers are smart arrays
- Can be overloaded
class Borrel private Dictionary participants
public Borrel() participants new
Dictionary() public bool thisString name
get return (participants.Contains(na
me) (bool)participantsname)
set participants.Add(name,value)
class Demo public static void Main ()
Borrel b new Borrel () bPeter true
Console.WriteLine(bBill)
34Dogs Demo
Thanks Roger and Eric Sessions!
using Systemnamespace VirtualDog public
class Dog public virtual void RollOver ()
Console.WriteLine("Scratch my tummy.")
Bark() public virtual void Bark
() Console.WriteLine("WOOF WOOF (Dog)")
import VirtualDogvar d new Dog()var m
new Mopje()d.RollOver()m.RollOver()
Imports SystemNamespace VirtualDog Public
Class Mopje Inherits Dog Public overrides
Sub Bark () Console.WriteLine("WOEF WOEF
(Mopje)") End Sub End ClassEnd Namespace
35What more?
- Versioning
- XML comments (Demo?)
- Conditional compilation
- ...
36References and more info
- C session by Tony Goodhew, TechEd 2000
- .NET session Eric Meijer
- C session Eric Meijer
- http//www.cs.vu.nl/pgroene/Vakken/Oop/oop.html
37Questions?
38Where do you what to go today?