Introduction to C#  Enterprise Application  Combines High productivity of RAD & raw power of C.

Slides:



Advertisements
Similar presentations
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 12 Introduction to ASP.NET.
Advertisements

Introduction to C# Anders Hejlsberg Distinguished Engineer Developer Division Microsoft Corporation.
ASP.NET (Active Server Page) SNU OOPSLA Lab. October 2005.
CS 4800 By Brandon Andrews.  Specifications  Goals  Applications  Design Steps  Testing.
1.NET and C# Peter Groenewegen Vrije Universiteit
AP 08/01 Component Programming with C# and.NET 1st Class Component Support Robust and Versionable Creating and using attributes API integration –DLL import.
C#.NET C# language. C# A modern, general-purpose object-oriented language Part of the.NET family of languages ECMA standard Based on C and C++
Introduction to C# Raimonds Rudmanis Senior Consultant Microsoft Baltic.
C#/.NET Jacob Lewallen. C# vs.NET.NET is a platform. Many languages compile to.NET: –VB.NET –Python.NET –Managed C++ –C#
C# Language Design Peter Hallam Software Design Engineer C# Compiler Microsoft Corporation.
Microsoft.NET Programming platform for the next decade Anders Hejlsberg Distinguished Engineer Developer Division.
ASP.NET Programming with C# and SQL Server First Edition
Peter Juszczyk CS 492/493 - ISGS. // Is this C# or Java? class TestApp { static void Main() { int counter = 0; counter++; } } The answer is C# - In C#
Platforms and tools for Web Services and Mobile Applications Introduction to C# Bent Thomsen Aalborg University 3rd and 4th of June 2004.
Differences between C# and C++ Dr. Catherine Stringfellow Dr. Stewart Carpenter.
Programming in C# Language Overview
OOP Languages: Java vs C++
Introduction to Java Appendix A. Appendix A: Introduction to Java2 Chapter Objectives To understand the essentials of object-oriented programming in Java.
Introduction to .Net Framework
Object Oriented Programming in C# Keith Pijanowski.Net Developer Evangelist Microsoft Corporation.
1.  C# is the first “component oriented” language in the C/C++ family  Everything is an object  Component concepts are first class:  Properties, methods,
Java2C# Antonio Cisternino Part II. Outline Array types Enum types Value types  differences from classes  boxing and unboxing Delegate types  Base.
MESDA Conference 2002 MESDA Annual Conference 2002 Software Development Track Java vs. C#
Distributed Systems (236351) Tutorial 1 - Getting Started with Visual Studio C#.NET.
Managed C++. Objectives Overview to Visual C++.NET Concepts and architecture Developing with Managed Extensions for C++ Use cases Managed C++, Visual.
.NET Framework Danish Sami UG Lead.NetFoundry
Algorithm Programming Bar-Ilan University תשס"ח by Moshe Fresko.
Introduction to C# C# is - elegant, type-safe, object oriented language enabling to build applications that run on the.NET framework - types of applications.
C#C# Introduction CS3260 Dennis A. Fairclough Version 1.0 Introduction CS3260 Dennis A. Fairclough Version 1.0.
Introduction to C # – Part 2 Stephen Turner Software Design Engineer Microsoft UK.
Component Programming with C# and.NET. C# components The most commonly used components in.NET are the visual controls that you add to Windows Forms such.
Introduction to C # – Part 1 Stephen Turner Software Design Engineer Microsoft UK.
Introduction to C#. C# – The Big Ideas The first component oriented language in the C/C++ family Everything.
ILM Proprietary and Confidential -
Introducing ASP.NET 2.0. Internet Technologies WWW Architecture Web Server Client Server Request Response Network HTTP TCP/IP PC/Mac/Unix + Browser (IE,
C# EMILEE KING. HISTORY OF C# In the late 1990’s Microsoft recognized the need to be able to develop applications that can run on multiple operating system.
C# Classes and Inheritance CNS 3260 C#.NET Software Development.
Introduction to C# Ali vatankhah. C# – The Big Ideas The first component oriented language in the C/C++ family The first component oriented language in.
Harsh Jegadeesan (CSD) Introduction to C#. Harsh Jegadeesan (CSD) C# – The Big Ideas The first component oriented language in the C/C++ family Everything.
PRIOR TO WEB SERVICES THE OTHER TECHNOLOGIES ARE:.
Bill Campbell, UMB Microsoft's.NET C# and The Common Language Runtime.
ASP.NET (Active Server Page) SNU OOPSLA Lab. October 2005.
1 9/6/05CS360 Windows Programming CS360 Windows Programming.
Introduction to C# Adapted from : Anders Hejlsberg, Microsoft CSCE 5013: Hot Topics in Mobile and Pervasive Computing Nilanjan Banerjee University of Arkansas.
Object Oriented Software Development 4. C# data types, objects and references.
Session 1 C# Basics.
Introduction to C# By: Abir Ghattas Michel Barakat.
Classes Single inheritance Single inheritance Multiple interface implementation Multiple interface implementation Class members Class members  Constants,
.NET Mobile Application Development XML Web Services.
INTRODUCTION CHAPTER #1 Visual Basic.NET. VB.Net General features It is an object oriented language  In the past VB had objects but focus was not placed.
Introduction to C# Anders Hejlsberg Distinguished Engineer Developer Division Microsoft Corporation.
Session 02 Module 3: Statements and Operators Module 4: Programming constructs Module 5: Arrays.
Introduction to Web Application
C# Fundamentals An Introduction. Before we begin How to get started writing C# – Quick tour of the dev. Environment – The current C# version is 5.0 –
METADATA IN.NET Presented By Sukumar Manduva. INTRODUCTION  What is Metadata ? Metadata is a binary information which contains the complete description.
Java and C# - Some Commonalities Compile into machine-independent, language- independent code which runs in a managed execution environment Garbage Collection.
INTRODUCTION BEGINNING C#. C# AND THE.NET RUNTIME AND LIBRARIES The C# compiler compiles and convert C# programs. NET Common Language Runtime (CLR) executes.
C# – The Big Ideas The first component oriented language in the C/C++ family Everything really is an object Next generation robust and durable software.
The 100% Inspiration Tour.
Basic Introduction to C#
Module 5: Common Type System
Microsoft .NET 3. Language Innovations Pan Wuming 2017.
Structs.
CS360 Windows Programming
Introduction to C# AKEEL AHMED.
.NET and .NET Core 5.2 Type Operations Pan Wuming 2016.
The essence of C# and. Net adopted from Anders Hejlsberg (
Paul Stubbs MCSD, MCSE 4.0, MCP+I, MCT, MCAD .Net
.NET Framework Design Goals
C# – The Big Ideas The first component oriented language in the C/C++ family The first component oriented language in the C/C++ family Everything really.
Presentation transcript:

Introduction to C#  Enterprise Application  Combines High productivity of RAD & raw power of C

1 - The.NET Framework  an integral Windows component  supports building and running the next generation of applications and XML Web services

Designed to fulfill the following objectives:  To provide a consistent object-oriented programming environment  To provide a code-execution environment  minimizes software deployment and versioning conflicts.  promotes safe execution of code  eliminates the performance problems of scripted or interpreted environments.  To make the developer experience consistent across widely varying types of applications  To build all communication on industry standards

has two main components :  Common Language Runtime (CLR) .NET Framework class library

.NET Framework in context

The.NET Framework Common Language Runtime  Simplified development  XCOPY deployment  Scalability  Rich Web clients and safe Web hosting  Potentially multi-platform  Multiple languages (cross inheritance)  Increases productivity  Robust and secure execution environment

The.NET Framework Common Language Runtime  manages memory, thread execution, code execution, code safety verification, compilation, and other system services  enforces code access security  enforces code robustness by implementing a strict type- and-code-verification infrastructure called the common type system (CTS).  eliminates many common software issues  Example : automatically handles object layout & references that resolves memory leaks and invalid memory references.  accelerates developer productivity (Multiple languages)  designed for the software of the future, it also supports software of today and yesterday  designed to enhance performance

The.NET Framework.NET Framework Services Base Class Library Common Language Specification Common Language Runtime ADO.NET: Data and XML VBC++C# Visual Studio.NET ASP.NET: Web Services and Web Forms JScript… Windows Forms

Relationship to the Common Type System and the Common Language Specification  CTS :  The Common Type System is the model that defines the rules the common language runtime follows when declaring, using, and managing types.  The common type system establishes a framework that enables cross-language integration, type safety, and high- performance code execution.

 CLS :  CLS is a sort of lingua franca that ensures seamless interoperability between CLS-compliant languages and class libraries  The Common Language Specification (CLS) defines a set of programmatically verifiable rules that governs the interoperation of types authored in different programming languages  Targeting the CLS is an excellent way to ensure cross-language interoperation  Managed class library designers can use the CLS to guarantee that their APIs are callable from a wide range of programming languages Relationship to the Common Type System and the Common Language Specification

The.NET Framework.NET Framework Services  ASP.NET  Separation of code and presentation  Compiled  Web Forms  Web Services  Windows ® Forms  Framework for building rich clients  ADO.NET, Evolution of ADO  New objects (e.g., DataSets)  XML support throughout

Agenda  Hello World  The.NET Framework  Design Goals of C#  Language Features

Design Goals of C# The Big Ideas  The first component oriented language in the C/C++ family  Everything really is an object  Next generation robust and durable software  Preserving your investment

Design Goals of C# A Component Oriented Language  C# is the first “Component Oriented” language in the C/C++ family  Component concepts are first class  Properties, methods, events  Design-time and run-time attributes  Integrated documentation using XML  Enables one-stop programming  No header files, IDL, etc.  Can be embedded in ASP pages

Design Goals of C# Everything Really Is an Object  Traditional views  C++, Java ™ : Primitive types are “magic” and do not interoperate with objects  Smalltalk, Lisp: Primitive types are objects, but at great performance cost  C# unifies with no performance cost  Deep simplicity throughout system  Improved extensibility and reusability  New primitive types: Decimal, SQL…  Collections, etc., work for all types

Design Goals of C# Robust and Durable Software  Garbage collection  No memory leaks and stray pointers  Exceptions  Error handling is not an afterthought  Type-safety  No uninitialized variables, unsafe casts  Versioning  Pervasive versioning considerations in all aspects of language design

Design Goals of C# Preserving Your Investment  C++ Heritage  Namespaces, pointers (in unsafe code), unsigned types, etc.  No unnecessary sacrifices  Interoperability  What software is increasingly about  C# talks to XML, SOAP, COM, DLLs, and any.NET Framework language  Millions of lines of C# code in.NET  Short learning curve  Increased productivity

3 - Language Features

Language Features Program Structure  Namespaces  Contain types and other namespaces  Type declarations  Classes, structs, interfaces, enums, and delegates  Members  Constants, fields, methods, properties, indexers, events, operators, constructors, destructors  Organization  No header files, code written “in-line”  No declaration order dependence

Language Features Program Structure using System; namespace System.Collections { public class Stack public class Stack { Entry top; Entry top; public void Push(object data) { public void Push(object data) { top = new Entry(top, data); top = new Entry(top, data); } public object Pop() { public object Pop() { if (top == null) throw new InvalidOperationException(); if (top == null) throw new InvalidOperationException(); object result = top.data; object result = top.data; top = top.next; top = top.next; return result; return result; } }}

Language Features Type System  Value types  Directly contain data  Cannot be null  Reference types  Contain references to objects  May be null int i = 123; string s = "Hello world"; 123 i s "Hello world"

Language Features Type System  Value types  Primitives int i;  Enumsenum State { Off, On }  Structsstruct Point { int x, y; }  Reference types  Classesclass Foo: Bar, IFoo {...}  Interfaces interface IFoo: IBar {...}  Arraysstring[] a = new string[10];  Delegatesdelegate void Empty();

Language Features Predefined Types  C# predefined types  Referenceobject, string  Signedsbyte, short, int, long  Unsigned byte, ushort, uint, ulong  Characterchar  Floating-pointfloat, double, decimal  Logicalbool  Predefined types are simply aliases for system-provided types  For example, int = System.Int32

Language Features Classes  Single inheritance  Multiple interface implementation  Class members  Constants, fields, methods, properties, indexers, events, operators, constructors, destructors  Static and instance members  Nested types  Member access  Public, protected, internal, private

Language Features Structs  Like classes, except  Stored in-line, not heap allocated  Assignment copies data, not reference  No inheritance  Ideal for light weight objects  Complex, point, rectangle, color  int, float, double, etc., are all structs  Benefits  No heap allocation, less GC pressure  More efficient use of memory

Language Features Classes and Structs class CPoint { int x, y;... } class CPoint { int x, y;... } struct SPoint { int x, y;... } CPoint cp = new CPoint(10, 20); SPoint sp = new SPoint(10, 20); sp cp CPoint

Language Features Interfaces  Multiple inheritance  Can contain methods, properties, indexers and events  Private interface implementations interface IDataBound { void Bind(IDataBinder binder); void Bind(IDataBinder binder);} class EditBox: Control, IDataBound { void IDataBound.Bind(IDataBinder binder) {...} void IDataBound.Bind(IDataBinder binder) {...}}

Language Features Enums  Strongly typed  No implicit conversions to/from int  Operators: +, -, ++, --, &, |, ^, ~  Can specify underlying type  Byte, short, int, long enum Color: byte { Red = 1, Red = 1, Green = 2, Green = 2, Blue = 4, Blue = 4, Black = 0, Black = 0, White = Red | Green | Blue, White = Red | Green | Blue,}

Language Features Delegates  Object oriented function pointers  Multiple receivers  Each delegate has an invocation list  Thread-safe + and - operations  Foundation for framework events delegate void MouseEvent(int x, int y); delegate double Func(double x); Func func = new Func(Math.Sin); double x = func(1.0);

Language Features Unified Type System  Everything is an object  All types ultimately inherit from object  Any piece of data can be stored, transported, and manipulated with no extra work Stream MemoryStreamFileStream Hashtabledoubleint object

Language Features Unified Type System  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 o 123 System.Int j

Language Features Unified Type System  Benefits  Eliminates “wrapper classes”  Collection classes work with all types  Replaces OLE Automation's Variant  Lots of examples in.NET framework string s = string.Format( "Your total was {0} on {1}", total, date); "Your total was {0} on {1}", total, date); Hashtable t = new Hashtable(); t.Add(0, "zero"); t.Add(1, "one"); t.Add(2, "two");

Language Features Component Development  What defines a component?  Properties, methods, events  Integrated help and documentation  Design-time information  Components are easy to build and to consume

Language Features Properties  Properties Are “Smart Fields”  Natural syntax, accessors, inlining public class Button: Control { private string caption; private string caption; public string Caption { public string Caption { get { get { return caption; return caption; } set { set { caption = value; caption = value; Repaint(); Repaint(); } }} Button b = new Button(); b.Caption = "OK"; String s = b.Caption;

Language Features Indexers  Indexers are “smart arrays”  Can be overloaded public class ListBox: Control { private string[] items; private string[] items; public string this[int index] { public string this[int index] { get { get { return items[index]; return items[index]; } set { items[index] = value; set { items[index] = value; Repaint(); Repaint(); } }} ListBox listBox = new ListBox(); listBox[0] = "hello"; Console.WriteLine(listBox[0]);

Language Features Creating and Firing an Event  Define the Event signature  Define the Event and firing logic public delegate void EventHandler(object sender, EventArgs e); public class Button { public event EventHandler Click; protected void OnClick(EventArgs e) { if (Click != null) Click(this, e); } protected void OnClick(EventArgs e) { if (Click != null) Click(this, e); }}

Language Features Handling an Event  Define and register Event Handler public class MyForm: Form { Button okButton; Button okButton; public MyForm() { public MyForm() { okButton = new Button(...); okButton = new Button(...); okButton.Caption = "OK"; okButton.Caption = "OK"; okButton.Click += new EventHandler(OkButtonClick); okButton.Click += new EventHandler(OkButtonClick); } void OkButtonClick(object sender, EventArgs e) { void OkButtonClick(object sender, EventArgs e) { ShowMessage("You pressed the OK button"); ShowMessage("You pressed the OK button"); }}

Language Features DEMO 2: Creating an Event Handler  Define an Event Handler for a button in a Windows Forms application

Language Features Attributes  Associate information with types and members  Documentation URL for a class  Transaction context for a method  XML persistence mapping  Traditional solutions  Add keywords or pragmas to language  Use external files, e.g.,.IDL,.DEF  C# solution: Attributes

Language Features Attributes public class OrderProcessor { [WebMethod] [WebMethod] public void SubmitOrder(PurchaseOrder order) {...} public void SubmitOrder(PurchaseOrder order) {...}} [XmlRoot("Order", Namespace="urn:acme.b2b-schema.v1")] public class PurchaseOrder { [XmlElement("shipTo")] public Address ShipTo; [XmlElement("shipTo")] public Address ShipTo; [XmlElement("billTo")] public Address BillTo; [XmlElement("billTo")] public Address BillTo; [XmlElement("comment")] public string Comment; [XmlElement("comment")] public string Comment; [XmlElement("items")] public Item[] Items; [XmlElement("items")] public Item[] Items; [XmlAttribute("date")] public DateTime OrderDate; [XmlAttribute("date")] public DateTime OrderDate;} public class Address {...} public class Item {...}

Language Features Attributes  Attributes can be  Attached to types and members  Examined at run-time using reflection  Completely extensible  Simply a class that inherits from System.Attribute  Type-safe  Arguments checked at compile-time  Extensive use in.NET framework  XML, Web Services, security, serialization, component model, COM and P/Invoke interop, code configuration…

Language Features DEMO 3: Attributes  Create a Web service by using the [webmethod] attribute

Language Features XML Comments class XmlElement { /// /// /// Returns the attribute with the given name and /// Returns the attribute with the given name and /// namespace /// namespace /// /// /// The name of the attribute /// The name of the attribute /// /// /// The namespace of the attribute, or null if /// The namespace of the attribute, or null if /// the attribute has no namespace /// the attribute has no namespace /// /// /// The attribute value, or null if the attribute /// The attribute value, or null if the attribute /// does not exist /// does not exist /// /// public string GetAttr(string name, string ns) { public string GetAttr(string name, string ns) { }}

Language Features DEMO 4: XML Comments  Show how the compiler can auto generate documentation from the source code using XML comments

Language Features Statements and Expressions  High C++ fidelity  If, while, do require bool condition  Goto can’t jump into blocks  Switch statement  No fall-through, “goto case” or “goto default”  Foreach statement  Checked and unchecked statements  Expression statements must do work void Foo() { i == 1; // error i == 1; // error}

Language Features For Each Statement  Iteration of arrays  Iteration of user-defined collections foreach (Customer c in customers.OrderBy("name")) { if (c.Orders.Count != 0) { if (c.Orders.Count != 0) { }} public static void Main(string[] args) { foreach (string s in args) Console.WriteLine(s); foreach (string s in args) Console.WriteLine(s);}

Language Features Parameter Arrays  Can write “printf” style methods  Type-safe, unlike C++ void printf(string fmt, params object[] args) { foreach (object x in args) { foreach (object x in args) { }} printf("%s %i %i", str, int1, int2); object[] args = new object[3]; args[0] = str; args[1] = int1; Args[2] = int2; printf("%s %i %i", args);

Language Features Operator Overloading  First class user-defined data types  Used in base class library  Decimal, DateTime, TimeSpan  Used in the framework  Unit, point, rectangle  Used in SQL integration  SQLString, SQLInt16, SQLInt32, SQLInt64, SQLBool, SQLMoney, SQLNumeric, SQLFloat…

Language Features Operator Overloading public struct DBInt { public static readonly DBInt Null = new DBInt(); public static readonly DBInt Null = new DBInt(); private int value; private int value; private bool defined; private bool defined; public bool IsNull { get { return !defined; } } public bool IsNull { get { return !defined; } } public static DBInt operator +(DBInt x, DBInt y) {...} public static DBInt operator +(DBInt x, DBInt y) {...} public static implicit operator DBInt(int x) {...} public static implicit operator DBInt(int x) {...} public static explicit operator int(DBInt x) {...} public static explicit operator int(DBInt x) {...}} DBInt x = 123; DBInt y = DBInt.Null; DBInt z = x + y;

Language Features Versioning  Overlooked in most languages  C++ and Java produce fragile base classes  Users unable to express versioning intent  C# allows intent to be expressed  Methods are not virtual by default  C# keywords “virtual”, “override” and “new” provide context  C# can't guarantee versioning  Can enable (e.g., explicit override)  Can encourage (e.g., smart defaults)

class Derived: Base// version 1 { public virtual void Foo() { public virtual void Foo() { Console.WriteLine("Derived.Foo"); Console.WriteLine("Derived.Foo"); }} class Derived: Base// version 2a { new public virtual void Foo() { new public virtual void Foo() { Console.WriteLine("Derived.Foo"); Console.WriteLine("Derived.Foo"); }} class Derived: Base// version 2b { public override void Foo() { public override void Foo() { base.Foo(); base.Foo(); Console.WriteLine("Derived.Foo"); Console.WriteLine("Derived.Foo"); }} class Base// version 1 {} class Base // version 2 { public virtual void Foo() { public virtual void Foo() { Console.WriteLine("Base.Foo"); Console.WriteLine("Base.Foo"); }} Language Features Versioning

Language Features Conditional Compilation  #define, #undef  #if, #elif, #else, #endif  Simple boolean logic  Conditional methods public class Debug { [Conditional("Debug")] [Conditional("Debug")] public static void Assert(bool cond, String s) { public static void Assert(bool cond, String s) { if (!cond) { if (!cond) { throw new AssertionException(s); throw new AssertionException(s); } }}

Language Features Unsafe Code  COM integration, P/invoke cover most cases  Unsafe code  Low-level code without leaving the box  Enables unsafe casts, pointer arithmetic  Declarative pinning  Fixed statement  Basically “inline C” unsafe void Foo() { char* buf = stackalloc char[256]; char* buf = stackalloc char[256]; for (char* p = buf; p < buf + 256; p++) *p = 0; for (char* p = buf; p < buf + 256; p++) *p = 0;......}

Language Features Unsafe Code class FileStream: Stream { int handle; int handle; public unsafe int Read(byte[] buffer, int index, int count) { public unsafe int Read(byte[] buffer, int index, int count) { int n = 0; int n = 0; fixed (byte* p = buffer) { fixed (byte* p = buffer) { ReadFile(handle, p + index, count, &n, null); ReadFile(handle, p + index, count, &n, null); } return n; return n; } [dllimport("kernel32", SetLastError=true)] [dllimport("kernel32", SetLastError=true)] static extern unsafe bool ReadFile(int hFile, static extern unsafe bool ReadFile(int hFile, void* lpBuffer, int nBytesToRead, void* lpBuffer, int nBytesToRead, int* nBytesRead, Overlapped* lpOverlapped); int* nBytesRead, Overlapped* lpOverlapped);}

Language Features COM Support .Net framework provides great COM support  TLBIMP imports existing COM classes  TLBEXP exports.NET types  Most users will have a seamless experience

Language Features COM Support  Sometimes you need more control  Methods with complicated structures as arguments  Large TLB – only using a few classes  System.Runtime.Interopservices  COM object identification  Parameter and return value marshalling  HRESULT behavior

Language Features DEMO 5: COM and C#  Call a COM component  Expose a.NET class as a COM component