.Net & c#
-
Upload
alexandre-marreiros -
Category
Technology
-
view
731 -
download
5
description
Transcript of .Net & c#
.NET VIA C# introduction to .Net concepts using c#
Alexandre Marreiros, 2011
Agenda Introduction .NET core framework CLR JIT Compiler Managed Code Memmory Management .NET & C# CTS C# language
Alexandre Marreiros, 2011
Introduction .NET is a framework that provides a big set of
cross plataform technologies
A program written in .NET can run in any system that has a implementation of .NET runtime;
Includes a virtual machine runtime;
Provides a programing API, and a unified language independent development framework;
Alexandre Marreiros, 2011
.NET Core FrameworkAlexandre Marreiros, 2011
Common Language Runtime
Framework Class Library
.NET Core FrameworkAlexandre Marreiros, 2011
Operating System
Common Language Runtime
.NET Core FrameworkAlexandre Marreiros, 2011
Operating System
Common Language Runtime
.NET Framework
.NET Core FrameworkAlexandre Marreiros, 2011
Operating System
Common Language Runtime
.NET Framework Class Lybrary
C++ C# VB.NET Perl J# F# …
Common Language Specification
.NET Core FrameworkAlexandre Marreiros, 2011
Operating System
Common Language Runtime
.NET Framework (Base Class Library)
ADO .NET and XML
ASP .NETWeb Forms Web Services
WindowsForms Silverlight
ASP.NET MVC3
WCF WWF EF
WP7
.NET Core FrameworkAlexandre Marreiros, 2011
Code in C#, Vb.NET …
Compiles
DLL or Exe
Managed Assembly
(IL)
*more about this at .NET IL assembler, Lindin
.NET Core FrameworkAlexandre Marreiros, 2011
CLR SO
Runing Program
IL Code Assembly
Compile
*more about this at .NET IL assembler, Lindin
.NET Core FrameworkAlexandre Marreiros, 2011
Compilation
ExecutionJIT Compiler
NativeCode
Code
Metadata
Source Code
Language Compiler
Class Loader
*more about this at .NET IL assembler, Lindin
.NET Core FrameworkAlexandre Marreiros, 2011
CLR
VBSource code
Compiler
C++C#
Assembly AssemblyAssemblyMSIL
Common Language Runtime JIT Compiler
Compiler Compiler
Nativecode
ManagedCode
ManagedCode
ManagedCode
UnmanagedCode
Operating System Services
*more about this at .NET IL assembler, Lindin
.NET Core FrameworkAlexandre Marreiros, 2011
*more about this at .NET IL assembler, Lindin
Type Descriptions
NameVersionCulture
Assembly Description
Other assembliesSecurity PermissionsExported Types
ClassesBase classesImplemented interfacesData membersMethods
.NET Core FrameworkAlexandre Marreiros, 2011
*more about this at .NET IL assembler, Lindin
Assembly
Bin folder So GAC
.NET Core Framework
IL (MSIL or CIL) – Intermediate Language It is low-level (machine) language, like Assembler, but
is Object-oriented
CTS is a rich type system built into the CLR Implements various types
And operations on those types
CLS is a set of specifications that all languages and libraries need to follow This will ensure interoperability between languages
Alexandre Marreiros, 2011
CLR Operational Layer betwen the .NET app and
the operating system; Manages runing code like a Virtual machine
ThreadingMemory managementJit Compiling
Code access securityCode can be verified to be granted as type safeRole base security
Alexandre Marreiros, 2011
JIT Compiler
Based on the CLR Class loader job, this entity is responsible for transforming IL code in to native code;
Compilation ondemand when a method is called
Alexandre Marreiros, 2011
Managed Code Code that targets CLR is named as Managed
Code Object oriented Type-Safe Cross Language integration Exception Handling Verioning Represented in MSIL
Alexandre Marreiros, 2011
Memmory Management
The CLR manages memory for managed code
All allocations of objects and buffers made from a Managed Heap (keyword new)
Unused objects and buffers are cleaned up automatically through Garbage Collection
*more about this at CLR via C#, Jeffrey Ritcher
Alexandre Marreiros, 2011
.NET & C#Alexandre Marreiros, 2011
&
CTS
Any .NET language have the same datatypes, that are based in CTS rules
At Binary Level all modules and elements writen in a .NET language are compatible
Alexandre Marreiros, 2011
CTSAlexandre Marreiros, 2011
.Net Types
Value Type ReferenceType
CTS – Value TypesAlexandre Marreiros, 2011
Most programming languages provide built-in data types, such as integers and floating-point numbers that are copied when they are passed as arguments (that is, they are passed by value). In the .NET Framework, these are called value type.
ValueTypes are always passed by copy between methods and in terms of memory management they work based on a stack philosophy.
CTS – Reference TypesAlexandre Marreiros, 2011
Only acesseble by Reference, Are used as na overload to Object Types, Their base class are always the Object Type.
Reference types store a reference to the value’s memory address and are allocated on the heap. Reference types can be self-describing types, pointer types, or interface types. The data type can be determined from values of self-describing types. Self-describing types are further split into arrays and class types. The class types are user-defined classes, boxed value types, and delegates.
Value Types
Demo Value Type vs reference type
CTS-Value Types & Ref. Types
Alexandre Marreiros, 2011
*Explanation for study proposes http://msdn.microsoft.com/en-us/magazine/cc301569.aspx
ReferenceTypes
Demo Boxing and unboxing
CTS-Boxing and Unboxing
Alexandre Marreiros, 2011
*Explanation for study proposeshttp://www.codeproject.com/Articles/76153/6-important-NET-concepts-Stack-heap-Value-types-re
CTS – Types of strutures .NET defines diferent kinds of Object strutures:
Struct
Interface
Class
Abstract Class
Static Class
Enum
Alexandre Marreiros, 2011
CTS – objects inner concepts Field
Method
Attribute
Propertie
Alexandre Marreiros, 2011
CTS - VisibilityAlexandre Marreiros, 2011
Assembly
Private
Protected
Public
CTS - InheritanceAlexandre Marreiros, 2011
Class
ClassInterfaces
Just 1 class inheritance
Many Class Inheritance
Demo first Console app
Alexandre Marreiros, 2011
CTS - DelegatesDelegates in .NET languages such as C# and are akin to function pointers in C++. I have found that simply being aware of this pseudonym is extremely helpful in understanding delegates. The term helps us to understand that delegates allow a developer to provide a pointer to a method/function/sub etc.
But when would a developer find this to be useful?
Alexandre Marreiros, 2011
CTS - Delegates
Declaration:public delegate int Comparer(object obj1, object obj2);
Delegate event handler:
public static int CompareFirstNames(object name1, object name2)
Alexandre Marreiros, 2011
Demo Delegates
CTS - EventsAlexandre Marreiros, 2011
CTS - EventsAlexandre Marreiros, 2011
A C# event is a class member that is activated whenever the event it was designed for occurs. I like to use the term "fires" when the event is activated. Anyone interested in the event can register and be notified as soon as the event fires. At the time an event fires, registered methods will be invoked.
Events and delegates work hand-in-hand to provide a program's functionality. It starts with a class that declares an event. Any class, including the same class that the event is declared in, may register one of its methods for the event. This occurs through a delegate, which specifies the signature of the method that is registered for the event. The delegate may be one of the pre-defined .NET delegates or one you declare yourself. Whichever is appropriate, you assign the delegate to the event, which effectively registers the method that will be called when theevent fires
CTS - EventsAlexandre Marreiros, 2011
Declare delegatepublic delegate void Startdelegate()
Declare Event
public event Startdelegate StartEvent;
Register as a EventListner
StartEvent += new Startdelegate(OnStartEvent);
CTS - EventsAlexandre Marreiros, 2011
Demo Event
C#Alexandre Marreiros, 2011
Now that you already now the basics of .Net Let’s explore a litle bit c# language
C#Alexandre Marreiros, 2011
Simple, modern, general-purpose, object-oriented programming language.
Strong type checking, array bounds checking, detection of attempts to use un-initialized variables.
Automatic garbage collection.
C#Alexandre Marreiros, 2011
Support for internationalization.
Suitable for writing applications for both hosted and embedded systems.
Low memory and processing power requirements.
There are no global variables.
Code is compiled as managed
C#Alexandre Marreiros, 2011
Compare operators
== Equal
!= Not equal
> Greater than
>= Greater than or equal to
< Less than
<= Less than or equal to
C# - Decision MethodsAlexandre Marreiros, 2011
if( cond ){}else{}
switch(s){ case "1": Console.WriteLine("You entered 1"); break; case "2": Console.WriteLine("You entered 2"); break; case "3": Console.WriteLine("You entered 3"); break; default: Console.WriteLine("You entered some other number"); break;}
C#-LoopsAlexandre Marreiros, 2011
for (x = 1; x <= 5; x++){}
while (y <= 5){}
Do{} while (y<=5);
Foreach(object o in array);
C#Alexandre Marreiros, 2011
Other concepts hands on and final considerations
Questions?
References Books:
CLR via c#, Richter .Net fundamentals, Don Box .Net IL assembler, Lindin
Visit following web sites: .NET Framework Home Site –
http://msdn.microsoft.com/netframework/ The Microsoft .NET Framework Community –
http://www.gotdotnet.com/ Code Project – http://www.codeproject.net/ Mono – Open Source .NET Framework – http://www.go-mono.org/ Rotor – Shared Source .NET CLI – http://
msdn.microsoft.com/net/sscli/
Read the news groups: news://msnews.microsoft.com/microsoft.public.dotnet.framework
Alexandre Marreiros, 2011