ITF11006.NET The Basics. Data Types – Value Types – Reference Types Flow Control – Conditional...

Post on 13-Dec-2015

218 views 0 download

Tags:

Transcript of ITF11006.NET The Basics. Data Types – Value Types – Reference Types Flow Control – Conditional...

ITF11006 .NET

The Basics

The Basics• Data Types

– Value Types– Reference Types

• Flow Control– Conditional– Loop

• Miscellaneous– Enumerations– Namespaces

• Class / Struct– Data Members– Functional Mem

• Base Classes– System.Object– System.String

Variables/Constants

• Syntax[modifier] type identifier [= expression];

• Scope

– Class/Block

• Constants[modifier] const type identifier [= constant-expression];

• Type Inferencevar identifier [= expression];

Predefined Data Types

• Value Types

• Reference Types

Predefined Data Types

• Value Types

– Integer Types

– Floating Point Types

– Decimal Type

– Boolean Type

– Character Type

Integer Types

C# data type Description Class name Range

sbyte A 8-bit signed integer. System.SByte -128:127

short A 16-bit signed integer. System.Int16 -32.768: 32.767

int A 32-bit signed integer. System.Int32 -2.147.483.648: 2.147.483.647

long A 64-bit signed integer. System.Int64 -9.223.372.036.854.775.808: 9.223.372.036.854.775.807

byte An 8-bit unsigned integer. System.Byte 0:255

ushort A 16-bit unsigned integer. System.UInt16 0:65535

uint A 32-bit unsigned integer. System.UInt32 0:4.294.967.295

ulong A 64-bit unsigned integer. System.UInt64 0:18.446.744.073.709.551.615

Floating Point

C# data type Description Class name Significant fig. Range

float A single-precision (32-bit) floating-point number.

System.Single 7 +1.5x10-45 to +3.4x1038

double A double-precision (64-bit) floating-point number.

System.Double 15/16 +5.0x10-324 to +1.7x10308

Decimal Type

C# data type Description Class name Significant fig. Range

decimal A 96-bit decimal value.(128 bit space!)

System.Decimal 28 +1.0x10-28 to +7.9x1028

Boolean Type

C# data type Description Class name Range

bool Logical true or false System.Boolean true or false

Character TypeC# data type Description Class name

char 16 bits. Represents a single (Unicode) character System.Char

Nullable Types (http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=VS.100).aspx)

• T? orSystem.Nullable(Of T)

• Ordinary type plus null

Predefined Reference Types

• Object• String

Flow Control• Conditional

– if– switch

• Loop– for– while– do..while– foreach

• Jump– goto– break– continue– return

Conditional Statements

• if if (expression) statement1 [else statement2]

• switch switch (expression){

case constant-expression:

statement

jump-statement

[default:

statement

jump-statement]

}

Loops

• for for ([initializers]; [expression]; [iterators]) statement

• while while (expression) statement

• do..while do statement while (expression);

• foreach foreach (type identifier in expression) statement

Jump Statements

• goto• break• continue• return• (throw)

Enumerations

• enum[modifiers] enum identifier [:base-type]

{enumerator-list} • Inherits from System.Enum• Flags Attribute• Use enumerations

Namespaces

• Logical grouping of functionality• <company>.<technology/sw package>• Using directive

Class (/Struct)

• Data Members– Fields– Constants– Events

• Function Members– Methods– Properties– Constructor– Destructor– Operators– Indexers

Methods

• syntax[modifiers] return-type method-name([formal-parameter-list]) { statement(s)}

• Named Argumentsstring FullName(string firstName, string lastName)…

FullName(“Ole”, “Olsen”);FullName(lastName: “Olsen”, firstName: “Ole”);

• Optional Arguments

• Method Overloading

Properties

• syntax[modifiers] type identifier {

set {accessor-body} get {accessor-body}

}

• Auto-Implementedpublic string Age(get; private set;)

• Choosing Between Properties and Methodshttp://msdn.microsoft.com/en-us/library/ms229054.aspx

Construction and Disposal

• Constructors– Instance– Class– Calling

• Destructor– Why– How (pattern)

• Dispose vs. Close

Operators

• Operator Overloading

public static Vector operator * (double lhs, Vector rhs)

{

return new Vector(lhs * rhs.x, lhs * rhs.y, lhs * rhs.z);

}

public static Vector operator * (Vector lhs, double rhs)

{

return rhs * lhs;

}

Console.WriteLine("vect2 * 2 = " + ( vect2 * 2).ToString());

Indexerspublic char this[int index]

{

get

{

...

}

set

{

...

}

}

Instance vs. Class Level

• Static• this vs. class name

Struct

• No inheritance (almost)• Constructors• Fields are sometimes declared public!• Structs are value types

Struct vs. class

• Footprint• Performance

object (System.Object)

• Methods

• Comparing for Equality– Reference Types– Value Types

Method Access

string ToString() public virtual

int GetHashCode() public virtual

bool Equals(object obj) public virtual

bool Equals(object objA, object objB) public static

bool ReferenceEquals(object objA, object objB) public static

Type GetType() public

object MemberwiseClone() protected

void Finalize() protected virtual