This document provides an overview of .NET concepts using C# as an example language. It discusses the .NET core framework including the Common Language Runtime (CLR) and Just-In-Time (JIT) compiler. It also covers managed code, memory management, and the Common Type System (CTS). The document demonstrates C# code examples and discusses C# language features. It provides references for further reading on .NET and C# topics.
3. 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;
7. Alexandre Marreiros, 2011
.NET Core Framework
C++ C# VB.NET Perl J# F# …
Common Language Specification
.NET Framework Class Lybrary
Common Language Runtime
Operating System
8. Alexandre Marreiros, 2011
.NET Core Framework
ASP.NET
WP7
MVC3
ASP .NET
Web Forms
Windows
Silverlight WCF WWF EF
Web Services Forms
ADO .NET and XML
.NET Framework (Base Class Library)
Common Language Runtime
Operating System
9. Alexandre Marreiros, 2011
.NET Core Framework
Compiles
Code in DLL or Exe
C#, Vb.NET …
Managed Assembly
(IL)
*more about this at .NET IL assembler, Lindin
10. Alexandre Marreiros, 2011
.NET Core Framework
CLR SO
IL Code Assembly
Compile
Runing
Program
*more about this at .NET IL assembler, Lindin
11. Alexandre Marreiros, 2011
.NET Core Framework
Source Language Code
Compilation
Code Compiler Metadata
Native JIT Class Execution
Code Compiler Loader
*more about this at .NET IL assembler, Lindin
12. Alexandre Marreiros, 2011
.NET Core Framework
Source
code VB C# C++
Compiler Compiler Compiler
MSIL Assembly Assembly Assembly
Common Language Runtime JIT Compiler
Native Managed Managed Managed Unmanaged
code Code CLR
Code Code Code
Operating System Services
*more about this at .NET IL assembler, Lindin
13. Alexandre Marreiros, 2011
.NET Core Framework
Type Descriptions
Classes
Base classes
Implemented interfaces
Data members
Methods
Assembly Description
Name
Version
Culture
Other assemblies
Security Permissions
Exported Types
*more about this at .NET IL assembler, Lindin
15. Alexandre Marreiros, 2011
.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
16. Alexandre Marreiros, 2011
CLR
Operational Layer betwen the .NET app and
the operating system;
Manages runing code like a Virtual machine
Threading
Memory management
Jit Compiling
Code access security
Code can be verified to be granted as type safe
Role base security
17. 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
18. 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
19. 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
21. 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
23. Alexandre Marreiros, 2011
CTS – Value Types
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.
24. Alexandre Marreiros, 2011
CTS – Reference Types
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.
25. Alexandre Marreiros, 2011
CTS-Value Types & Ref. Types
Value Types ReferenceTypes
Demo Value Type vs reference type
Explanation for study proposes http://msdn.microsoft.com/en-us/magazine/cc301569.aspx
26. Alexandre Marreiros, 2011
CTS-Boxing and Unboxing
Demo Boxing and unboxing
*Explanation for study proposeshttp://www.codeproject.com/Articles/76153/6-important-NET-concepts-Stack-heap-Value-types-re
27. Alexandre Marreiros, 2011
CTS – Types of strutures
.NET defines diferent kinds of Object strutures:
Struct
Interface
Class
Abstract Class
Static Class
Enum
32. Alexandre Marreiros, 2011
CTS - Delegates
Delegates 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?
33. Alexandre Marreiros, 2011
CTS - Delegates
Declaration:
public delegate int Comparer(object obj1, object obj2);
Delegate event handler:
public static int CompareFirstNames(object name1, object name
2)
Demo Delegates
35. Alexandre Marreiros, 2011
CTS - Events
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
36. Alexandre Marreiros, 2011
CTS - Events
Declare delegate
public delegate void Startdelegate()
Declare Event
public event Startdelegate StartEvent;
Register as a EventListner
StartEvent += new Startdelegate(OnStartEvent);
39. Alexandre Marreiros, 2011
C#
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.
40. Alexandre Marreiros, 2011
C#
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
41. Alexandre Marreiros, 2011
C#
Compare operators
== Equal
!= Not equal
> Greater than
>= Greater than or equal to
< Less than
<= Less than or equal to
42. Alexandre Marreiros, 2011
C# - Decision Methods
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;
}