0% found this document useful (0 votes)
52 views18 pages

Differences Between C# and C++: Dr. Catherine Stringfellow Dr. Stewart Carpenter

C# and C++ share many similarities in control structures like if/else statements and loops. However, C# uses the .NET Framework and namespaces while C++ uses MFCs. Additionally, C# handles memory management differently through garbage collection. Key differences include value vs reference types, properties, and constructs like abstract classes and interfaces.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views18 pages

Differences Between C# and C++: Dr. Catherine Stringfellow Dr. Stewart Carpenter

C# and C++ share many similarities in control structures like if/else statements and loops. However, C# uses the .NET Framework and namespaces while C++ uses MFCs. Additionally, C# handles memory management differently through garbage collection. Key differences include value vs reference types, properties, and constructs like abstract classes and interfaces.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 18

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 - structs 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 finalizers 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
 Interfaces use inheritance notation
 Delegates provide mechanism for passing
method references
 Exception handling includes a finally block
to release resources

You might also like