Sie sind auf Seite 1von 31

A Brief Introduction to C#

David Buksbaum

Agenda
Goals Background Information C# - Up and Running Quick Comparison to Java Networking Namespaces References

Goals
Provide enough information to allow you to follow the code samples Highlight key differences with Java Tell you where you can get the compilers Tell you where to go for more details on C# Tell you where to go for more detailed comparisons with Java Not to debate which is better, more important, faster, slower, or looks better in emacs

Quick Glossary
BCL Base Class Library CLR Common Language Runtime GUI Graphic User Interface MSIL Microsoft Intermediate Language MS Microsoft SCM Service Control Manager SOA Service Oriented Architecture

.NET
.NET is:
Microsofts Platform for Windows Development CLR the Virtual Machine that runs MSIL aka MS Byte Code BCL aka .NET Framework A set of compilers that can generate MSIL C#, Visual Basic, C++, Java (the MS flavor)

There are 50+ languages that generate MSIL


http://www.dotnetpowered.com/languages.aspx

Most interoperate with each other

C#
Language Created by Anders Hejlsberg (father of Delphi) The Derivation History can be viewed here: http://www.levenez.com/lang/history.html Principle Influencing Languages:
C++ Delphi Java

Designed to be an optimal Windows development language

C# - Up and Running
A Simple C# Application Application Types Compiler & Run Time

A Sample C# Application

Application Types
Console Application
Has standard streams (out, in, err) GUI can be added manually

Windows Application
GUI based No standard streams (out, in, err) Main thread is shared by the GUI message pump & your code

Service
No standard streams (out, in, err) Main thread is commandeered by the SCM No GUI

Compiler Options from MS


SDK contains the command line compiler (C:\WINDOWS\Microsoft.NET\Framework\{vers ion}\csc.exe)
{version} looks like v2.0.50727

Express Edition Free IDE to work with Visual C#


Reduced runctionality version of Visual Studio

Visual Studio The full development system


Optimizations, Data Access, Multi-Language, etc $$$

Options Beyond MS
Mono
Open source development SDK for .NET Windows, Linux, Mac OS X, Solaris, Unix Sponsored by Novell
Food for thought: Suse + KDE + Mono = ???

Sharp Develop
Open source IDE that uses .NET SDK or Mono Written in C#

Quick Comparison to Java


Whats the same
Syntactically Similar Garbage Collected VM Environment Immutable Strings Exceptions (try / catch / finally) Object as root Single Inheritance model Multi-Interface model

Whats Different & Relevant


Keywords
base vs. super lock vs. synchronized : vs. extends & implements is vs. instanceof

Exceptions
No throws keyword See
http://msdn.microsoft.com/chats/transcripts/vstudio/vstudio_ 032103.aspx

Whats Different & Relevant cont.


Namespaces
namespace vs. package using vs. import
No wildcard using
using namespace; // brings it all in non-recursive

Type Aliasing
using newtypename = namespace.type;

Directory structure != namespace hierarchy (as in C++)

Whats Different & Relevant cont.


Properties
get, set and get/set
public string MyProperty { get { return(_text); } set { _text = value; } }

Delegates
Type safe function pointers To create
public delegate bool CompareHandler(object left, object right);

To use
CompareHandler ch = new CompareHandler(myMethod); bool retval = ch(obj1, obj2);

Whats Different & Relevant cont.


Enumerations
public enum Protocol { UDP, TCP }; public enum Direction { Up = 0, Down = 1, Left = 2, Right = 4 }; Direction d = Direction.Down; int x = (int)d; Direction d = Direction.Parse(Up); string s = d.ToString();

Whats Different & Relevant cont.


Value Types
Primitives are the same plus
Unsigned values
ubyte, ushort, uint, ulong

Careful: byte in java is sbyte in C# Class objects to wrap primitives


Int32 x = new Int32(4); int x = Int32.Parse(4);

Whats Different & Relevant cont.


Structures
Stack based elements, not heap based Value type struct packet { int code; string data; };

Boxing / Unboxing
Conversion between value type and reference type packet p = new packet(); object o = (object)p; // boxed packet p2 = (packet)o; // unboxed Significant performance cost!

Whats Different & Relevant cont.


Cross Platform Support
.NET from Microsoft is not cross platform It is for Windows only Mono can run cross platform, but is unproven in large production environments MS is currently resisting moving cross platform The future is not set

Whats not Relevant, but Useful


App Domains
One or more per process Represents a VM hosted logical process Communications between App Domains requires marshalling (IPC)

Assemblies
Similar to Java JAR files Physically they are EXE and/or DLL files

Whats not Relevant, but Useful


Attributes
Meta tags that provide run time information for a type, NOT the instance Example: [Serializable] public class foo { int x; }; [Serializable] is converted into the class SerializableAttribute Attributes can be retrieved at run time Many framework sub-systems use attributes
Serialization, XML, Interop, Conditional, Obsolete, etc

Whats not Relevant, but Useful


Polymorphism
Methods default to being non-virtual To be virtual it must be defined as virtual
eg: public virtual int Add(int x, int y);

To override a virtual method, you use the override keyword


eg. public override int Add(int x, int y);

Methods not marked virtual are equivalent to Java final methods Methods can be marked with new to break the virtual chain

Whats not Relevant, but Useful


Interop
Access to native code through attributes [DllImport(user32.dll)] static int GetSystemMetrics(int); The DllImport attribute informs the compiler and runtime that the tagged method is inside a native DLL. Options such as the actual name in the DLL, marshalling strategies, calling convention, and more can be set using the attribute

Whats not Relevant, but Useful


.NET 2.0 out now
Generics Partial Types Anonymous Methods Nullable Types

.Net 3.0
Its all about data
Tuples & Query constructs public void Linq1() { int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; var lowNums = from n in numbers where n < 5 select n; Console.WriteLine("Numbers < 5:"); foreach (var x in lowNums) { Console.WriteLine(x); } } Result Numbers < 5: 4 1 3 2 0

Networking Namespaces
System.Messaging
Functionality for MSMQ

System.Net
Provides access to higher protocols (FTP, HTTP, DNS)

System.Net.Information
Network information classes providing statistics, interface information, and ping

System.Net.Sockets
Light weight wrappers around TCP and UDP sockets

System.Runtime.Remoting
Provides functionality for high level distributed programming (similar to RMI)

System.Web
Provides high level access to HTTP

Future of .NET Networking


Windows Communications Foundation
Formally code named Indigo Designed to make SOA an integral part of Windows Tight coupling with .NET designs For more information
http://msdn.microsoft.com/windowsvista/default.aspx?pull =/library/en-us/dnlong/html/wcfarch.asp

References

Links

.NET SDK
http://www.microsoft.com/downloads/details.aspx?FamilyI D=fe6f2099-b7b4-4f47-a244c96d69c35dec&DisplayLang=en

MS Visual Studio C# Express Edition


http://msdn.microsoft.com/vstudio/express/visualcsharp/

MS Visual Studio
http://msdn.microsoft.com/vstudio/

Links cont.
MONO
http://www.mono-project.com/Main_Page

Sharp Develop
http://www.icsharpcode.net/OpenSource/SD/

Links cont.

C# Links
http://msdn1.microsoft.com/en-us/default.aspx http://gotdotnet.com/ http://www.c-sharpcorner.com/ http://msdn.microsoft.com/community/codezone/ http://en.wikipedia.org/wiki/C_Sharp_programming_langua ge

Online Tutorials
http://www.csharp-station.com/Tutorial.aspx http://www.c-sharpcorner.com/Tutorials.asp

Books
Programming C#, Fourth Edition by Jesse Liberty (http://search.barnesandnoble.com/booksearch/isbnInquiry.a sp?z=y&isbn=0596006993&itm=2) CLR Via C#: Applied Microsoft .Net Framework 2.0 Programming by Jeffrey Richter (http://search.barnesandnoble.com/booksearch/isbnInquiry.a
sp?z=y&isbn=0735621632&itm=3)

Das könnte Ihnen auch gefallen