KEMBAR78
Module 9 : using reference type variables | PPTX
Using Reference-Type
Variables
Overview
 Using Reference-Type Variables
 Using Common Reference Types
 The Object Hierarchy
 Namespaces in the .NET Framework
 Data Conversions
Using Reference-Type Variables
 Comparing Value Types to Reference Types
 Declaring and Releasing Reference Variables
 Invalid References
 Comparing Values and Comparing References
 Multiple References to the Same Object
 Using References as Method Parameters
Comparing Value Types to Reference Types
 Value types
 The variable
contains the value
directly
 Examples:
char, int
42
int mol;
mol = 42;
•
string mol;
mol = "Hello";
Hello
 Reference types
 The variable contains a
reference to the data
 Data is stored in a
separate memory area
Declaring and Releasing Reference Variables
 Declaring reference variables
coordinate c1;
c1 = new coordinate();
c1.x = 6.12;
c1.y = 4.2;
• 6.12 4.2
c1 = null;
• 6.12 4.2
 Releasing reference variables
Invalid References
 If you have invalid references
 You cannot access members or variables
 Invalid references at compile time
 Compiler detects use of uninitialized references
 Invalid references at run time
 System will generate an exception error
Comparing Values and
Comparing References
 Comparing value types
 == and != compare values
 Comparing reference types
 == and != compare the references, not the values
• 1.0 2.0
• 1.0 2.0
Different
Multiple References to the Same
Object
 Two references can refer to the same object
 Two ways to access the same object for read/write
coordinate c1= new coordinate( );
coordinate c2;
c1.x = 2.3; c1.y = 7.6;
c2 = c1;
Console.WriteLine(c1.x + " , " + c1.y);
Console.WriteLine(c2.x + " , " + c2.y);
•
2.3 7.6
•
c1
c2
Using References as Method
Parameters
 References can be used as parameters
 When passed by value, data being referenced may be
changed
static void PassCoordinateByValue(coordinate c)
{
c.x++; c.y++;
}
loc.x = 2; loc.y = 3;
PassCoordinateByValue(loc);
Console.WriteLine(loc.x + " , " + loc.y);
2 3 3 4
•
•
Using Common Reference Types
 Exception Class
 String Class
 Common String Methods, Operators, and Properties
 String Comparisons
 String Comparison Operators
Exception Class
 Exception is a class
 Exception objects are used to raise exceptions
 Create an Exception object by using new
 Throw the object by using throw
 Exception types are subclasses of Exception
String Class
 Multiple character Unicode data
 Shorthand for System.String
 Immutable
string s = "Hello";
s[0] = 'c'; // Compile-time error
Common String Methods,
Operators, and Properties
 Brackets
 Insert method
 Length property
 Copy method
 Concat method
 Trim method
 ToUpper and ToLower methods
String Comparisons
 Equals method
 Value comparison
 Compare method
 More comparisons
 Case-insensitive option
 Dictionary ordering
 Locale-specific compare options
String Comparison Operators
 The == and != operators are overloaded for strings
 They are equivalent to String.Equals and !String.Equals
string a = "Test";
string b = "Test";
if (a == b) ... // Returns true
The Object Hierarchy
 The object Type
 Common Methods
 Reflection
The object Type
 Synonym for System.Object
 Base class for all classes
Exception
SystemException
MyClass
Object
String
Common Methods
 Common methods for all reference types
 ToString method
 Equals method
 GetType method
 Finalize method
 GetHashCode method
Reflection
 You can query the type of an object
 System.Reflection namespace
 The typeof operator returns a type object
 Compile-time classes only
 GetType method in System.Object
 Run-time class information
 Namespaces in the .NET
Framework
 System.IO Namespace
 System.Xml Namespace
 System.Data Namespace
 Other Useful Namespaces
System.IO Namespace
 Access to file system input/output
 File, Directory
 StreamReader, StreamWriter
 FileStream
 BinaryReader, BinaryWriter
System.Xml Namespace
 XML support
 Various XML-related standards
System.Data Namespace
 System.Data.SqlClient
 SQL Server .NET Data Provider
 System.Data
 Consists mostly of the classes that constitute the ADO.NET
architecture
Other Useful Namespaces
 System namespace
 System.Net namespace
 System.Net.Sockets namespace
 System.Windows.Forms namespace
Data Conversions
 Converting Value Types
 Parent/Child Conversions
 The is Operator
 The as Operator
 Conversions and the object Type
 Conversions and Interfaces
 Boxing and Unboxing
Converting Value Types
 Implicit conversions
 Explicit conversions
 Cast operator
 Exceptions
 System.Convert class
 Handles the conversions internally
Parent/Child Conversions
 Conversion to parent class reference
 Implicit or explicit
 Always succeeds
 Can always assign to object
 Conversion to child class reference
 Explicit casting required
 Will check that the reference is of the correct type
 Will raise InvalidCastException if not
The is Operator
 Returns true if a conversion can be made
Bird b;
if (a is Bird)
b = (Bird) a; // Safe
else
Console.WriteLine("Not a Bird");
The as Operator
 Converts between reference types, like cast
 On error
 Returns null
 Does not raise an exception
Bird b = a as Bird; // Convert
if (b == null)
Console.WriteLine("Not a bird");
Conversions and the object Type
 The object type is the base for all classes
 Any reference can be assigned to object
 Any object variable can be assigned to any reference
 With appropriate type conversion and checks
 The object type and is operator
object ox;
ox = a;
ox = (object) a;
ox = a as object;
b = (Bird) ox;
b = ox as Bird;
Conversion and Interfaces
 An interface can only be used to access its own
members
 Other methods and variables of the class are not
accessible through the interface
Boxing and Unboxing
 Unified type system
 Boxing
 Unboxing
 Calling object methods on value types
int p = 123;
object box;
box = p;
• 123
123 p = (int)box;
Review
 Using Reference-Type Variables
 Using Common Reference Types
 The Object Hierarchy
 Namespaces in the .NET Framework
 Data Conversions

Module 9 : using reference type variables

  • 1.
  • 2.
    Overview  Using Reference-TypeVariables  Using Common Reference Types  The Object Hierarchy  Namespaces in the .NET Framework  Data Conversions
  • 3.
    Using Reference-Type Variables Comparing Value Types to Reference Types  Declaring and Releasing Reference Variables  Invalid References  Comparing Values and Comparing References  Multiple References to the Same Object  Using References as Method Parameters
  • 4.
    Comparing Value Typesto Reference Types  Value types  The variable contains the value directly  Examples: char, int 42 int mol; mol = 42; • string mol; mol = "Hello"; Hello  Reference types  The variable contains a reference to the data  Data is stored in a separate memory area
  • 5.
    Declaring and ReleasingReference Variables  Declaring reference variables coordinate c1; c1 = new coordinate(); c1.x = 6.12; c1.y = 4.2; • 6.12 4.2 c1 = null; • 6.12 4.2  Releasing reference variables
  • 6.
    Invalid References  Ifyou have invalid references  You cannot access members or variables  Invalid references at compile time  Compiler detects use of uninitialized references  Invalid references at run time  System will generate an exception error
  • 7.
    Comparing Values and ComparingReferences  Comparing value types  == and != compare values  Comparing reference types  == and != compare the references, not the values • 1.0 2.0 • 1.0 2.0 Different
  • 8.
    Multiple References tothe Same Object  Two references can refer to the same object  Two ways to access the same object for read/write coordinate c1= new coordinate( ); coordinate c2; c1.x = 2.3; c1.y = 7.6; c2 = c1; Console.WriteLine(c1.x + " , " + c1.y); Console.WriteLine(c2.x + " , " + c2.y); • 2.3 7.6 • c1 c2
  • 9.
    Using References asMethod Parameters  References can be used as parameters  When passed by value, data being referenced may be changed static void PassCoordinateByValue(coordinate c) { c.x++; c.y++; } loc.x = 2; loc.y = 3; PassCoordinateByValue(loc); Console.WriteLine(loc.x + " , " + loc.y); 2 3 3 4 • •
  • 10.
    Using Common ReferenceTypes  Exception Class  String Class  Common String Methods, Operators, and Properties  String Comparisons  String Comparison Operators
  • 11.
    Exception Class  Exceptionis a class  Exception objects are used to raise exceptions  Create an Exception object by using new  Throw the object by using throw  Exception types are subclasses of Exception
  • 12.
    String Class  Multiplecharacter Unicode data  Shorthand for System.String  Immutable string s = "Hello"; s[0] = 'c'; // Compile-time error
  • 13.
    Common String Methods, Operators,and Properties  Brackets  Insert method  Length property  Copy method  Concat method  Trim method  ToUpper and ToLower methods
  • 14.
    String Comparisons  Equalsmethod  Value comparison  Compare method  More comparisons  Case-insensitive option  Dictionary ordering  Locale-specific compare options
  • 15.
    String Comparison Operators The == and != operators are overloaded for strings  They are equivalent to String.Equals and !String.Equals string a = "Test"; string b = "Test"; if (a == b) ... // Returns true
  • 16.
    The Object Hierarchy The object Type  Common Methods  Reflection
  • 17.
    The object Type Synonym for System.Object  Base class for all classes Exception SystemException MyClass Object String
  • 18.
    Common Methods  Commonmethods for all reference types  ToString method  Equals method  GetType method  Finalize method  GetHashCode method
  • 19.
    Reflection  You canquery the type of an object  System.Reflection namespace  The typeof operator returns a type object  Compile-time classes only  GetType method in System.Object  Run-time class information
  • 20.
     Namespaces inthe .NET Framework  System.IO Namespace  System.Xml Namespace  System.Data Namespace  Other Useful Namespaces
  • 21.
    System.IO Namespace  Accessto file system input/output  File, Directory  StreamReader, StreamWriter  FileStream  BinaryReader, BinaryWriter
  • 22.
    System.Xml Namespace  XMLsupport  Various XML-related standards
  • 23.
    System.Data Namespace  System.Data.SqlClient SQL Server .NET Data Provider  System.Data  Consists mostly of the classes that constitute the ADO.NET architecture
  • 24.
    Other Useful Namespaces System namespace  System.Net namespace  System.Net.Sockets namespace  System.Windows.Forms namespace
  • 25.
    Data Conversions  ConvertingValue Types  Parent/Child Conversions  The is Operator  The as Operator  Conversions and the object Type  Conversions and Interfaces  Boxing and Unboxing
  • 26.
    Converting Value Types Implicit conversions  Explicit conversions  Cast operator  Exceptions  System.Convert class  Handles the conversions internally
  • 27.
    Parent/Child Conversions  Conversionto parent class reference  Implicit or explicit  Always succeeds  Can always assign to object  Conversion to child class reference  Explicit casting required  Will check that the reference is of the correct type  Will raise InvalidCastException if not
  • 28.
    The is Operator Returns true if a conversion can be made Bird b; if (a is Bird) b = (Bird) a; // Safe else Console.WriteLine("Not a Bird");
  • 29.
    The as Operator Converts between reference types, like cast  On error  Returns null  Does not raise an exception Bird b = a as Bird; // Convert if (b == null) Console.WriteLine("Not a bird");
  • 30.
    Conversions and theobject Type  The object type is the base for all classes  Any reference can be assigned to object  Any object variable can be assigned to any reference  With appropriate type conversion and checks  The object type and is operator object ox; ox = a; ox = (object) a; ox = a as object; b = (Bird) ox; b = ox as Bird;
  • 31.
    Conversion and Interfaces An interface can only be used to access its own members  Other methods and variables of the class are not accessible through the interface
  • 32.
    Boxing and Unboxing Unified type system  Boxing  Unboxing  Calling object methods on value types int p = 123; object box; box = p; • 123 123 p = (int)box;
  • 33.
    Review  Using Reference-TypeVariables  Using Common Reference Types  The Object Hierarchy  Namespaces in the .NET Framework  Data Conversions