Presentation is loading. Please wait.

Presentation is loading. Please wait.

Hoang Anh Viet Hà Nội University of Technology Chapter 1. Introduction to C# Programming.

Similar presentations


Presentation on theme: "Hoang Anh Viet Hà Nội University of Technology Chapter 1. Introduction to C# Programming."— Presentation transcript:

1 Hoang Anh Viet VietHa@it-hut.edu.vn Hà Nội University of Technology Chapter 1. Introduction to C# Programming

2 Microsoft Objectives “This chapter gives a quick glimpse of what a simple C# application looks like, and it describes some basic differences between the C# programming environment and the native C++ environment.”

3 Microsoft Roadmap 1.1.Differences between C# and C++ 1.2. Example of a C# program 1.3. Overview of Features Added in C# 2.0 1.4. Overview of What’s new in C# 3.0

4 Microsoft Language C#:  Is a completely an Object-Oriented Language  Every program is class  Every work is done through objects C++:  Remains some features of procedural language  Example: free functions

5 Microsoft Compiling C#:  C# source code compiles into managed code, an intermediate language(IL)  At runtime, the Common Language Runtime (CLR) compiles the code by using Just In Time(JIT) compiling  The JIT compiler compiles a function or method only the first time and it produces machine code native to the platform on which it’s running  Pros: The working set of the application is reduced( the memory footprint of intermediate code is smaller The CLR can optimize the program’s execution on the fly at run time C++:  C++ code compiles into native code( the machine code that’s native to the processor)

6 Microsoft Garbage Collection C#:  One of the key facilities in the CLR is the garbage collector  GC automatically handles memory allocation and deallocation C++:  Not support  Programmers have to handle memory explicitly

7 Microsoft Programming Generally, C# language is similar to C++ because it is developed from C++ and Java. However, it’s added many new features allowing programmers to program easier and friendlier. Example: Statement: foreach Properties: set and get method

8 Microsoft Roadmap 1.1.Differences between C# and C++ 1.2. Example of a C# program 1.3. Overview of Features Added in C# 2.0 1.4. Overview of What’s new in C# 3.0

9 Microsoft 1.2 Example of a C# Program 1. // Welcome.cs 2. // A first console program in C#. 3. using System; 4. class Welcome 5. { 6. static void Main( string[] args ) 7. { 8. Console.WriteLine( "Welcome to C# Programming!" ); 9. } 10. } 9 Each application must have exactly one Call a method like C++

10 Microsoft Roadmap 1.1.Differences between C# and C++ 1.2. Example of a C# program 1.3. Overview of Features Added in C# 2.0 1.4. Overview of What’s new in C# 3.0

11 Microsoft 1.3. Overview of Features Added in C# 2.0 Generics Iterators Partial types Anonymous method

12 Microsoft Generics Generics?  Similar Templates in C++  Type checking, no boxing, no downcasts  Increased sharing (typed collections) How are C# generics implemented?  Instantiated at run-time, not compile-time  Checked at declaration, not instantiation  Work for both reference and value types  Exact run-time type information

13 Microsoft Generics (2) Collection classes Collection interfaces Collection base classes Utility classes Reflection List Dictionary SortedDictionary Stack Queue IList IDictionary ICollection IEnumerable IEnumerator IComparable IComparer Collection KeyedCollection ReadOnlyCollection Nullable EventHandler Comparer

14 Microsoft Iterators C# provides interfaces IEnumerable that abstract the ability to enumerate a collection C# 2.0 introduces iterators, easing task of implementing IEnumerable e.g. We can use the foreach construct: New keyword yield static IEnumerable UpAndDown(int bottom, int top) { for (int i = bottom; i = bottom; j--) { yield return j; } } foreach (int x in SomeList) { Console.WriteLine(x); }

15 Microsoft Partial Types New keyword partial Separate the definition of a class, a struct, an interface over two or more source files //first file (MyClass_1.cs) public partial class MyClass { private int nCount;..... } //second file (MyClass_2.cs) public partial class MyClass { private bool isPresent..... }

16 Microsoft Anonymous methods Delegates are clumsy: programmer has to name the function and “closure-convert” by hand So C# 2.0 introduced anonymous methods  No name  Compiler does closure-conversion, creating a class and object that captures the environment e.g. bool b = xs.Exists(delegate(int x) { return x>y; }); Local y is free in body of anonymous method

17 Microsoft Other New Features Static classes Property accessibility control External aliases Namespace alias qualifiers Inline warning control Fixed size buffers

18 Microsoft Roadmap 1.1.Differences between C# and C++ 1.2. Example of a C# program 1.3. Overview of Features Added in C# 2.0 1.4. Overview of What’s new in C# 3.0

19 Microsoft 1.4. Overview of What’s new in C# 3.0 Implicitly Typed Local Variables Object and Collection Initializers Extension Methods Partial Methods Anonymous Types Query Keywords Lambda Expressions

20 Microsoft Implicitly Typed Local Variables Use the new var keyword to implicitly declare a variable Useful in cases where you do not know the exact type of data and you need the compiler to determine for you Examples var i = 5; var s = "Hello"; Are equivalent to: int i = 5; string s = "Hello"; 20

21 Microsoft Object and Collection Initializers Enables you to combine declaration and initialization one object in one step Ex: class A public class A { public int x ; public string y; } Then could declare and initialize an A object: var myA = new A{ x = 0, y= “some text”} ; Collection Initializer is similar List animals = new List (); animals.Add("monkey"); fg animals.Add("donkey"); animals.Add("cow"); Can replace by: var animals = new List {"monkey", "donkey", "cow”} ;

22 Microsoft Extension Methods Enable you to extend various types with additional static methods Can be declared only in static classes and are identified by the keyword " this “ This allows you to take advantage of the extensible nature of various built-in or defined types and add newer methods to them 22

23 Microsoft Anonymous Types Create an instance of a class without having to write code for the class beforehand Example: var A = new {x=9,y=“hello”}  A has two properties: x=9 and y=“hello” 23

24 Microsoft Lambda Expressions A lambda expression is an anonymous function that can contain expressions and statements, and can be used to create delegates or expression tree types. Implicitly or explicitly typed parameters 24

25 Microsoft Lambda Expressions(2) Examples: x => x + 1 // Implicitly typed, expression body x => { return x + 1; } // Implicitly typed, statement body (int x) => x + 1 // Explicitly typed, expression body (int x) => { return x + 1; } // Explicitly typed, statement body (x, y) => x * y // Multiple parameters () => Console.WriteLine() // No parameters 25

26 Microsoft Query Expressions 26 Language-Integrated Query (LINQ) A part of C# 3.0 language Allows you to write SQL-like syntax in C#

27 Microsoft Query Keywords 27 ClauseDescription fromSpecifies a data source and a range variable (similar to an iteration variable) whereFilters source elements based on one or more Boolean expressions separated by logical AND and OR operators ( && or || ) selectSpecifies the type and shape that the elements in the returned sequence will have when the query is executed groupGroups query results according to a specified key value

28 Microsoft Query Keywords(2) 28 ClauseDescription intoProvides an identifier that can serve as a reference to the results of a join, group or select clause orderbySorts query results in ascending or descending order based on the default comparer for the element type join Joins two data sources based on an equality comparison between two specified matching criteria let Introduces a range variable to store sub- expression results in a query expression

29 Microsoft Expression Trees New type: System.Expressions.Expression Simply an in-memory representation of a lambda expression Allows expressions to be treated as data at runtime Can modify and inspect lambda expressions at runtime Example: Expression filter = () => Console.WriteLine("Hello!!"); 29 You easily can inspect the contents of the tree by using various properties on the filter variable

30 Microsoft Partial Method Definitions Partial types may now contain partial methods Partial methods must adhere to the following rules:  They must begin with the partial keyword and the method must return void.  They can have ref parameters but not out parameters.  They are implicitly private and, therefore, cannot be virtual.  They cannot be extern, because the presence of the body determines whether they are defining or implementing.  They can have static and unsafe modifiers.  They can be generic; constraints are put on the defining partial method declaration, and may optionally be repeated on the implementing declaration.  Parameter and type parameter names do not have to be the same in the implementing declaration as in the defining declaration.  They cannot make a delegate to a partial method. 30

31 Microsoft Summary Differences Between C# and C++  Sytax, Framework,… C# 2.0 Enhancements  Generics, Iterators, Partial types, Anonymous method  And much more… New in C# 3.0  Implicitly Typed Local Variables, Object and Collection Initializers, Extension Methods, Anonymous Types, Lambda Expressions, Query Keywords, Expression Trees, Partial Method Definitions,… 31


Download ppt "Hoang Anh Viet Hà Nội University of Technology Chapter 1. Introduction to C# Programming."

Similar presentations


Ads by Google