Download - C sharp part2
![Page 1: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/1.jpg)
Introduction to Programming in
.Net Environment
Masoud Milani
![Page 2: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/2.jpg)
Programming in C#
Part 2
![Page 3: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/3.jpg)
Introduction to Programming in .Net Environment
1-3 ©Masoud Milani
Overview
Classes
Inheritance
Abstract classes
Sealed classes
Files
Delegates
Interfaces
![Page 4: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/4.jpg)
Introduction to Programming in .Net Environment
1-4 ©Masoud Milani
Classes Members
Constants Fields Methods
parameters
Properties Indexer Operators Constructors Destructors
Overloading
![Page 5: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/5.jpg)
Introduction to Programming in .Net Environment
1-5 ©Masoud Milani
Parameters Passing Pass by value
Value types are passed by value by default
int Smallest(int a, int b) {
if (a > b) return b;
else return a;}
Change in a value parameter is not reflected in the caller
![Page 6: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/6.jpg)
Introduction to Programming in .Net Environment
1-6 ©Masoud Milani
Parameters Passing Pass by reference
out (output)
void Smaller(int a, int b, out int result){
result=a>b?b: a;}
Change in a out parameter is reflected in the caller
The function can not use the value of an out parameter before an assignment is made to it.
int a=20;int b=30;
Smaller(a, b, out sm);
sm=20
![Page 7: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/7.jpg)
Introduction to Programming in .Net Environment
1-7 ©Masoud Milani
Parameters Passing Pass by reference
ref (input and output)
void Swap(ref int a, ref int b){
int t=a;a=b;b=t;
}
Change in a ref parameter is reflected in the caller
The function can use the value of a reference parameter before an assignment is made to it.
int a=20;int b=30;
Swap(ref a, ref b);
a=30b=20
![Page 8: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/8.jpg)
Introduction to Programming in .Net Environment
1-8 ©Masoud Milani
Parameters Passing Reference types are passed by
reference by defaultpublic class ParamClass{
public int myValue;}
ParamClass p=new ParamClass();
p.myValue=9;
Console.WriteLine("Before Increment, p.myValue={0}", p.myValue);
Increment(p);
Console.WriteLine("After Increment, p.myValue={0}",
p.myValue);
static void Increment(ParamClass q){
q.myValue++;}
Before Increment, p.myValue=9
After Increment, p.myValue=10
![Page 9: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/9.jpg)
Introduction to Programming in .Net Environment
1-9 ©Masoud Milani
Variable Number of Parameters
int a=Smallest(5, 4, -3, 45, 2);
int b=Smallest(1, 2, 3);
int Smallest(params int[] a){
int smallest=int.MaxValue;foreach (int x in a)
if (x < smallest)smallest=x;
return smallest;}
![Page 10: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/10.jpg)
Introduction to Programming in .Net Environment
1-10 ©Masoud Milani
Method Overloading
More than one method with the same name can be defined for the same class
methods must have different signatures
![Page 11: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/11.jpg)
Introduction to Programming in .Net Environment
1-11 ©Masoud Milani
Operator Overloading
More than one operator with the same name can be defined for the same class
Overloaded operators must be public
Static
Precedence and associativity of the operators can not be changed.
![Page 12: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/12.jpg)
Introduction to Programming in .Net Environment
1-12 ©Masoud Milani
Operator Overloadingpublic class MyType{
public MyType(int v){
myValue=v;}
public int myValue;
public static MyType operator + (MyType x, MyType y)
{return new MyType(x.myValue +
y.myValue);}
…
}
MyType p(5);MyType q(6);
MyType s=p+q;
s += p;
![Page 13: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/13.jpg)
Introduction to Programming in .Net Environment
1-13 ©Masoud Milani
Operator Overloadingpublic class MyType{
…public static MyType operator + (MyType x, int y){
return new MyType(x.myValue + y);}
…
}
MyType p(5);
MyType s=p+7;
s += 7
![Page 14: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/14.jpg)
Introduction to Programming in .Net Environment
1-14 ©Masoud Milani
Operator Overloadingpublic class MyType{
…public static MyType operator ++ (MyType x){
x.myValue += 1;return new MyType(x.myValue + 1);
}
…
}
MyType p(5);
MyType s=p++;
![Page 15: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/15.jpg)
Introduction to Programming in .Net Environment
1-15 ©Masoud Milani
Operator Overloadingpublic class MyType{
…public static bool operator
true(MyType x){
return x.myValue !=0;}
public static bool operator false (MyType x)
{return x.myValue == 0;
}
…
}
MyType z(5);
if (z)
Console.WriteLine("true");else Console.WriteLine("false");
![Page 16: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/16.jpg)
Introduction to Programming in .Net Environment
1-16 ©Masoud Milani
Indexers
Indexers are properties that allow objects to be accessed like arrays
The accessor functions for indexers take additional parameter(s) for index
Indexers can not be declared static
Exams ex=new Exams();
ex [1] =100;Indexe
r
![Page 17: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/17.jpg)
Introduction to Programming in .Net Environment
1-17 ©Masoud Milani
Indexer
public class Exams{
public int this[int examNo]{
get{
…}set{
…}
}
Exams ex=new Exams();
ex[1]=100;ex[2]=50;
int average=ex[1] + ex[2];
![Page 18: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/18.jpg)
Introduction to Programming in .Net Environment
Exampleusing System;
/// <summary>/// A simple indexer example./// </summary>class IntIndexer{ private string[] myData;
public IntIndexer(int size) { myData = new string[size];
for (int i=0; i < size; i++) { myData[i] = "empty"; } }
1-18 ©Masoud Milani
![Page 19: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/19.jpg)
Introduction to Programming in .Net Environment
Examplepublic string this[int pos]
{ get { return myData[pos]; } set { myData[pos] = value; } }
1-19 ©Masoud Milani
Should use this keyword
![Page 20: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/20.jpg)
Introduction to Programming in .Net Environment
Examplestatic void Main(string[] args)
{ int size = 10;
IntIndexer myInd = new IntIndexer(size);
myInd[9] = "Some Value"; myInd[3] = "Another Value"; myInd[5] = "Any Value";
Console.WriteLine("\nIndexer Output\n");
for (int i=0; i < size; i++) { Console.WriteLine("myInd[{0}]: {1}", i,
myInd[i]); } }} 1-20 ©Masoud Milani
![Page 21: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/21.jpg)
Introduction to Programming in .Net Environment
OutputIndexer Output
myInd[0]: empty
myInd[1]: empty
myInd[2]: empty
myInd[3]: Another Value
myInd[4]: empty
myInd[5]: Any Value
myInd[6]: empty
myInd[7]: empty
myInd[8]: empty
myInd[9]: Some Value1-21 ©Masoud Milani
![Page 22: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/22.jpg)
Introduction to Programming in .Net Environment
1-22 ©Masoud Milani
Exercise
Write a class Exams that have 3 private integer fields exam1, exam2
and exam3
An indexer that sets or gets the value of each exam
A public property Average that returns the average of the three exams
![Page 23: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/23.jpg)
Introduction to Programming in .Net Environment
1-23 ©Masoud Milani
Exams class
public class Exams{
public Exams(int ex1, int ex2, int ex3){
…}
private int exam1;private int exam2;private int exam3;
public double Average{
…}
}
![Page 24: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/24.jpg)
Introduction to Programming in .Net Environment
1-24 ©Masoud Milani
Inheritance
Implements isA relation Student isA Person
public class Person{
public Person(string fn, string ln)
{firstName=fn;lastName=ln;
}
private string firstName;private string lastName;
}
public class Student : Person{ public Student(string fn, string ln, string mj): base(fn, ln)
{major=mj;
}
private string major;}
![Page 25: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/25.jpg)
Introduction to Programming in .Net Environment
1-25 ©Masoud Milani
Inheritance A subclass can hide the inherited members of
its superclass using the keyword new
public class Person{
… public void Show() { Console.Write("Name: {0}, {1}", lastName, firstName)}
}
public class Student : Person{
…public new void Show(){
base.Show();Console.Write("major: {0}",
major);}
}
![Page 26: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/26.jpg)
Introduction to Programming in .Net Environment
1-26 ©Masoud Milani
Inheritance
Person p = new Person("P1-F", "P1-L");p.Show();Console.WriteLine();
Student s=new Student("S1-F", "S1-L", "CS");s.Show();Console.WriteLine();
p=s;p.Show();
Name: P1-L, P1-F
Name: S1-L, S1-F
Name: S1-L, S1-F Major: CS
![Page 27: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/27.jpg)
Introduction to Programming in .Net Environment
1-27 ©Masoud Milani
Virtual Function
A class can allow its subclasses to override its member functions by declaring them virtualpublic class Person
{…
public virtual void Show() { Console.Write("Name: {0}, {1}", lastName, firstName)}
}
public class Student : Inheritance.Person{
…public override void Show(){
base.Show();Console.Write("major: {0}",
major);}
}
using namespace
the override keyword is also required.
![Page 28: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/28.jpg)
Introduction to Programming in .Net Environment
1-28 ©Masoud Milani
Virtual Function
Person p = new Person("P1-F", "P1-L");p.Show();Console.WriteLine();
Student s=new Student("S1-F", "S1-L", "CS");s.Show();Console.WriteLine();
p=s;p.Show();
Name: S1-L, S1-F Major: CS
Name: S1-L, S1-F Major: CS
Name: P1-L, P1-F
![Page 29: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/29.jpg)
Introduction to Programming in .Net Environment
1-29 ©Masoud Milani
Sealed Modifier
A sealed class is a class that can not be the base of any other class
used to prevent inheritance from the class to facilitate future class modification
A sealed method overrides an inherited virtual method with the same signature
Used to prevent further overriding of the method
![Page 30: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/30.jpg)
Introduction to Programming in .Net Environment
Exampleusing System;
sealed class MyClass
{
public int x;
public int y;
}
class MainClass
{
public static void Main()
{
MyClass mC = new MyClass();
mC.x = 110;
mC.y = 150;
Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y);
}
}1-30 ©Masoud Milani
![Page 31: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/31.jpg)
Introduction to Programming in .Net Environment
Example
class MyDerivedC: MyClass {
}
1-31 ©Masoud Milani
Complation error!
![Page 32: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/32.jpg)
Introduction to Programming in .Net Environment
1-32 ©Masoud Milani
Abstract Classes
An abstract class is a class that can not be instantiated
Abstract classes are used for reuse and structural organization of the program
Abstract classes can have abstract or specified methods
Non-abstract subclasses must override the abstract methods that they inherit
![Page 33: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/33.jpg)
Introduction to Programming in .Net Environment
1-33 ©Masoud Milani
Abstract Classes
Software requirement is given: There is no object that is only a person.
Each person is either a student or a graduate student
![Page 34: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/34.jpg)
Introduction to Programming in .Net Environment
1-34 ©Masoud Milani
Abstract Classes
public abstract class Person{
public Person(string fn, string ln){
firstName=fn;lastName=ln;
}
private string firstName;private string lastName;
public virtual void Show(){
Console.Write("Name: {0}, {1}", lastName, firstName);
}}
Error:Abstract classes can not be instantiated
Person p(“FN-1”, “LN-1”);
![Page 35: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/35.jpg)
Introduction to Programming in .Net Environment
1-35 ©Masoud Milani
Exercise
Courses
exam1exam2exam3
Average
take
sClass Grad Student
GradStudent( … )bool pass // >80void override Show()
class Student
string majordouble Average
Student( … )bool Pass // >60void override Show()
Abstract class Person
string fNamestring lName
Person(string fn, string ln)
void virtual Show()
isA
isA
![Page 36: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/36.jpg)
Introduction to Programming in .Net Environment
1-36 ©Masoud Milani
Exercise Ask the number of students
For each student ask First Name
Last Name
Major
Scores for each of three exams
Whether or not this is a graduate student
Create an appropriate student object and store it in an array
Call Show member of each array entry
![Page 37: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/37.jpg)
Introduction to Programming in .Net Environment
1-37 ©Masoud Milani
Person class
public abstract class Person{
public Person(string fn, string ln){
…}private string firstName;private string lastName;
public virtual void Show(){
…}
}
![Page 38: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/38.jpg)
Introduction to Programming in .Net Environment
1-38 ©Masoud Milani
Student class
public class Student : Inheritance.Person{
public Student(string fn, string ln, string mj,
int ex1, int ex2, int ex3):base(fn, ln)
{…
}private string major;
public override void Show(){
…}
public virtual bool Pass{
get{
…
}}protected Exams scores;
public double Average{
get{
…}
}}
![Page 39: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/39.jpg)
Introduction to Programming in .Net Environment
1-39 ©Masoud Milani
GradStudent class
public class GradStudent : Inheritance.Student{
public GradStudent(string fn, string ln, string mj,
int ex1, int ex2, int ex3): base(fn, ln, mj, ex1, ex2, ex3)
{…
}
public override bool Pass{
get{
…}
}}
![Page 40: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/40.jpg)
Introduction to Programming in .Net Environment
1-40 ©Masoud Milani
Files A file is a sequential sequence of bytes
Applicable classes Text Input
StreamReader
Text Output StreamWriter
Input/Output FileStream
NameSpace System.IO
![Page 41: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/41.jpg)
Introduction to Programming in .Net Environment
1-41 ©Masoud Milani
StreamWriter
void WriteText(){
int[] data=new int[5]{1,2,3,4,5};
StreamWriter outFile=new StreamWriter("myOutFile.txt");
for(int i=0; i<data.Length; i++)outFile.WriteLine("data[{0}]={1}", i, data[i]);
outFile.Close();
}
myOutFile:data[0]=1data[1]=2data[2]=3data[3]=4data[4]=5
![Page 42: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/42.jpg)
Introduction to Programming in .Net Environment
1-42 ©Masoud Milani
StreamReader Similar to StreamWriter
Check for end of stream using the method Peek()
StreamReader inpTextFile=new StreamReader("myOutFile.txt");
while(inpTextFile.Peek() >=0){
string nextLine=inpTextFile.ReadLine();Console.WriteLine(int.Parse(nextLine.Substring(nextLine.IndexOf("=")
+1)));} inpTextFile.Close();
![Page 43: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/43.jpg)
Introduction to Programming in .Net Environment
1-43 ©Masoud Milani
Exercise
Modify the previous program to save and retrieve information
![Page 44: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/44.jpg)
Introduction to Programming in .Net Environment
1-44 ©Masoud Milani
FileStream
To open a FileStream, we need to specify
Physical path
File Mode
File Access
![Page 45: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/45.jpg)
Introduction to Programming in .Net Environment
1-45 ©Masoud Milani
FileMode Enumeration
Append Opens the file if it exists and seeks to the
end of the file, or creates a new file
Create A new file should be created. If the file
already exists, it will be overwritten.
Open An existing file should be opened
![Page 46: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/46.jpg)
Introduction to Programming in .Net Environment
1-46 ©Masoud Milani
FileAccess Enumeration
Read Read access
ReadWrite Read and write access
Write Write access
![Page 47: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/47.jpg)
Introduction to Programming in .Net Environment
1-47 ©Masoud Milani
Formatter
Direct reading to and Writing from FileStreams is very difficult
Must read and write byte by byte
Use a formatter to format objects that are to be written to the FileStream
BinaryFormatter Formats objects in binary
![Page 48: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/48.jpg)
Introduction to Programming in .Net Environment
1-48 ©Masoud Milani
Formatter
Methods Writing
Serialize
Reading Deserialize
Exceptions: SerializationException
![Page 49: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/49.jpg)
Introduction to Programming in .Net Environment
1-49 ©Masoud Milani
Serialization
string myString="string1";int myInt=16;int[] myData=new int[5]{1,2,3,4,5};
FileStream f=new FileStream("bFile", FileMode.Create, FileAccess.Write);
BinaryFormatter formatter=new BinaryFormatter();
formatter.Serialize(f, myString);formatter.Serialize(f, myInt);formatter.Serialize(f, myData);
f.Close();
![Page 50: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/50.jpg)
Introduction to Programming in .Net Environment
1-50 ©Masoud Milani
[Serializable()]
![Page 51: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/51.jpg)
Introduction to Programming in .Net Environment
1-51 ©Masoud Milani
Deserialization
string myString="string1";int myInt=16;int[] myData=new int[5]{1,2,3,4,5};
f=new FileStream("bFile", FileMode.Open, FileAccess.Read);
myString=(string)formatter.Deserialize(f);myInt=(int)formatter.Deserialize(f);newdata=(int[])formatter.Deserialize(f);
Console.WriteLine("myString={0}", myString);Console.WriteLine("myInt={0}", myInt);
![Page 52: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/52.jpg)
Introduction to Programming in .Net Environment
1-52 ©Masoud Milani
Exercise
Modify the previous program to save and retrieve information using a Binary Formatter
![Page 53: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/53.jpg)
Introduction to Programming in .Net Environment
1-53 ©Masoud Milani
Exception Handling
Exceptions are raised when a program encounters an illegal computation
Division by zero
Array index out of range
Read beyond end of file
….
![Page 54: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/54.jpg)
Introduction to Programming in .Net Environment
1-54 ©Masoud Milani
Exception Handling A method that is unable to perform a
computation throws an exception object
Exceptions can be caught by appropriate routines called exception handlers
Exception handlers receive the exception object containing information regarding the error
Exception objects are instances of classes that are derived from Exception class
![Page 55: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/55.jpg)
Introduction to Programming in .Net Environment
1-55 ©Masoud Milani
Exception Handling try statement allows for catching exceptions
in a block of code
try statement has one or more catch clauses to catch exceptions that are raised in the protected block
int[] a= new int[20];
try{
Console.WriteLine(a[20]);}catch (Exception e){
Console.WriteLine(e.Message);}
Index was outside the bounds of the array
![Page 56: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/56.jpg)
Introduction to Programming in .Net Environment
1-56 ©Masoud Milani
Exception Handling
A try block can have multiple catch clauses
The catch clauses are searched to find the first clause with a parameter that matches the thrown exception
The program continues execution with the first statement that follows the try-catch-finally construct
![Page 57: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/57.jpg)
Introduction to Programming in .Net Environment
1-57 ©Masoud Milani
Exception Handling
try statement has an optional finally clause that executes
When an exception is thrown and the corresponding catch clause is executed
When the protected block executes without raising throwing exception
![Page 58: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/58.jpg)
Introduction to Programming in .Net Environment
1-58 ©Masoud Milani
Exception Handling
int[] a= new int[20];
try{
Console.WriteLine(a[2]);}catch (Exception e){
Console.WriteLine(e.Message);}finally{ Console.WriteLine(“Finally we are done!");}
Finally we are done!
![Page 59: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/59.jpg)
Introduction to Programming in .Net Environment
1-59 ©Masoud Milani
Exception Handling
Exception classes IndexOutOfRangeException Class
when an attempt is made to access an element of an array with an index that is outside the bounds of the array. This class cannot be inherited
DivideByZeroException Class The exception that is thrown when there is
an attempt to divide an integral or decimal value by zero.
![Page 60: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/60.jpg)
Introduction to Programming in .Net Environment
1-60 ©Masoud Milani
Exception Handling Exception classes
InvalidCastException Class The exception that is thrown for invalid
casting or explicit conversion
EndOfStreamException Class The exception that is thrown when
reading is attempted past the end of a stream
For a list of Exception classes search for “SystemException Hierarchy” in MSDN.Net
![Page 61: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/61.jpg)
Introduction to Programming in .Net Environment
1-61 ©Masoud Milani
Programmer Defined Exceptions
Programmer defined exception classes must inherit from
ApplicationException class
Provide at least one constructor to set the message property
public class MyException : System.ApplicationException{
public MyException(string message):base(message){}
}
![Page 62: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/62.jpg)
Introduction to Programming in .Net Environment
1-62 ©Masoud Milani
Programmer Defined Exceptions
public static int g(int a, int b){ // adds positive numbers
if (a <0){
MyException e=new MyException("1st parameter is negative");
throw(e);}if (b <0){
MyException e=new MyException("2nd dparameter is negative");
throw(e);}return a+b;
} try{
Console.WriteLine("g(4, -5)={0}", g(4, -5));}catch (Exception e)
Console.WriteLine(e.Message);}
![Page 63: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/63.jpg)
Introduction to Programming in .Net Environment
1-63 ©Masoud Milani
Delegates
A delegate is a class that has only one or more methods
Allows methods to be treated like objects
delegate int D1(int i, int j);
![Page 64: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/64.jpg)
Introduction to Programming in .Net Environment
1-64 ©Masoud Milani
Delegates
delegate int D1(int i, int j);
public static int add(int a, int b){
Console.WriteLine(a+b);return a+b;
}
public static int mult(int a, int b){
Console.WriteLine(a*b);return a*b
}
static void Main(string[] args){
D1 d1=new D1(add);D1 d2=new D1(mult);
d1=d1 + d2;d1(5, 5);
}
1025
![Page 65: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/65.jpg)
Introduction to Programming in .Net Environment
1-65 ©Masoud Milani
Delegates
delegate int D1(int i, int j);
public static int add(int a, int b){
Console.WriteLine(a+b);return a+b;
}
public static int mult(int a, int b){
Console.WriteLine(a*b);return a*b
}
static void Main(string[] args){
D1 d1=new D1(add);D1 d2=new D1(mult);
d1=d1 + d2;
f(d1);}
1025
public static void f(D1 d){
d(5,5);}
![Page 66: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/66.jpg)
Introduction to Programming in .Net Environment
1-66 ©Masoud Milani
Exercise Write a sort method that accepts an array of
integer and a boolean delegate, compare, and sorts the array according to the delegate
public static void sort(int[] data, CompareDelegate Compare){
for (int i=0; i<data.Length; ++i)for(int j=i+1; j<data.Length; j++)
if (Compare(data[i],data[j])){
int t=data[i];data[i]=data[j];data[j]=t;
}}
![Page 67: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/67.jpg)
Introduction to Programming in .Net Environment
1-67 ©Masoud Milani
Interfaces
An interface specifies the members that must be provided by classes that implement them
An Interface can define methods, properties, events, and indexers
The interface itself does not provide implementations for the members that it defines
![Page 68: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/68.jpg)
Introduction to Programming in .Net Environment
1-68 ©Masoud Milani
Interfaces
To add an interface, add a class and change it in the editor
interface IPublication{
string Title{
get;set;
}
string Publisher{
get;set;
}
void Display();}
![Page 69: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/69.jpg)
Introduction to Programming in .Net Environment
1-69 ©Masoud Milani
Interfaces
public class Book: IPublication{
public Book(string title, string author,
string publisher){
Title=title;Author=author;Publisher=publisher;
}
private string author;private string title;private string publisher;
public string Author{
…}
public string Title{
…}
public string Publisher{
…}
public void Display(){
…}
}
![Page 70: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/70.jpg)
Introduction to Programming in .Net Environment
1-70 ©Masoud Milani
Interfaces
static public void Display(IPublication[] p){
for (int i=0; i<p.Length; ++i)p[i].Display();
}
static void Main(string[] args){IPublication[] publications= new
IPublication[2];
publications[0] = new Book("t0", "a0", "p0");
publications[1] = new Magazine("t1", "a1");
Display(publications);}
public class Magazine : Interfaces.IPublication{
…}
![Page 71: C sharp part2](https://reader035.vdocument.in/reader035/viewer/2022081507/554ebbedb4c905de468b47ab/html5/thumbnails/71.jpg)
Introduction to Programming in .Net Environment
1-71 ©Masoud Milani
Interfaces
An interface can have only public members
A class that is implementing an interface must implement all its members
A class can implement multiple interfaces