Differences between C# and C++ Dr. Catherine Stringfellow Dr. Stewart Carpenter

advertisement

Differences between

C# and C++

Dr. Catherine Stringfellow

Dr. Stewart Carpenter

.

NET Framework Class Library and Namespaces

 In both C++ and C#, one can develop

Console and Windows applications

 Window apps in C++ use MFCs, in C# use the FCL for the .NET platform

 FCL is composed of many namespaces using System.Windows.Forms;

Control Structures

 if, if-else, switch similar to C++

 Loops similar to C++

 But there is a foreach for arrays

Math Class

Class Math is located in namespace

System (unnecessary to add an assembly reference)

 Using methods of static classes

ClassName.MethodName( argument1, arument2 , … )

 Example:

Math.Sqrt (900.0)

 Constants

 Math.PI

= 3.1415926535…

Type Promotion

 Implicit Conversion

 Coercion of arguments to a higher type when passed to methods or in mixed-type expressions;

 Explicit Conversion

 Done with cast or class Convert in namespace

System

 Cast Example: int result = Square ( ( int ) y );

Value and Reference Types

 Value types

 Contain data of the specified type

Built in types (int, float, double,…)

 Programmer created struct s and enumerations

 Reference types

 Contain an address

 Built-in ( array, object and string )

 Programmer created – Classes, Interfaces and Delegates

Passing Arguments by Value vs. by Reference

 Value types are passed by value and reference types are passed by reference by default

 To pass a value type by reference so you can modify the original variable?

Use the ref keyword

• with variables already initialized

Use the out keyword

• when the called method will initialize it

Declaring Arrays

 Must use new operator to allocate dynamically the number of elements in the array int [] x; // declare reference to an array x = new int [ 10 ]; // dynamically allocate array

Array Methods and Properties

 Since sorting data is important in many applications, .NET Framework includes high-speed sorting capabilities

// sort elements in array a

Array.Sort( x );

// Determine number of elements in x by property x.Length

Multiple-Subscripted Arrays

 Rectangular arrays – syntax a little different from C++

 Jagged Arrays

 An array of arrays of different lengths

// declaration of rectangular array int [,] array1 = new int [5,10];

// declaration and initialization of jagged array int [][] array2 = new int [ 3 ][]; array2[ 0 ] = new int [] { 1 , 2 }; array2[ 1 ] = new int [] { 3 }; array2[ 2 ] = new int [] { 4 , 5 , 6 };

foreach Repetition Structure

 The foreach repetition structure is used to iterate through values in arrays

 No counter

 A variable is used to represent the value of each element foreach ( int grade in gradeArray )

{ if ( grade < lowGrade ) lowGrade = grade;

}

Initializing Class Objects:

Constructors

 If the constructor does not explicitly initialize data members, the data members are initialized by default

Primitive numeric types are set to 0

Boolean types are set to false

 Reference types are set to null

Properties

 Public properties allow clients to:

 Get (obtain the values of) private data

• and may control formatting and display

 Set (assign values to) private data

• and may scrutinize attempts to modify value

class Time

{ private int hour;

// property Hour public int Hour

{ get

{ return hour; }

} set

{ hour = ( ( value >= 0 && value < 24 ) ? value : 0 ); }

}

Use it in caller as cout << time.Hour; or time.Hour = 5;

Garbage Collection

 When objects are no longer referenced, the

CLR performs garbage collection

 Use finalizer s in conjunction with the garbage collector to release resources (database connections, file access, etc.) explicitly

ToString

 Everyone in C#.NET community uses

ToString to obtain an object’s string representation.

//Method of class Point to return string representation of Point public override string ToString ( )

{ return “(" + x + ", " + y + “)" ;

}

// call method to display new point value string output += "\n\nThe new location of point is " + point;

Other “interesting” variations from familiar C++ constructs

 abstract classes use keyword abstract sealed classes that cannot be overridden

Interface s use inheritance notation

Delegate s provide mechanism for passing method references

Exception handling includes a finally block to release resources

Download