Common Type System. Value and reference types in C#.
AGENDA
Common Type System
The Data Type Class Hierarchy
Base class Object
Intrinsic Data Types
Variable Declaration and Initialization
Variable Declaration and Initialization
Implicitly Typed Local Variables
C# Nullable Types
C# Nullable Types and operator ??
Value and Reference Types
Value and Reference Types
Value and References Types, Assignment Operator
Parameter Modifiers
Passing Reference Types by Value and by Reference
Shallow and deep copy
References
Questions ?
831.57K
Категория: ПрограммированиеПрограммирование

Common Type System. Value and reference types in C#

1. Common Type System. Value and reference types in C#.

02.02.2013 by L.Klakovych
Reviewed: 20/03/2014 by V.Bartish

2. AGENDA










Common Type System
Data Type Class Hierarchy
class Object
Intrinsic Data Types
Variable Declaration and Initialization
Implicitly Typed Local Variables
C# Nullable Types. ?? Operator
Value and Reference Types
Shallow and deep copy

3. Common Type System

▪ CTS – common type sestem:
defines how types are declared, used, and managed in the common language
runtime,
is an important part of the runtime's support for cross-language integration.
▪ CTS performs the following functions:
Establishes a framework that helps enable cross-language integration, type safety,
and high-performance code execution.
Provides an object-oriented model that
supports the complete implementation
of many programming languages.
Defines rules that languages must follow,
which helps ensure that objects written in
different languages can interact with each
other.
Provides a library that contains the
primitive data types
( Boolean, Byte, Char, Int32, and UInt64)

4. The Data Type Class Hierarchy

A globally unique identifier (GUID )
is a statistically unique 128-bit
number

5. Base class Object

Equals() is used to compare object references,
not the state of the object. ValueType class
overrides it for the value-based comparisons.
GetHashCode() returns an int that identifies a specific
object instance.
ToString() returns a string representation of this object
- fully qualified name
MemberwiseClone() creates a shallow copy by
creating a new object, and then copying the
nonstatic fields of the current object to the new
object. If a field is a reference type, the reference is
copied but the referred object is not;

6. Intrinsic Data Types

7. Variable Declaration and Initialization

▪ It is a compiler error to make use of a local variable before
assigning an initial value.
▪ All intrinsic data types support a default constructor. We
can create a variable using the new keyword, which
automatically sets the variable to its default value:
• bool variables are set to false.
• Numeric data is set to 0 (or 0.0 in the case of floating-point data
types).
• char variables are set to a single empty character.
• BigInteger variables are set to 0. (from System.Numerics.dll)
• DateTime variables are set to 1/1/0001 12:00:00 AM.
• Object references (including strings) are set to null.

8. Variable Declaration and Initialization

▪ It is more cumbersome to use the new keyword when creating a basic
data type variable:

9. Implicitly Typed Local Variables

10. C# Nullable Types

In C#, the ? suffix notation is a shorthand for creating an instance of the
generic System.Nullable<T> structure type.

11. C# Nullable Types and operator ??

?? Operator allows you to assign a value to a nullable type if the retrieved value is
in fact null.

12. Value and Reference Types

13. Value and Reference Types

14. Value and References Types, Assignment Operator

15. Parameter Modifiers

16. Passing Reference Types by Value and by Reference

17. Shallow and deep copy

▪ If you have a class or structure that
contains only value types,
implement your Clone() method
using MemberwiseClone():
public class Point : ICloneable
{
private int x, y;
public object Clone()
{
return this.MemberwiseClone(); }
▪ If you have a custom type that
}
maintains other reference types,
you might wantpublic
to create
new
class aRectangle:
ICloneable{
public
Clone()
object that takes
intoobject
account
each
{
reference type member
variable, in
// First
get a shallow copy.
order to get a “deep
copy.”
Rectangle newRect =
(Rectangle)this.MemberwiseClone();
// Then fill in the gaps.
newRect.P1 = (Point)this.P1.Clone();
//…
return newRect;
}

18. References

▪ MSDN:Common Type System
▪ Built-in Data Types
▪ Value and Reference Types
▪ Object class

19. Questions ?

English     Русский Правила