• Like

Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
5,015
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
288
Comments
1
Likes
4

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. C# Language Overview(Part II)
    Creating and Using Objects, Exceptions, Strings, Generics, Collections, Attributes
    http://schoolacademy.telerik.com
    Svetlin Nakov
    Telerik Corporation
    www.telerik.com
  • 2. Table of Contents
    Creating and Using Objects
    Namespaces
    Exceptions Handling
    Strings and Text Processing
    Generics
    Collection Classes
    Attributes
    2
  • 3. Using Classes and Objects
    Using the Built-In .NET Framework Classes
  • 4. What is Class?
    The formal definition of class:
    Definition by Google
    4
    Classes act as templates from which an instance of an object is created at run time. Classes define the properties of the object and the methods used to control the object's behavior.
  • 5. Classes
    Classes provide the structure for objects
    Define their prototype, act as template
    Classes define:
    Set of attributes
    Represented by fields and properties
    Hold their state
    Set of actions (behavior)
    Represented by methods
    A class defines the methods and types of data associated with an object
    5
  • 6. Classes – Example
    6
    Class Name
    Attributes
    (Properties and Fields)
    Account
    +Owner: Person
    +Ammount: double
    Operations
    (Methods)
    +Suspend()
    +Deposit(sum:double)
    +Withdraw(sum:double)
  • 7. Objects
    An object is a concrete instance of a particular class
    Creating an object from a class is called instantiation
    Objects have state
    Set of values associated to their attributes
    Example:
    Class: Account
    Objects: Ivan's account, Peter's account
    7
  • 8. Objects – Example
    8
    Object
    ivanAccount
    Class
    +Owner="Ivan Kolev"
    +Ammount=5000.0
    Account
    +Owner: Person
    +Ammount: double
    Object
    peterAccount
    +Owner="Peter Kirov"
    +Ammount=1825.33
    +Suspend()
    +Deposit(sum:double)
    +Withdraw(sum:double)
    Object
    kirilAccount
    +Owner="Kiril Kirov"
    +Ammount=25.0
  • 9. Classes in C#
    Basic units that compose programs
    Implementation is encapsulated (hidden)
    Classes in C# can contain:
    Fields (member variables)
    Properties
    Methods
    Constructors
    Inner types
    Etc. (events, indexers, operators, …)
    9
  • 10. Classes in C# – Examples
    Example of classes:
    System.Console
    System.String (string in C#)
    System.Int32 (int in C#)
    System.Array
    System.Math
    System.Random
    10
  • 11. Declaring Objects
    An instance of a class or structure can be defined like any other variable:
    Instances cannot be used if they are not initialized
    11
    using System;
    ...
    // Define two variables of type DateTime
    DateTime today;
    DateTime halloween;
    // Declare and initialize a structure instance
    DateTime today = DateTime.Now;
  • 12. Fields
    Fields are data members of a class
    Can be variables and constants
    Accessing a field doesn’t invoke any actions of the object
    Example:
    String.Empty (the "" string)
    12
  • 13. Accessing Fields
    Constant fields can be only read
    Variable fields can be read and modified
    Usually properties are used instead of directly accessing variable fields
    Examples:
    13
    // Accessing read-only field
    String empty = String.Empty;
    // Accessing constant field
    int maxInt = Int32.MaxValue;
  • 14. Properties
    Properties look like fields (have name and type), but they can contain code, executed when they are accessed
    Usually used to control access to data fields (wrappers), but can contain more complex logic
    Can have two components (and at least one of them) called accessors
    get for reading their value
    set for changing their value
    14
  • 15. Properties (2)
    According to the implemented accessors properties can be:
    Read-only (get accessor only)
    Read and write (both get and setaccessors)
    Write-only (set accessor only)
    Example of read-only property:
    String.Length
    15
  • 16. Accessing Properties and Fields – Example
    16
    using System;
    ...
    DateTime christmas = new DateTime(2009, 12, 25);
    int day = christmas.Day;
    int month = christmas.Month;
    int year = christmas.Year;
    Console.WriteLine(
    "Christmas day: {0}, month: {1}, year: {2}",
    day, month, year);
    Console.WriteLine(
    "Day of year: {0}", christmas.DayOfYear);
    Console.WriteLine("Is {0} leap year: {1}",
    year, DateTime.IsLeapYear(year));
  • 17. Instance and Static Members
    Fields, properties and methods can be:
    Instance (or object members)
    Static (or class members)
    Instancemembers are specific for each object
    Example: different dogs have different name
    Staticmembers are common for all instances of a class
    Example: DateTime.MinValue is shared between all instances of DateTime
    17
  • 18. Instance and Static Members – Examples
    Example of instance member
    String.Length
    Each string object has different length
    Example of static member
    Console.ReadLine()
    The console is only one (global for the program)
    Reading from the console does not require to create an instance of it
    18
  • 19. Methods
    Methods manipulate the data of the object to which they belong or perform other tasks
    Examples:
    Console.WriteLine(…)
    Console.ReadLine()
    String.Substring(index, length)
    Array.GetLength(index)
    19
  • 20. Instance Methods
    Instance methods manipulate the data of a specified object or perform any other tasks
    If a value is returned, it depends on the particular class instance
    Syntax:
    The name of the instance, followed by the name of the method, separated by dot
    20
    <object_name>.<method_name>(<parameters>)
  • 21. Calling Instance Methods – Examples
    Calling instance methods of String:
    Calling instance methods of DateTime:
    21
    String sampleLower = new String('a', 5);
    String sampleUpper = sampleLower.ToUpper();
    Console.WriteLine(sampleLower); // aaaaa
    Console.WriteLine(sampleUpper); // AAAAA
    DateTime now = DateTime.Now;
    DateTime later = now.AddHours(8);
    Console.WriteLine("Now: {0}", now);
    Console.WriteLine("8 hours later: {0}", later);
  • 22. Static Methods
    Static methods are common for all instances of a class (shared between all instances)
    Returned value depends only on the passed parameters
    No particular class instance is available
    Syntax:
    The name of the class, followed by the name of the method, separated by dot
    22
    <class_name>.<method_name>(<parameters>)
  • 23. Calling Static Methods – Examples
    23
    Constant field
    Static method
    using System;
    double radius = 2.9;
    double area = Math.PI * Math.Pow(radius, 2);
    Console.WriteLine("Area: {0}", area);
    // Area: 26,4207942166902
    double precise = 8.7654321;
    double round3 = Math.Round(precise, 3);
    double round1 = Math.Round(precise, 1);
    Console.WriteLine(
    "{0}; {1}; {2}", precise, round3, round1);
    // 8,7654321; 8,765; 8,8
    Static method
    Static method
  • 24. Constructors
    Constructors are special methods used to assign initial values of the fields in an object
    Executed when an object of a given type is being created
    Have the same name as the class that holds them
    Do not return a value
    A class may have several constructors with different set of parameters
    24
  • 25. Constructors (2)
    Constructor is invoked by the new operator
    Examples:
    25
    <instance_name> = new <class_name>(<parameters>)
    String s = new String("Hello!"); // s = "Hello!"
    String s = new String('*', 5); // s = "*****"
    DateTime dt = new DateTime(2009, 12, 30);
    DateTime dt = new DateTime(2009, 12, 30, 12, 33, 59);
    Int32 value = new Int32(1024);
  • 26. Structures
    Structures are similar to classes
    Structures are usually used for storing data structures, without any other functionality
    Structures can have fields, properties, etc.
    Using methods is not recommended
    Structures are value types, and classes are reference types (this will be discussed later)
    Example of structure
    System.DateTime– represents a date and time
    26
  • 27. Enumerations
    Enumerations in C# are types whose values are limited to a predefined set of values
    E.g. the days of week
    Declared by the keyword enum in C#
    Hold values from a predefined set
    27
    public enum Color { Red, Green, Blue, Black }

    Color color = Color.Red;
    Console.WriteLine(color); // Red
    color = 5; // Compilation error!
  • 28. What is a Namespace?
    Namespaces are used to organize the source code into more logical and manageable way
    Namespaces can contain
    Definitions of classes, structures, interfaces and other types and other namespaces
    Namespaces can contain other namespaces, e.g.
    Systemnamespace contains Data namespace
    The name of the nested namespace is System.Data
    28
  • 29. Full Class Names
    A full name of a class is the name of the class preceded by the name of its namespace
    Example:
    Array class, defined in the System namespace
    The full name of the class is System.Array
    29
    <namespace_name>.<class_name>
  • 30. Including Namespaces
    The usingdirective in C#:
    Allows using types in a namespace, without specifying their full name
    Example:
    instead of
    30
    using <namespace_name>
    using System;
    DateTime date;
    System.DateTime date;
  • 31. Common Type System (CTS)
    CTS defines all data types supported in .NET Framework
    Primitive types (e.g. int, float, object)
    Classes (e.g. String, Console, Array)
    Structures (e.g. DateTime)
    Arrays (e.g. int[], string[,])
    Etc.
    Object-oriented by design
    31
  • 32. CTS and Different Languages
    CTS is common for all .NET languages
    C#, VB.NET, J#, JScript.NET, ...
    CTS type mappings:
    32
  • 33. Value and Reference Types
    In CTS there are two categories of types
    Valuetypes
    Reference types
    Placed in different areas of memory
    Value types live in the execution stack
    Freed when become out of scope
    Reference types live in the managed heap (dynamic memory)
    Freed by the garbage collector
    33
  • 34. Value and Reference Types – Examples
    Value types
    Most of the primitive types
    Structures
    Examples: int, float, bool, DateTime
    Reference types
    Classes and interfaces
    Strings
    Arrays
    Examples: string, Random, object, int[]
    34
  • 35. Exceptions Handling
    The Paradigm of Exceptions in OOP
  • 36. What are Exceptions?
    The exceptions in .NET Framework are classic implementation of the OOP exception model
    Deliver powerful mechanism for centralized handling of errors and unusual events
    Substitute procedure-oriented approach, in which each function returns error code
    Simplify code construction and maintenance
    Allow the problematic situations to be processed at multiple levels
    36
  • 37. Handling Exceptions
    In C# the exceptions can be handled by thetry-catch-finallyconstruction
    catchblocks can be used multiple times to process different exception types
    37
    try
    {
    // Do some work that can raise an exception
    }
    catch (SomeException)
    {
    // Handle the caught exception
    }
  • 38. Handling Exceptions – Example
    38
    static void Main()
    {
    string s = Console.ReadLine();
    try
    {
    Int32.Parse(s);
    Console.WriteLine(
    "You entered valid Int32 number {0}.", s);
    }
    catch (FormatException)
    {
    Console.WriteLine("Invalid integer number!");
    }
    catch (OverflowException)
    {
    Console.WriteLine(
    "The number is too big to fit in Int32!");
    }
    }
  • 39. TheSystem.Exception Class
    Exceptions in .NET are objects
    TheSystem.Exceptionclass is base for all exceptions in CLR
    Holds information for the cause of the error or the unusual situation
    Message – text description of the exception
    StackTrace– the snapshot of the stack at the moment of exception throwing
    InnerException – exception caused the currentexception (if any)
    39
  • 40. Exception Properties – Example
    40
    class ExceptionsTest
    {
    public static void CauseFormatException()
    {
    string s = "an invalid number";
    Int32.Parse(s);
    }
    static void Main()
    {
    try
    {
    CauseFormatException();
    }
    catch (FormatException fe)
    {
    Console.Error.WriteLine("Exception caught:{0} {1}",fe.Message, fe.StackTrace);
    }
    }
    }
  • 41. Exception Properties
    TheMessage property gives brief description of the problem
    TheStackTrace property is extremely useful when identifying the reason caused the exception
    41
    Exception caught: Input string was not in a correct format.
    at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
    at System.Int32.Parse(String s)
    at ExceptionsTest.CauseFormatException() in c:consoleapplication1exceptionstest.cs:line 8
    at ExceptionsTest.Main(String[] args) in c:consoleapplication1exceptionstest.cs:line 15
  • 42. Exception Properties (2)
    File names and line numbers are accessible only if the compilation was in Debugmode
    When compiled in Release mode, the information in the property StackTraceis quite different:
    42
    Exception caught: Input string was not in a correct format.
    at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
    at ExceptionsTest.Main(String[] args)
  • 43. Exception Hierarchy
    Exceptions in .NET Framework are organized in a hierarchy
    43
  • 44. Types of Exceptions
    All .NET exceptions inherit from System.Exception
    The system exceptions inherit from System.SystemException, e.g.
    System.ArgumentException
    System.NullReferenceException
    System.OutOfMemoryException
    System.StackOverflowException
    User-defined exceptions should inherit from System.ApplicationException
    44
  • 45. Handling Exceptions
    When catching an exception of a particular class, all its inheritors (child exceptions) are caught too
    Example:
    HandlesArithmeticExceptionandits successorsDivideByZeroExceptionandOverflowException
    45
    try
    {
    // Do some works that can raise an exception
    }
    catch (System.ArithmeticException)
    {
    // Handle the caught arithmetic exception
    }
  • 46. Handling All Exceptions
    All exceptions thrown by .NET managed code inherit the System.Exceptionexception
    Unmanaged code can throw other exceptions
    For handling all exceptions (even unmanaged) use the construction:
    46
    try
    {
    // Do some works that can raise any exception
    }
    catch
    {
    // Handle the caught exception
    }
  • 47. Throwing Exceptions
    Exceptions are thrown (raised) by throw keyword in C#
    Used to notify the calling code in case of error or unusual situation
    When an exception is thrown:
    The program execution stops
    The exception travels over the stack until a suitable catch block is reached to handle it
    Unhandled exceptions display error message
    47
  • 48. How Exceptions Work?
    48
    5. Throw an exception
    Method N
    Method N


    6. Find handler
    4. Method call
    Method 2
    Method 2
    3. Method call
    7. Find handler
    Method 1
    Method 1
    2. Method call
    8. Find handler
    Main()
    Main()
    .NET CLR
    9. Find handler
    1. Execute the
    program
    10. Display error message
  • 49. Using throw Keyword
    Throwing an exception with error message:
    Exceptions can take message and cause:
    Note:if the original exception is not passed the initial cause of the exception is lost
    49
    throw new ArgumentException("Invalid amount!");
    try
    {
    Int32.Parse(str);
    }
    catch (FormatException fe)
    {
    throw new ArgumentException("Invalid number", fe);
    }
  • 50. Throwing Exceptions – Example
    50
    public static double Sqrt(double value)
    {
    if (value < 0)
    throw new System.ArgumentOutOfRangeException(
    "Sqrt for negative numbers is undefined!");
    return Math.Sqrt(value);
    }
    static void Main()
    {
    try
    {
    Sqrt(-1);
    }
    catch (ArgumentOutOfRangeException ex)
    {
    Console.Error.WriteLine("Error: " + ex.Message);
    throw;
    }
    }
  • 51. Strings and Text Processing
  • 52. What Is String?
    Strings are sequences of characters
    Each character is a Unicode symbol
    Represented by the stringdata type in C# (System.String)
    Example:
    52
    string s = "Hello, C#";
    s
  • 53. The System.String Class
    Strings are represented by System.String objects in .NET Framework
    String objects contain an immutable (read-only) sequence of characters
    Strings use Unicode in to support multiple languages and alphabets
    Strings are stored in the dynamic memory (managed heap)
    System.String is reference type
    53
  • 54. The System.StringClass (2)
    String objects are like arrays of characters (char[])
    Have fixed length (String.Length)
    Elements can be accessed directly by index
    The index is in the range [0...Length-1]
    54
    string s = "Hello!";
    int len = s.Length; // len = 6char ch = s[1]; // ch = 'e'
    index =
    s[index] =
  • 55. Strings – Example
    55
    static void Main()
    {
    string s =
    "Stand up, stand up, Balkan Superman.";
    Console.WriteLine("s = "{0}"", s);
    Console.WriteLine("s.Length = {0}", s.Length);
    for (int i = 0; i < s.Length; i++)
    {
    Console.WriteLine("s[{0}] = {1}", i, s[i]);
    }
    }
  • 56. Declaring Strings
    There are two ways of declaring string variables:
    Usingthe C# keywordstring
    Using the .NET's fully qualified class name System.String
    The above three declarations are equivalent
    56
    string str1;
    System.String str2;
    String str3;
  • 57. Creating Strings
    Before initializing a string variable has nullvalue
    Strings can be initialized by:
    Assigning a string literal to the string variable
    Assigning the value of another string variable
    Assigning the result of operation of type string
    57
  • 58. Creating Strings (2)
    Not initialized variables has value of null
    Assigning a string literal
    Assigning from another string variable
    Assigning from the result of string operation
    58
    string s; // s is equal to null
    string s = "I am a string literal!";
    string s2 = s;
    string s = 42.ToString();
  • 59. Reading and Printing Strings
    Reading strings from the console
    Use the method Console.ReadLine()
    59
    string s = Console.ReadLine();
    Printing strings to the console
    Use the methods Write() and WriteLine()
    Console.Write("Please enter your name: ");
    string name = Console.ReadLine();
    Console.Write("Hello, {0}! ", name);
    Console.WriteLine("Welcome to our party!");
  • 60. Comparing Strings
    A number of ways exist to compare two strings:
    Dictionary-based string comparison
    Case-insensitive
    Case-sensitive
    60
    int result = string.Compare(str1, str2, true);
    // result == 0 if str1 equals str2
    // result < 0 if str1 if before str2
    // result > 0 if str1 if after str2
    string.Compare(str1, str2, false);
  • 61. Comparing Strings – Example
    Finding the first string in a lexicographical order from a given list of strings:
    61
    string[] towns = {"Sofia", "Varna", "Plovdiv",
    "Pleven", "Bourgas", "Rousse", "Yambol"};
    string firstTown = towns[0];
    for (int i=1; i<towns.Length; i++)
    {
    string currentTown = towns[i];
    if (String.Compare(currentTown, firstTown) < 0)
    {
    firstTown = currentTown;
    }
    }
    Console.WriteLine("First town: {0}", firstTown);
  • 62. Concatenating Strings
    There are two ways to combine strings:
    Using the Concat() method
    Using the + or the += operators
    Any object can be appended to a string
    62
    string str = String.Concat(str1, str2);
    string str = str1 + str2 + str3;
    string str += str1;
    string name = "Peter";
    int age = 22;
    string s = name + " " + age; //  "Peter 22"
  • 63. Searching in Strings
    Finding a character or substring within given string
    First occurrence
    First occurrence starting at given position
    Last occurrence
    63
    IndexOf(string str)
    IndexOf(string str, int startIndex)
    LastIndexOf(string)
  • 64. Searching in Strings – Example
    64
    string str = "C# Programming Course";
    int index = str.IndexOf("C#"); // index = 0
    index = str.IndexOf("Course"); // index = 15
    index = str.IndexOf("COURSE"); // index = -1
    // IndexOf is case-sensetive. -1 means not found
    index = str.IndexOf("ram"); // index = 7
    index = str.IndexOf("r"); // index = 4
    index = str.IndexOf("r", 5); // index = 7
    index = str.IndexOf("r", 8); // index = 18
    index =
    s[index] =
  • 65. Extracting Substrings
    Extracting substrings
    str.Substring(int startIndex, int length)
    str.Substring(int startIndex)
    65
    string filename = @"C:PicsRila2009.jpg";
    string name = filename.Substring(8, 8);
    // name is Rila2009
    string filename = @"C:PicsSummer2009.jpg";
    string nameAndExtension = filename.Substring(8);
    // nameAndExtension is Summer2009.jpg
  • 66. Splitting Strings
    To split a string by given separator(s) use the following method:
    Example:
    66
    string[] Split(params char[])
    string listOfBeers =
    "Amstel, Zagorka, Tuborg, Becks.";
    string[] beers =
    listOfBeers.Split(' ', ',', '.');
    Console.WriteLine("Available beers are:");
    foreach (string beer in beers)
    {
    Console.WriteLine(beer);
    }
  • 67. Replacing and Deleting Substrings
    Replace(string,string) – replaces all occurrences of given string with another
    The result is new string (strings are immutable)
    Remove(index,length) – deletes part of a string and produces a new string as result
    67
    string cocktail = "Vodka + Martini + Cherry";
    string replaced = cocktail.Replace("+", "and");
    // Vodka and Martini and Cherry
    string price = "$ 1234567";
    string lowPrice = price.Remove(2, 3);
    // $ 4567
  • 68. Changing Character Casing
    Using method ToLower()
    Using method ToUpper()
    68
    string alpha = "aBcDeFg";
    string lowerAlpha = alpha.ToLower(); // abcdefg
    Console.WriteLine(lowerAlpha);
    string alpha = "aBcDeFg";
    string upperAlpha = alpha.ToUpper(); // ABCDEFG
    Console.WriteLine(upperAlpha);
  • 69. Trimming White Space
    Using method Trim()
    Using method Trim(chars)
    Using TrimStart() and TrimEnd()
    69
    string s = " example of white space ";
    string clean = s.Trim();
    Console.WriteLine(clean);
    string s = " Hello!!! ";
    string clean = s.Trim(' ', ',' ,'!', ' ',' ');
    Console.WriteLine(clean); // Hello
    string s = " C# ";
    string clean = s.TrimStart(); // clean = "C# "
  • 70. Constructing Strings
    Strings are immutable
    Concat(), Replace(), Trim(), ... return new string, do not modify the old one
    Do not use "+" for strings in a loop!
    It runs very, very inefficiently (slowly)!
    70
    public static string DupChar(char ch, int count)
    {
    string result = "";
    for (int i=0; i<count; i++)
    result += ch;
    return result;
    }
    Very bad practice. Avoid this!
  • 71. Changing the Contents of a String – StringBuilder
    Use the System.Text.StringBuilder class for modifiable strings of characters:
    Use StringBuilder if you need to keep adding characters to a string
    71
    public static string ReverseString(string s)
    {
    StringBuilder sb = new StringBuilder();
    for (int i = s.Length-1; i >= 0; i--)
    sb.Append(s[i]);
    return sb.ToString();
    }
  • 72. The StringBuilder Class
    72
    Capacity
    StringBuilder:
    Length=9
    Capacity=15
    unused buffer
    used buffer
    (Length)
    StringBuilder keeps a buffer memory, allocated in advance
    Most operations use the buffer memory and do not allocate new objects
  • 73. StringBuilder – Example
    Extracting all capital letters from a string
    73
    public static string ExtractCapitals(string s)
    {
    StringBuilder result = new StringBuilder();
    for (int i = 0; i<s.Length; i++)
    {
    if (Char.IsUpper(s[i]))
    {
    result.Append(s[i]);
    }
    }
    return result.ToString();
    }
  • 74. Method ToString()
    All classes have public virtual method ToString()
    Returns a human-readable, culture-sensitive string representing the object
    Most .NET Framework types have own implementation of ToString()
    int, float, bool, DateTime
    74
    int number = 5;
    string s = "The number is " + number.ToString();
    Console.WriteLine(s); // The number is 5
  • 75. Method ToString(format)
    We can apply specific formatting when converting objects to string
    ToString(formatString) method
    75
    int number = 42;
    string s = number.ToString("D5"); // 00042
    s = number.ToString("X"); // 2A
    // Consider the default culture is Bulgarian
    s = number.ToString("C"); // 42,00 лв
    double d = 0.375;
    s = d.ToString("P2"); // 37,50 %
  • 76. Formatting Strings
    The formatting strings are different for the different types
    Some formatting strings for numbers:
    D – number (for integer types)
    C – currency (according to current culture)
    E – number in exponential notation
    P – percentage
    X – hexadecimal number
    F – fixed point (for real numbers)
    76
  • 77. Method String.Format()
    Applies templates for formatting strings
    Placeholders are used for dynamic text
    Like Console.WriteLine(…)
    77
    string template = "If I were {0}, I would {1}.";
    string sentence1 = String.Format(
    template, "developer", "know C#");
    Console.WriteLine(sentence1);
    // If I were developer, I would know C#.
    string sentence2 = String.Format(
    template, "elephant", "weigh 4500 kg");
    Console.WriteLine(sentence2);
    // If I were elephant, I would weigh 4500 kg.
  • 78. Composite Formatting
    The placeholders in the composite formatting strings are specified as follows:
    Examples:
    78
    {index[,alignment][:formatString]}
    double d = 0.375;
    s = String.Format("{0,10:F5}", d);
    // s = " 0,37500"
    int number = 42;
    Console.WriteLine(
    "Dec {0:D} = Hex {1:X}", number, number);
    // Dec 42 = Hex 2A
  • 79. Formatting Dates
    Dates use their own formatting strings
    d, dd– day (with/without leading zero)
    M, MM– month
    yy, yyyy– year (2 or 4 digits)
    h, hh, m, mm, s, ss– hour, minute, second
    79
    DateTime now = DateTime.Now;
    Console.WriteLine(
    "Now is {0:d.MM.yyyy hh:mm:ss}", now);
    // Now is 31.11.200911:30:32
  • 80. Collection Classes
    Lists, Trees, Dictionaries
  • 81. What are Generics?
    Generics allow defining parameterized classes that process data of unknown (generic) type
    The class can be instantiated with several different particular types
    Example: List<T> List<int> / List<string> / List<Student>
    Generics are also known as "parameterizedtypes" or "template types"
    Similar to the templates in C++
    Similar to the generics in Java
    81
  • 82. The List<T> Class
    Implements the abstract data structure list using an auto-extensible array
    All elements are of the same type T
    Tcan be any type, e.g. List<int>, List<string>, List<DateTime>
    Size is dynamically increased as needed
    Basic functionality:
    Count – returns the number of elements
    Add(T) – appends given element at the end
    82
  • 83. List<T> – Simple Example
    83
    static void Main()
    {
    List<string> list = new List<string>();
    list.Add("C#");
    list.Add("Java");
    list.Add("PHP");
    foreach (string item in list)
    {
    Console.WriteLine(item);
    }
    // Result:
    // C#
    // Java
    // PHP
    }
  • 84. List<T> – Functionality
    list[index] – access element by index
    Insert(index,T) – inserts given element to the list at a specified position
    Remove(T) – removes the first occurrence of given element
    RemoveAt(index)– removes the element at the specified position
    Clear() – removes all elements
    Contains(T) – determines whether an element is part of the list
    84
  • 85. List<T> – Functionality (2)
    IndexOf() – returns the index of the first occurrence of a valuein the list (zero-based)
    Reverse() – reverses the order of the elements in the list or a portion of it
    Sort() – sorts the elements in the list or a portion of it
    ToArray() – converts the elements of the list to an array
    TrimExcess() – sets the capacity to the actual number of elements
    85
  • 86. Primes in an Interval – Example
    86
    static List<int> FindPrimes(int start, int end)
    {
    List<int> primesList = new List<int>();
    for (int num = start; num <= end; num++)
    {
    bool prime = true;
    for (int div = 2; div <= Math.Sqrt(num); div++)
    {
    if (num % div == 0)
    {
    prime = false;
    break;
    }
    }
    if (prime)
    {
    primesList.Add(num);
    }
    }
    return primesList;
    }
  • 87. The Stack<T> Class
    Implements the stack data structure using an array
    Elements are of the same type T
    Tcan be any type, e.g. Stack<int>
    Size is dynamically increased as needed
    Basic functionality:
    Push(T)– inserts elements to the stack
    Pop()– removes and returns the top element from the stack
    87
  • 88. Stack<T> – Example
    Using Push(), Pop() and Peek() methods
    88
    static void Main()
    {
    Stack<string> stack = new Stack<string>();
    stack.Push("1. Ivan");
    stack.Push("2. Nikolay");
    stack.Push("3. Maria");
    stack.Push("4. George");
    Console.WriteLine("Top = {0}", stack.Peek());
    while (stack.Count > 0)
    {
    string personName = stack.Pop();
    Console.WriteLine(personName);
    }
    }
  • 89. The Queue<T> Class
    Implements the queue data structure using a circular resizable array
    Elements are from the same type T
    Tcan be any type, e.g. Stack<int>
    Size is dynamically increased as needed
    Basic functionality:
    Enqueue(T)– adds an element to the end of the queue
    Dequeue()– removes and returns the element at the beginning of the queue
    89
  • 90. Queue<T>–Example
    Using Enqueue() and Dequeue() methods
    90
    static void Main()
    {
    Queue<string> queue = new Queue<string>();
    queue.Enqueue("Message One");
    queue.Enqueue("Message Two");
    queue.Enqueue("Message Three");
    queue.Enqueue("Message Four");
    while (queue.Count > 0)
    {
    string message = queue.Dequeue();
    Console.WriteLine(message);
    }
    }
  • 91. Dictionary<TKey,TValue>Class
    Implements the abstract data type "Dictionary" as hash table
    Size is dynamically increased as needed
    Contains a collection of key-value pairs arranged by the hash code of the key:
    h(key) = value
    Collisions are resolved by chaining
    Dictionary<TKey,TValue> class relies on
    Object.Equals() method for comparing the elements
    91
  • 92. Dictionary<TKey,TValue>Class (2)
    Object.GetHashCode() method for calculating the hash codes of the elements
    Major operations:
    Add(TKey,TValue)– adds an element with the specified key and value into the dictionary
    Remove(TKey)– removes the element with the specified key
    Clear()– removes all elements
    this[] – returns element by key
    92
  • 93. Dictionary<TKey,TValue>Class (3)
    Count– returns the number of elements
    ContainsKey(TKey)– determines whether the dictionary contains given key
    ContainsValue(TValue) – determines whether the dictionary contains given value
    Keys– returns a collection of the keys
    Values – returns a collection of the values
    TryGetValue(TKey,out TValue) – if the key is found, returns it in the TValue, otherwise returns the default value for the TValue type
    93
  • 94. Dictionary<TKey,TValue> – Example
    94
    Dictionary<string, int> studentsMarks = new Dictionary<string, int>();
    studentsMarks.Add("Ivan", 4);
    studentsMarks.Add("Peter", 6);
    studentsMarks.Add("Maria", 6);
    studentsMarks.Add("George", 5);
    int peterMark = studentsMarks["Peter"];
    Console.WriteLine("Peter's mark: {0}", peterMark);
    Console.WriteLine("Is Peter in the hash table: {0}",
    studentsMarks.ContainsKey("Peter"));
    Console.WriteLine("Students and grades:");
    foreach (var pair in studentsMarks)
    {
    Console.WriteLine("{0} --> {1} ", pair.Key, pair.Value);
    }
  • 95. Counting Words in Given Text
    95
    string text = "Welcome to our C# course. In this " +
    "course you will learn how to write simple " +
    "programs in C# and Microsoft .NET";
    string[] words = text.Split(new char[] {' ', ',', '.'},
    StringSplitOptions.RemoveEmptyEntries);
    var wordsCount = new Dictionary<string, int>();
    foreach (string word in words)
    {
    if (wordsCount.ContainsKey(word))
    wordsCount[word]++;
    else
    wordsCount.Add(word, 1);
    }
    foreach (var pair in wordsCount)
    {
    Console.WriteLine("{0} --> {1}", pair.Key, pair.Value);
    }
  • 96. Balanced Trees in .NET
    Balanced Binary Search Trees
    Ordered binary search trees that have height of log2(n) where n is the number of their nodes
    Searching costs about log2(n) comparisons
    .NET Framework has built-in implementations of balanced search trees, e.g.:
    SortedDictionary<K,V>
    Red-black tree based map of key-value pairs
    External libraries like "Wintellect Power Collections for .NET" are more flexible
    96
  • 97. Sorted Dictionary – Example
    97
    string text = "Welcome to our C# course. In this " +
    "course you will learn how to write simple " +
    "programs in C# and Microsoft .NET";
    string[] words = text.Split(new char[] {' ', ',', '.'},
    StringSplitOptions.RemoveEmptyEntries);
    var wordsCount = new SortedDictionary<string, int>();
    foreach (string word in words)
    {
    if (wordsCount.ContainsKey(word))
    wordsCount[word]++;
    else
    wordsCount.Add(word, 1);
    }
    foreach (var pair in wordsCount)
    {
    Console.WriteLine("{0} --> {1}", pair.Key, pair.Value);
    }
  • 98. Attributes
    What Attributes Are? How and When to Use Them?
  • 99. What Are Attributes?
    Attributes are special declarative tags
    Used for attaching descriptive information (annotations) to the declarations in the code
    At compile time attributes are saved in the assembly's metadata
    Can be extracted from the metadata at run-time and can be manipulated by different tools
    Instances of classes derived from System.Attribute
    99
  • 100. Attributes Applying – Example
    Attribute's name is surrounded by square brackets and is placed before the declaration which it refers to:
    [Flags] attribute indicates that the enumtype can be treatedlike a set of bit flags
    100
    [Flags] // System.FlagsAttribute
    public enum FileAccess
    {
    Read = 1,
    Write = 2,
    ReadWrite = Read | Write
    }
  • 101. Attributes With Parameters
    Attributes use parameters for initialization:
    In this example the [DllImport]attribute isinstantiated by the compiler
    A System.Runtime.InteropServices. DllImportAttribute object is created, initialized and put into the assembly metadata
    101
    [DllImport("user32.dll", EntryPoint="MessageBox")]
    public static extern int ShowMessageBox(int hWnd,
    string text, string caption, int type);

    ShowMessageBox(0, "Some text", "Some caption", 0);
  • 102. C# Language Overview(Part II)
    ?
    ?
    ?
    ?
    ?
    Questions?
    ?
    ?
    ?
    ?
    ?
    http://schoolacademy.telerik.com