c language overview part ii
Download
Skip this Video
Download Presentation
C# Language Overview (Part II)

Loading in 2 Seconds...

play fullscreen
1 / 102

C Language Overview Part II - PowerPoint PPT Presentation


  • 105 Views
  • Uploaded on

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. Table of Contents. Creating and Using Objects Namespaces Exceptions Handling

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'C Language Overview Part II' - reegan


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
c language overview part ii

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

table of contents
Table of Contents
  • Creating and Using Objects
  • Namespaces
  • Exceptions Handling
  • Strings and Text Processing
  • Generics
  • Collection Classes
  • Attributes
using classes and objects

Using Classes and Objects

Using the Built-In .NET Framework Classes

what is class
What is Class?
  • The formal definition of class:

Definition by Google

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.

classes
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
classes example
Classes – Example

Class Name

Attributes

(Properties and Fields)

Account

+Owner: Person

+Ammount: double

Operations

(Methods)

+Suspend()

+Deposit(sum:double)

+Withdraw(sum:double)

objects
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
objects example
Objects – Example

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

classes in c
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, …)
classes in c examples
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
declaring objects
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

using System;

...

// Define two variables of type DateTime

DateTime today;

DateTime halloween;

// Declare and initialize a structure instance

DateTime today = DateTime.Now;

fields
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)
accessing fields
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:

// Accessing read-only field

String empty = String.Empty;

// Accessing constant field

int maxInt = Int32.MaxValue;

properties
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
properties 2
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
accessing properties and fields example
Accessing Properties and Fields – Example

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));

instance and static members
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
instance and static members examples
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
methods
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)
instance methods
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

<object_name>.<method_name>(<parameters>)

calling instance methods examples
Calling Instance Methods – Examples
  • Calling instance methods of String:
  • Calling instance methods of DateTime:

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);

static methods
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

<class_name>.<method_name>(<parameters>)

calling static methods examples
Calling Static Methods – Examples

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

constructors
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
constructors 2
Constructors (2)
  • Constructor is invoked by the new operator
  • Examples:

<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);

structures
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
enumerations
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

public enum Color { Red, Green, Blue, Black }

Color color = Color.Red;

Console.WriteLine(color); // Red

color = 5; // Compilation error!

what is a namespace
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
full class names
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

<namespace_name>.<class_name>

including namespaces
Including Namespaces
  • The usingdirective in C#:
  • Allows using types in a namespace, without specifying their full name
  • Example:

instead of

using <namespace_name>

using System;

DateTime date;

System.DateTime date;

common type system cts
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
cts and different languages
CTS and Different Languages
  • CTS is common for all .NET languages
    • C#, VB.NET, J#, JScript.NET, ...
  • CTS type mappings:
value and reference types
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
value and reference types examples
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[]
what are exceptions
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
handling exceptions
Handling Exceptions
  • In C# the exceptions can be handled by thetry-catch-finallyconstruction
  • catchblocks can be used multiple times to process different exception types

try

{

// Do some work that can raise an exception

}

catch (SomeException)

{

// Handle the caught exception

}

handling exceptions example
Handling Exceptions – Example

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!");

}

}

the system exception class
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)
exception properties example
Exception Properties – Example

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}\n{1}",fe.Message, fe.StackTrace);

}

}

}

exception properties
Exception Properties
  • TheMessage property gives brief description of the problem
  • TheStackTrace property is extremely useful when identifying the reason caused the exception

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:\consoleapplication1\exceptionstest.cs:line 8

at ExceptionsTest.Main(String[] args) in c:\consoleapplication1\exceptionstest.cs:line 15

exception properties 2
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:

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)

exception hierarchy
Exception Hierarchy
  • Exceptions in .NET Framework are organized in a hierarchy
types of exceptions
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
handling exceptions45
Handling Exceptions
  • When catching an exception of a particular class, all its inheritors (child exceptions) are caught too
  • Example:
  • HandlesArithmeticExceptionandits successorsDivideByZeroExceptionandOverflowException

try

{

// Do some works that can raise an exception

}

catch (System.ArithmeticException)

{

// Handle the caught arithmetic exception

}

handling all exceptions
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:

try

{

// Do some works that can raise any exception

}

catch

{

// Handle the caught exception

}

throwing exceptions
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
how exceptions work
How Exceptions Work?

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

using throw keyword
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

throw new ArgumentException("Invalid amount!");

try

{

Int32.Parse(str);

}

catch (FormatException fe)

{

throw new ArgumentException("Invalid number", fe);

}

throwing exceptions example
Throwing Exceptions – Example

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;

}

}

what is string
What Is String?
  • Strings are sequences of characters
  • Each character is a Unicode symbol
  • Represented by the stringdata type in C# (System.String)
  • Example:

string s = "Hello, C#";

s

the system string class
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
the system string class 2
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]

string s = "Hello!";

int len = s.Length; // len = 6char ch = s[1]; // ch = \'e\'

index =

s[index] =

strings example
Strings – Example

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]);

}

}

declaring strings
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

string str1;

System.String str2;

String str3;

creating strings
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
creating strings 2
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

string s; // s is equal to null

string s = "I am a string literal!";

string s2 = s;

string s = 42.ToString();

reading and printing strings
Reading and Printing Strings
  • Reading strings from the console
    • Use the method Console.ReadLine()

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!");

comparing strings
Comparing Strings
  • A number of ways exist to compare two strings:
    • Dictionary-based string comparison
      • Case-insensitive
      • Case-sensitive

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);

comparing strings example
Comparing Strings – Example
  • Finding the first string in a lexicographical order from a given list of strings:

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);

concatenating strings
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

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"

searching in strings
Searching in Strings
  • Finding a character or substring within given string
    • First occurrence
    • First occurrence starting at given position
    • Last occurrence

IndexOf(string str)

IndexOf(string str, int startIndex)

LastIndexOf(string)

searching in strings example
Searching in Strings – Example

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] =

extracting substrings
Extracting Substrings
  • Extracting substrings
    • str.Substring(int startIndex, int length)
    • str.Substring(int startIndex)

string filename = @"C:\Pics\Rila2009.jpg";

string name = filename.Substring(8, 8);

// name is Rila2009

string filename = @"C:\Pics\Summer2009.jpg";

string nameAndExtension = filename.Substring(8);

// nameAndExtension is Summer2009.jpg

splitting strings
Splitting Strings
  • To split a string by given separator(s) use the following method:
  • Example:

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);

}

replacing and deleting substrings
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

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

changing character casing
Changing Character Casing
  • Using method ToLower()
  • Using method ToUpper()

string alpha = "aBcDeFg";

string lowerAlpha = alpha.ToLower(); // abcdefg

Console.WriteLine(lowerAlpha);

string alpha = "aBcDeFg";

string upperAlpha = alpha.ToUpper(); // ABCDEFG

Console.WriteLine(upperAlpha);

trimming white space
Trimming White Space
  • Using method Trim()
  • Using method Trim(chars)
  • Using TrimStart() and TrimEnd()

string s = " example of white space ";

string clean = s.Trim();

Console.WriteLine(clean);

string s = " \t\nHello!!! \n";

string clean = s.Trim(\' \', \',\' ,\'!\', \'\n\',\'\t\');

Console.WriteLine(clean); // Hello

string s = " C# ";

string clean = s.TrimStart(); // clean = "C# "

constructing strings
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)!

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!

changing the contents of a string stringbuilder
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

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();

}

the stringbuilde r class
The StringBuilder Class
  • StringBuilder keeps a buffer memory, allocated in advance
    • Most operations use the buffer memory and do not allocate new objects

Capacity

  • StringBuilder:
    • Length=9
    • Capacity=15

unused buffer

used buffer

(Length)

stringbuilder example
StringBuilder – Example
  • Extracting all capital letters from a string

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();

}

method tostring
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

int number = 5;

string s = "The number is " + number.ToString();

Console.WriteLine(s); // The number is 5

method tostring format
Method ToString(format)
  • We can apply specific formatting when converting objects to string
    • ToString(formatString) method

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 %

formatting strings
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)
method string format
Method String.Format()
  • Applies templates for formatting strings
    • Placeholders are used for dynamic text
    • Like Console.WriteLine(…)

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.

composite formatting
Composite Formatting
  • The placeholders in the composite formatting strings are specified as follows:
  • Examples:

{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

formatting dates
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

DateTime now = DateTime.Now;

Console.WriteLine(

"Now is {0:d.MM.yyyy hh:mm:ss}", now);

// Now is 31.11.200911:30:32

collection classes

Collection Classes

Lists, Trees, Dictionaries

what are generics
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
the list t class
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
list t simple example
List<T> – Simple Example

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

}

list t functionality
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
list t functionality 2
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
primes in an interval example
Primes in an Interval – Example

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;

}

the stack t class
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
stack t example
Stack<T> – Example
  • Using Push(), Pop() and Peek() methods

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);

}

}

the queue t class
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
queue t example
Queue<T>–Example
  • Using Enqueue() and Dequeue() methods

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);

}

}

dictionary tkey tvalue class
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
dictionary tkey tvalue class 2
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
dictionary tkey tvalue class 3
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
dictionary tkey tvalue example
Dictionary<TKey,TValue> – Example

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);

}

counting words in given text
Counting Words in Given Text

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);

}

balanced trees in net
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
sorted dictionary example
Sorted Dictionary – Example

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);

}

attributes

Attributes

What Attributes Are? How and When to Use Them?

what are attributes
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
attributes applying example
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

[Flags] // System.FlagsAttribute

public enum FileAccess

{

Read = 1,

Write = 2,

ReadWrite = Read | Write

}

attributes with parameters
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

[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);

c language overview part ii102
C# Language Overview(Part II)

?

Questions?

?

?

?

?

?

?

?

?

?

http://schoolacademy.telerik.com

ad