C# Starter L03-Utilities
-
Upload
mohammad-shaker -
Category
Technology
-
view
569 -
download
0
Transcript of C# Starter L03-Utilities
![Page 1: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/1.jpg)
Mohammad Shakermohammadshaker.com
C# Programming Course@ZGTRShaker
2011, 2012, 2013, 2014
C# StarterL03 – Utilities
![Page 2: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/2.jpg)
Today’s Agenda
• const and readonly
• Casting– Direct Casting
– as Keyword
• is Keyword
• enums
• Exception Handling
• UnSafe Code
• Nullable Types
• using Keyword
• Files
• Class Diagram
• Windows Forms
![Page 3: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/3.jpg)
const and readonly
![Page 4: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/4.jpg)
const and readonly
• const
– Must be initialized in the time of declaration
• readonly
– keyword is a modifier that you can use on fields. When a field declaration includes
a readonly modifier, assignments to the fields introduced by the declaration can only occur as
part of the declaration or in a constructor in the same class.
public const int WEIGHT = 1000;
public readonly int y = 5;
![Page 5: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/5.jpg)
const and readonly
• const
– Must be initialized in the time of declaration
• readonly
– keyword is a modifier that you can use on fields. When a field declaration includes
a readonly modifier, assignments to the fields introduced by the declaration can only occur as
part of the declaration or in a constructor in the same class.
public const int WEIGHT = 1000;
public readonly int y = 5;
public readonly int y = 5;
public readonly int y;
![Page 6: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/6.jpg)
const and readonly
• const
– Must be initialized in the time of declaration
• readonly
– keyword is a modifier that you can use on fields. When a field declaration includes
a readonly modifier, assignments to the fields introduced by the declaration can only occur as
part of the declaration or in a constructor in the same class.
public const int WEIGHT = 1000;
public readonly int y = 5;
public readonly int y = 5;
public readonly int y;
![Page 7: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/7.jpg)
Casting
![Page 8: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/8.jpg)
Casting
Direct Casting “as” Keyword
![Page 9: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/9.jpg)
void Example(object o){
// Castingstring s = (string)o; // 1 (Direct Casting)// -OR-string s = o as string; // 2 (Casting with “as” Keyword)// -OR-string s = o.ToString(); // 3 Calling a method
}
Casting
• What’s the difference? Output?
![Page 10: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/10.jpg)
void Example(object o){
// Castingstring s = (string)o; // 1 (Direct Casting)// -OR-string s = o as string; // 2 (Casting with “as” Keyword)// -OR-string s = o.ToString(); // 3 Calling a method
}
Casting
• What’s the difference? Output?
Number (“1”)• If (o is not a string) Throws InvalidCastException if o is not a string. • Otherwise, assigns o to s, even if o is null.
![Page 11: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/11.jpg)
void Example(object o){
// Castingstring s = (string)o; // 1 (Direct Casting)// -OR-string s = o as string; // 2 (Casting with “as” Keyword)// -OR-string s = o.ToString(); // 3 Calling a method
}
Casting
• What’s the difference? Output?
Number (“2”)• Assigns null to s if o is not a string or if o is null. • Otherwise assign to s “CAN’T BE A NULL VALUE”For this reason, you cannot use it with value types.
![Page 12: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/12.jpg)
void Example(object o){
// Castingstring s = (string)o; // 1 (Direct Casting)// -OR-string s = o as string; // 2 (Casting with “as” Keyword)// -OR-string s = o.ToString(); // 3 Calling a method
}
Casting
• What’s the difference? Output?
Number(“3”)• Causes a NullReferenceException of o is null.• Assigns whatever o.ToString() returns to s, no matter what type o is.
![Page 13: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/13.jpg)
void Example(object o){
// Castingstring s = (string)o; // 1 (Direct Casting)// -OR-string s = o as string; // 2 (Casting with “as” Keyword)// -OR-string s = o.ToString(); // 3 Calling a method
}
Casting
• What’s the difference? Output?
1. Throws InvalidCastException if o is not a string. Otherwise, assigns o to s, even if o is null.2. Assigns null to s if o is not a string or if o is null. Otherwise, assigns o to s. For this reason, you cannot use it with
value types.3. Causes a NullReferenceException of o is null. Assigns whatever o.ToString() returns to s, no matter what type o is.
![Page 14: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/14.jpg)
void Example(object o){
// I swear o is a string, C# compiler! I’m ordering you to cast, I know what am doing!string s = (string)o; // 1 (Direct Casting)// I Donna know whether o is a string or not, try a cast and tell me!string s = o as string; // 2 (Casting with “as” Keyword)// Am programming badly with this code!string s = o.ToString(); // 3 Calling a method
}
Casting
• Meaning!
![Page 15: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/15.jpg)
void Example(object o){
// I swear o is a string, C# compiler! I’m ordering you to cast, I know what am doing!string s = (string)o; // 1 (Direct Casting)// I Donna know whether o is a string or not, try a cast and tell me!string s = o as string; // 2 (Casting with “as” Keyword)// Am programming badly with this code!string s = o.ToString(); // 3 Calling a method
}
Casting
• Meaning!
“as” casting will never throw an exception, while “Direct cast” can.
![Page 16: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/16.jpg)
void Example(object o){
// I swear o is a string, C# compiler! I’m ordering you to cast, I know what am doing!string s = (string)o; // 1 (Direct Casting)// I Donna know whether o is a string or not, try a cast and tell me!string s = o as string; // 2 (Casting with “as” Keyword)// Am programming badly with this code!string s = o.ToString(); // 3 Calling a method
}
Casting
• Meaning!
“as” casting will never throw an exception, while “Direct cast” can.
“as” cannot be used with value types (non-nullable types).
![Page 17: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/17.jpg)
using System;class MyClass1{}
class MyClass2{}
public class IsTest{
public static void Main(){
object[] myObjects = new object[6];myObjects[0] = new MyClass1();myObjects[1] = new MyClass2();myObjects[2] = "hello";myObjects[3] = 123;myObjects[4] = 123.4;myObjects[5] = null;
for (int i = 0; i < myObjects.Length; ++i){
string s = myObjects[i] as string;Console.Write("{0}:", i);if (s!= null)
Console.WriteLine("'" + s + "'");else
Console.WriteLine("not a string");}
}}
Casting
![Page 18: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/18.jpg)
using System;class MyClass1{}
class MyClass2{}
public class IsTest{
public static void Main(){
object[] myObjects = new object[6];myObjects[0] = new MyClass1();myObjects[1] = new MyClass2();myObjects[2] = "hello";myObjects[3] = 123;myObjects[4] = 123.4;myObjects[5] = null;
for (int i = 0; i < myObjects.Length; ++i){
string s = myObjects[i] as string;Console.Write("{0}:", i);if (s!= null)
Console.WriteLine("'" + s + "'");else
Console.WriteLine("not a string");}
}}
Casting
0:not a string1:not a string2:'hello'3:not a string4:not a string5:not a string
![Page 19: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/19.jpg)
is Keyword
![Page 20: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/20.jpg)
“is” Keyword
• The is operator is used to check whether the run-time type of an object is
compatible with a given type.
• The is operator is used in an expression of the form:
expression is type
![Page 21: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/21.jpg)
“is” Keyword
• Let’s have the following example
class Class1{}class Class2{}
![Page 22: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/22.jpg)
“is” Keywordpublic class IsTest{
public static void Test(object o){
Class1 a;Class2 b;if (o is Class1){
Console.WriteLine("o is Class1");a = (Class1)o;// do something with a
}else if (o is Class2){
Console.WriteLine("o is Class2");b = (Class2)o;// do something with b
}else{
Console.WriteLine("o is neither Class1 nor Class2.");}
}public static void Main(){
Class1 c1 = new Class1();Class2 c2 = new Class2();Test(c1);Test(c2);Test("a string");
}}
![Page 23: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/23.jpg)
“is” Keywordpublic class IsTest{
public static void Test(object o){
Class1 a;Class2 b;if (o is Class1){
Console.WriteLine("o is Class1");a = (Class1)o;// do something with a
}else if (o is Class2){
Console.WriteLine("o is Class2");b = (Class2)o;// do something with b
}else{
Console.WriteLine("o is neither Class1 nor Class2.");}
}public static void Main(){
Class1 c1 = new Class1();Class2 c2 = new Class2();Test(c1);Test(c2);Test("a string");
}}
o is Class1o is Class2o is neither Class1 nor Class2.Press any key to continue...
![Page 24: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/24.jpg)
enum
![Page 25: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/25.jpg)
enum
• As easy as:
• And that’s it!
// You define enumerations outside of other classes.public enum DaysOfWeek { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
DaysOfWeek dayOfWeek = DaysOfWeek.Monday;
if(dayOfWeek == Wednesday){
// Do something here}
![Page 26: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/26.jpg)
Exception Handling
![Page 27: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/27.jpg)
Exception Hierarchy
![Page 28: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/28.jpg)
Exception Handling
using System;using System.IO;
class tryCatchDemo{
static void Main(string[] args){
try{
File.OpenRead("NonExistentFile");}catch(Exception ex){
Console.WriteLine(ex.ToString());}
}}
The output?
![Page 29: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/29.jpg)
Exception Handling
using System;using System.IO;
class tryCatchDemo{
static void Main(string[] args){
try{
File.OpenRead("NonExistentFile");}catch(Exception ex){
Console.WriteLine(ex.ToString());}
}}
The output?
![Page 30: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/30.jpg)
Exception Handling
using System;using System.IO;
class tryCatchDemo{
static void Main(string[] args){
try{
File.OpenRead("NonExistentFile");}catch(Exception ex){
Console.WriteLine(ex.ToString());}
}}
The output?
![Page 31: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/31.jpg)
Exception Handling – Multiple “catch”s
try{
int number = Convert.ToInt32(userInput);}catch (FormatException e){
Console.WriteLine("You must enter a number.");}catch (OverflowException e){
Console.WriteLine("Enter a smaller number.");}catch (Exception e){
Console.WriteLine("An unknown error occurred.");}
![Page 32: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/32.jpg)
Exception Handling
• Multiple catch statement?!
catch(FileNotFoundException e){
Console.WriteLine(e.ToString());}catch(Exception ex){
Console.WriteLine(ex.ToString());}
![Page 33: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/33.jpg)
Exception Handling – finally keywordclass FinallyDemo{
static void Main(string[] args){
FileStream outStream = null;FileStream inStream = null;
try{
outStream = File.OpenWrite("DestinationFile.txt");inStream = File.OpenRead("BogusInputFile.txt");
}catch(Exception ex){
Console.WriteLine(ex.ToString());}finally{
if (outStream!= null){
outStream.Close();Console.WriteLine("outStream closed.");
}if (inStream!= null){
inStream.Close();Console.WriteLine("inStream closed.");
}}
}}
![Page 34: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/34.jpg)
Throwing Exceptions
![Page 35: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/35.jpg)
Throwing Exceptions
• Like this:
• But why?
public void CauseProblemsForTheWorld() //always up to no good...{
throw new Exception("Just doing my job!");}
![Page 36: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/36.jpg)
Searching for a catch
• Caller chain is traversed backwards until a method with a matching catch clause is
found.
• If none is found => Program is aborted with a stack trace
• Exceptions don't have to be caught in C# (in contrast to Java)
![Page 37: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/37.jpg)
Creating Exceptions
![Page 38: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/38.jpg)
Creating Exceptions
• Let’s throw an exception when you over-eat Hamburgers!
• Now you can say:
public class AteTooManyHamburgersException : Exception {
public int HamburgersEaten { get; set; }
public AteTooManyHamburgersException(int hamburgersEaten){
HamburgersEaten = hamburgersEaten;}
}
try{
EatSomeHamburgers(32);}catch(AteTooManyHamburgersException hamburgerException){
Console.WriteLine(hamburgerException.HamburgersEaten + " is too many hamburgers.");}
![Page 39: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/39.jpg)
Unsafe Code!
![Page 40: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/40.jpg)
Unsafe Code!
• unsafe code == (code using explicit pointers and memory allocation) in C#
// The following fixed statement pins the location of// the src and dst objects in memory so that they will// not be moved by garbage collection. fixed (byte* pSrc = src, pDst = dst){
byte* ps = pSrc;byte* pd = pDst;
// Loop over the count in blocks of 4 bytes, copying an// integer (4 bytes) at a time:for (int n =0; n < count/4; n++){
*((int*)pd) = *((int*)ps);pd += 4;ps += 4;
}
![Page 41: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/41.jpg)
Nullable Types
![Page 42: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/42.jpg)
Nullable Types - The Concept
![Page 43: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/43.jpg)
Nullable Types
• Declaration
DateTime? startDate;
![Page 44: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/44.jpg)
Nullable Types
• Declaration
DateTime? startDate;
// You can assign a normal value to startDate like this:startDate = DateTime.Now;
![Page 45: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/45.jpg)
Nullable Types
• Declaration
DateTime? startDate;
// You can assign a normal value to startDate like this:startDate = DateTime.Now;
// or you can assign null, like this:startDate = null;
![Page 46: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/46.jpg)
Nullable Types
• Declaration
// Here's another example that declares and initializes a nullable int:int? unitsInStock = 5;
![Page 47: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/47.jpg)
Nullable Types
class Program{
static void Main(){
DateTime? startDate = DateTime.Now;bool isNull = startDate == null;Console.WriteLine("isNull: " + isNull);
}}
![Page 48: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/48.jpg)
Nullable Types
class Program{
static void Main(){
DateTime? startDate = DateTime.Now;bool isNull = startDate == null;Console.WriteLine("isNull: " + isNull);
}}
isNull: FalsePress any key to continue...
![Page 49: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/49.jpg)
Nullable Types
class Program{
static void Main(){
int i = null;}
}
![Page 50: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/50.jpg)
Nullable Types
class Program{
static void Main(){
int i = null;}
}
Compiler error, Can’t convert from null to type int
![Page 51: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/51.jpg)
using keywordusing Directive - using statement
![Page 52: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/52.jpg)
using Directive
![Page 53: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/53.jpg)
using Directive
• The using Directive has two uses:
– To permit the use of types in a namespace so you do not have to qualify the use of a type in
that namespace:
– To create an alias for a namespace or a type:
using System.Text;
using Project = PC.MyCompany.Project;
![Page 54: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/54.jpg)
using Directive
namespace PC{
// Define an alias for the nested namespace.using Project = PC.MyCompany.Project;class A{
void M(){
// Use the aliasProject.MyClass mc = new Project.MyClass();
}}namespace MyCompany{
namespace Project{
public class MyClass { }}
}}
![Page 55: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/55.jpg)
using Directive
namespace PC{
// Define an alias for the nested namespace.using Project = PC.MyCompany.Project;class A{
void M(){
// Use the aliasProject.MyClass mc = new Project.MyClass();
}}namespace MyCompany{
namespace Project{
public class MyClass { }}
}}
![Page 56: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/56.jpg)
using Directive
namespace PC{
// Define an alias for the nested namespace.using Project = PC.MyCompany.Project;class A{
void M(){
// Use the aliasProject.MyClass mc = new Project.MyClass();
}}namespace MyCompany{
namespace Project{
public class MyClass { }}
}}
![Page 57: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/57.jpg)
using Directive
namespace PC{
// Define an alias for the nested namespace.using Project = PC.MyCompany.Project;class A{
void M(){
// Use the aliasProject.MyClass mc = new Project.MyClass();
}}namespace MyCompany{
namespace Project{
public class MyClass { }}
}}
![Page 58: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/58.jpg)
using statement
![Page 59: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/59.jpg)
using statement
• C#, through the.NET Framework common language runtime (CLR), automatically
releases the memory used to store objects that are no longer required.
• The release of memory is non-deterministic; memory is released whenever the
CLR decides to perform garbage collection. However, it is usually best to release
limited resources such as file handles and network connections as quickly as
possible.
![Page 60: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/60.jpg)
using Directive
• Defines a scope, outside of which an object or objects will be disposed.
using (Font font1 = new Font("Arial", 10.0f)) {
// Use font1}
![Page 61: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/61.jpg)
using Directive
• Defines a scope, outside of which an object or objects will be disposed.
using (Font font1 = new Font("Arial", 10.0f)) {
// Use font1}
using (Font font3 = new Font("Arial", 10.0f), font4 = new Font("Arial", 10.0f)) {
// Use font3 and font4. }
![Page 62: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/62.jpg)
using Directiveclass C : IDisposable{
public void UseLimitedResource(){
Console.WriteLine("Using limited resource...");}
void IDisposable.Dispose(){
Console.WriteLine("Disposing limited resource.");}
}
class Program{
static void Main(){
using (C c = new C()){
c.UseLimitedResource();}Console.WriteLine("Now outside using statement.");Console.ReadLine();
}}
![Page 63: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/63.jpg)
using Directiveclass C : IDisposable{
public void UseLimitedResource(){
Console.WriteLine("Using limited resource...");}
void IDisposable.Dispose(){
Console.WriteLine("Disposing limited resource.");}
}
class Program{
static void Main(){
using (C c = new C()){
c.UseLimitedResource();}Console.WriteLine("Now outside using statement.");Console.ReadLine();
}}
![Page 64: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/64.jpg)
using Directiveclass C : IDisposable{
public void UseLimitedResource(){
Console.WriteLine("Using limited resource...");}
void IDisposable.Dispose(){
Console.WriteLine("Disposing limited resource.");}
}
class Program{
static void Main(){
using (C c = new C()){
c.UseLimitedResource();}Console.WriteLine("Now outside using statement.");Console.ReadLine();
}}
![Page 65: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/65.jpg)
using Directiveclass C : IDisposable{
public void UseLimitedResource(){
Console.WriteLine("Using limited resource...");}
void IDisposable.Dispose(){
Console.WriteLine("Disposing limited resource.");}
}
class Program{
static void Main(){
using (C c = new C()){
c.UseLimitedResource();}Console.WriteLine("Now outside using statement.");Console.ReadLine();
}}
![Page 66: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/66.jpg)
using Directiveclass C : IDisposable{
public void UseLimitedResource(){
Console.WriteLine("Using limited resource...");}
void IDisposable.Dispose(){
Console.WriteLine("Disposing limited resource.");}
}
class Program{
static void Main(){
using (C c = new C()){
c.UseLimitedResource();}Console.WriteLine("Now outside using statement.");Console.ReadLine();
}}
![Page 67: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/67.jpg)
using Directiveclass C : IDisposable{
public void UseLimitedResource(){
Console.WriteLine("Using limited resource...");}
void IDisposable.Dispose(){
Console.WriteLine("Disposing limited resource.");}
}
class Program{
static void Main(){
using (C c = new C()){
c.UseLimitedResource();}Console.WriteLine("Now outside using statement.");Console.ReadLine();
}}
![Page 68: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/68.jpg)
using Directiveclass C : IDisposable{
public void UseLimitedResource(){
Console.WriteLine("Using limited resource...");}
void IDisposable.Dispose(){
Console.WriteLine("Disposing limited resource.");}
}
class Program{
static void Main(){
using (C c = new C()){
c.UseLimitedResource();}Console.WriteLine("Now outside using statement.");Console.ReadLine();
}}
Using limited resource...Disposing limited resource.Now outside using statement.
![Page 69: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/69.jpg)
Type Aliases
![Page 70: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/70.jpg)
Type Aliases
• For instant naming we can use this for long type names:
• And then just using it as follow
using SB = System.Text.StringBuilder;
SB stringBuilder = new SB("InitialValue");
![Page 71: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/71.jpg)
Files
![Page 72: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/72.jpg)
Files, One Shot Reading
// Change the file path here to where you want it.String path = @”C:/Users/Mhd/Desktop/test1.txt”;
string fileContents = File.ReadAllText(path);
string[] fileContentsByLine = File.ReadAllLines(path);
![Page 73: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/73.jpg)
Files, One Shot Writing
// Change the file path here to where you want it.String path = @”C:/Users/Mhd/Desktop/test1.txt”;
string informationToWrite = "Hello world!";File.WriteAllText(path, informationToWrite);
string[] arrayOfInformation = new string[2];arrayOfInformation[0] = "This is line 1";arrayOfInformation[1] = "This is line 2";File.WriteAllLines(path, arrayOfInformation);
![Page 74: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/74.jpg)
FilesReading and Writing on a Text-based Files
![Page 75: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/75.jpg)
Files
• StreamWriter
– Object for writing a stream down
• StreamReader
– Object for reading a stream up
![Page 76: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/76.jpg)
using System;using System.IO;
public partial class Test{
public static void Main(){
string path = @"c:\temp\MyTest.txt";
// Create a file to write to.using (StreamWriter sw = new StreamWriter(path)){
sw.WriteLine("Hello");sw.WriteLine("And");sw.WriteLine("Welcome");
}
// Open the file to read from.using (StreamReader sr = new StreamReader(path)){
string s = "";while ((s = sr.ReadLine())!= null){
Console.WriteLine(s);}
}}
}
![Page 77: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/77.jpg)
using System;using System.IO;
public partial class Test{
public static void Main(){
string path = @"c:\temp\MyTest.txt";
// Create a file to write to.using (StreamWriter sw = new StreamWriter(path)){
sw.WriteLine("Hello");sw.WriteLine("And");sw.WriteLine("Welcome");
}
// Open the file to read from.using (StreamReader sr = new StreamReader(path)){
string s = "";while ((s = sr.ReadLine())!= null){
Console.WriteLine(s);}
}}
}
HelloAndWelcomePress any key to continue...
![Page 78: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/78.jpg)
using System;using System.IO;
public partial class Test{
public static void Main(){
string path = @"c:\temp\MyTest.txt";
// Create a file to write to.using (StreamWriter sw = new StreamWriter(path)){
sw.WriteLine("Hello");sw.WriteLine("And");sw.WriteLine("Welcome");
}
// Open the file to read from.using (StreamReader sr = new StreamReader(path)){
string s = "";while ((s = sr.ReadLine())!= null){
Console.WriteLine(s);}
}}
}
HelloAndWelcomePress any key to continue...
![Page 79: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/79.jpg)
using System;using System.IO;
class Test{
public static void Main(){
string path = @"c:\temp\MyTest.txt";if (!File.Exists(path)){
// Create a file to write to.using (StreamWriter sw = File.CreateText(path)){
sw.WriteLine("Hello");sw.WriteLine("And");sw.WriteLine("Welcome");
}}
// Open the file to read from.using (StreamReader sr = File.OpenText(path)){
string s = "";while ((s = sr.ReadLine())!= null){
Console.WriteLine(s);}
}}
}
![Page 80: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/80.jpg)
using System;using System.IO;
class Test{
public static void Main(){
string path = @"c:\temp\MyTest.txt";if (!File.Exists(path)){
// Create a file to write to.using (StreamWriter sw = File.CreateText(path)){
sw.WriteLine("Hello");sw.WriteLine("And");sw.WriteLine("Welcome");
}}
// Open the file to read from.using (StreamReader sr = File.OpenText(path)){
string s = "";while ((s = sr.ReadLine())!= null){
Console.WriteLine(s);}
}}
}
![Page 81: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/81.jpg)
using System;using System.IO;
class Test{
public static void Main(){
string path = @"c:\temp\MyTest.txt";if (!File.Exists(path)){
// Create a file to write to.using (StreamWriter sw = File.CreateText(path)){
sw.WriteLine("Hello");sw.WriteLine("And");sw.WriteLine("Welcome");
}}
// Open the file to read from.using (StreamReader sr = File.OpenText(path)){
string s = "";while ((s = sr.ReadLine())!= null){
Console.WriteLine(s);}
}}
}
![Page 82: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/82.jpg)
using System;using System.IO;
class Test{
public static void Main(){
string path = @"c:\temp\MyTest.txt";if (!File.Exists(path)){
// Create a file to write to.using (StreamWriter sw = File.CreateText(path)){
sw.WriteLine("Hello");sw.WriteLine("And");sw.WriteLine("Welcome");
}}
// Open the file to read from.using (StreamReader sr = File.OpenText(path)){
string s = "";while ((s = sr.ReadLine())!= null){
Console.WriteLine(s);}
}}
}
![Page 83: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/83.jpg)
using System;using System.IO;
class Test{
public static void Main(){
string path = @"c:\temp\MyTest.txt";if (!File.Exists(path)){
// Create a file to write to.using (StreamWriter sw = File.CreateText(path)){
sw.WriteLine("Hello");sw.WriteLine("And");sw.WriteLine("Welcome");
}}
// Open the file to read from.
using (StreamReader sr = File.OpenText(path)){
string s = "";while ((s = sr.ReadLine())!= null){
Console.WriteLine(s);}
}}
}
![Page 84: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/84.jpg)
Reading and Writing on a Binary FilesBinaryWriter and BinaryReader
// Change the file path here to where you want it.String path = @”C:/Users/Mhd/Desktop/test1.txt”;
FileStream fileStream = File.OpenWrite(path);BinaryWriter binaryWriter = new BinaryWriter(fileStream);
binaryWriter.Write(2);binaryWriter.Write("Hello");
binaryWriter.Flush();binaryWriter.Close();
![Page 85: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/85.jpg)
Class Diagram
![Page 86: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/86.jpg)
Class Diagram
![Page 87: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/87.jpg)
![Page 88: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/88.jpg)
![Page 89: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/89.jpg)
Windows Forms
![Page 90: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/90.jpg)
Windows Forms
![Page 91: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/91.jpg)
To learn more about Windows Forms,visit my C++.NET course @
http://www.slideshare.net/ZGTRZGTR/exactly the same as C#
![Page 92: C# Starter L03-Utilities](https://reader033.fdocuments.in/reader033/viewer/2022052505/554ebbcdb4c905de468b4784/html5/thumbnails/92.jpg)
That’s it for today!