Tải bản đầy đủ (.ppt) (31 trang)

A brief introduction to Csharp

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (401.26 KB, 31 trang )


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:

Microsoft’s 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

/>•
Most interoperate with each other

C#

Language Created by Anders Hejlsberg (father of
Delphi)

The Derivation History can be viewed here:
/>•
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\
{version}\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

What’s the same

Syntactically Similar

Garbage Collected VM Environment

Immutable Strings

Exceptions (try / catch / finally)

Object as root

Single Inheritance model

Multi-Interface model

What’s Different & Relevant

Keywords


base vs. super

lock vs. synchronized

: vs. extends & implements

is vs. instanceof

Exceptions

No throws keyword

See
/>032103.aspx

What’s 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++)

What’s 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);

What’s 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();

What’s 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”);

What’s 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!

What’s 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

What’s 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

What’s 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…

What’s 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

What’s 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

What’s 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

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×