SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Introduction to C#
Game Design Experience
Professor Jim Whitehead
January 22, 2008
Creative Commons Attribution 3.0
(Except imported slides, as noted)
creativecommons.org/licenses/by/3.0
Goals of the C# language
• A simple, modern, general-purpose object-oriented
langauge
• Software robustness and programmer productivity
► Strong type checking, array bounds checking, detection of use of
uninitialized variables, source code portability, automatic garbage
collection
• Useable in creating software components
• Ease of learning by programmers familiar with C++ and
Java
• Usable for embedded and large
system programming
• Strong performance, but not
intended to compete with C
or assembly language
Type II safety cans for flammables
Brief history of C#
• Originated by Microsoft as a
response to Java
► Initial public release in 2000
• Language name inspired by musical note C#
► A “step above” C/C++ (and Java)
► Linux wags: Db (D-flat, same note, different name)
• Lead designers: Anders Hejlsberg, Scott
Wiltamuth
► Hejlsberg experience: Turbo Pascal, Borland Delphi, J+
+
• C# standardized via ECMA and ISO
► However, Microsoft retains architectural control
Key language features
• Unified object system
► Everything type is an object,
even primitives
• Single inheritance
• Interfaces
► Specify methods & interfaces,
but no implementation
• Structs
► A restricted, lightweight (efficient) type
• Delegates
► Expressive typesafe function pointer
► Useful for strategy and observer design patterns
• Preprocessor directives
cking, Flickr
www.flickr.com/photos/spotsgot/1414345/
Hello World example
class Hello
{
static void Main()
{
// Use the system console object
System.Console.WriteLine(“Hello, World!”);
}
}
Creates a new object type (class) called Hello.
It contains a single method, called Main.
Main contains one line, which writes
“Hello, World!” on the display.
The method that performs this action is called WriteLine.
The WriteLine method belongs to the System.Console object.
The keyword “static” means that the method Main can be called even if there is no current
instance of the class. It’s a class method, not an instance method.
The line beginning with // is a comment, and does not execute.
Demonstration of creating Hello World inside Visual C# Express
oskay, Flickr
www.flickr.com/photos/oskay/472097903/
Syntax
• Case-sensitive
• Whitespace has no meaning
► Sequences of space, tab, linefeed,
carriage return
• Semicolons are used to
terminate statements (;)
• Curly braces {} enclose
code blocks
• Comments:
► /* comment */
► // comment
► /// <comment_in_xml>
• Automatic XML commenting facility
Peter Hellberg, Flickr
www.flickr.com/photos/peterhellberg/1858249410
Classes and Objects
• A class combines together
► Data
• Class variables
► Behavior
• Methods
• A key feature of object-
oriented languages
► Procedural languages, such as C, did not require clustering of data
and behavior
• Class/instance distinction
► Class defines variables & methods
► Need to create instanced of the class, called objects, to use
variables & methods
► Exception: static methods and variables
► Analogy: a jelly bean mold (class) can be used to create a large
number of jelly beans (objects, instances of the class)
Jelly bean mold, photo by daxiang stef
www.flickr.com/photos/daxiang/96508482/
Defining a class
• Attributes: used to add metadata to a class
► Can safely be ignored
• Access modifiers: one of
► public, private, protected, internal, protected internal
• Base-class
► Indicates (optional) parent for inheritance
• Interfaces
► Indicates (optional) interfaces that supply method signatures that need to be implemented in the
class
• Class-body
► Code for the variables and methods of the class
[attributes] [access-modifiers] class identifier [:base-class [,interface(s)]]
{ class-body }
Simple example:
class A
{
int num = 0; // a simple variable
A (int initial_num) { num = initial_num; } // set initial value of num
}
cking, Flickr
www.flickr.com/photos/spotsgot/1559060/
Inheritance
• Operationally
► If class B inherits from base class A, it gains all of the
variables and methods of A
► Class B can optionally add more variables and methods
► Class B can optionally change the methods of A
• Uses
► Reuse of class by specializing it for a specific context
► Extending a general class for more specific uses
• Interfaces
► Allow reuse of method definitions of
interface
► Subclass must implement method
definitions cking, Flickr
www.flickr.com/photos/spotsgot/1500855/
Inheritance Example
class A
{
public void display_one()
{
System.Console.WriteLine("I come from A");
}
}
class B : A
{
public void display_two()
{
System.Console.WriteLine("I come from B, child of A");
}
}
class App
{
static void Main()
{
A a = new A(); // Create instance of A
B b = new B(); // Create instance of B
a.display_one(); // I come from A
b.display_one(); // I come from A
b.display_two(); // I come from B, child of A
}
}
In-class demo of this code in Visual C# Express
Enya_z, Flickr
www.flickr.com/photos/nawuxika/270033468/
Visibility
• A class is a container for data
and behavior
• Often want to control over
which code:
► Can read & write data
► Can call methods
• Access modifiers:
► Public
• No restrictions. Members visible
to any method of any class
► Private
• Members in class A marked private only accessible to methods of class
A
• Default visibility of class variables
► Protected
• Members in class A marked protected accessible to methods of class A
and subclasses of A.
Clearly Ambiguous, Flickr
www.flickr.com/photos/clearlyambiguous/47022668/
Visibility Example
class A
{
public int num_slugs;
protected int num_trees;
…
}
class B : A
{
private int num_tree_sitters;
…
}
class C
{
…
}
• Class A can see:
► num_slugs: is public
► num_trees: is protected, but is defined
in A
• Class B can see:
► num_slugs: is public in A
► num_trees: is protected in parent A
► num_tree_sitters: is private, but is
defined in B
• Class C can see:
► num_slugs: is public in A
► Can’t see:
• num_trees: protected in A
• num_tree_sitters: private in BRaindog, Flickr
www.flickr.com/photos/raindog/
436176848/
Constructors
• Use “new” to create a new
object instance
► This causes the “constructor”
to be called
• A constructor is a method called
when an object is created
► C# provides a default constructor
for every class
• Creates object but takes no other action
► Typically classes have explicitly
provided constructor
• Constructor
► Has same name as the class
► Can take arguments
► Usually public, though not always
• Singleton design pattern makes constructor private to ensure only one
object instance is created
bucklava, Flickr
www.flickr.com/photos/9229859@N02/1985775921/
Type System
• Value types
► Directly contain data
► Cannot be null
► Allocated on the stack
• Reference types
► Contain references to objects
► May be null
► Allocated on the heap
int i = 123;int i = 123;
string s = "Hello world";string s = "Hello world";
123123ii
ss "Hello world""Hello world" Slide adapted from “Introduction
to C#”, Anders Hejlsberg
www.ecma-international.org/activities/Languages/
Introduction%20to%20Csharp.ppt
Numeral type, by threedots
www.flickr.com/photos/threedots/115805043/
Predefined Types
• C# predefined types
► Reference object, string
► Signed sbyte, short, int, long
► Unsigned byte, ushort, uint, ulong
► Character char
► Floating-point float, double, decimal
► Logical bool
• Predefined types are simply aliases for system-
provided types
► For example, int == System.Int32
Slide from “Introduction to C#”,
Anders Hejlsberg
www.ecma-international.org/activities/Languages/
Introduction%20to%20Csharp.ppt
Unusual types in C#
• Bool
► Holds a boolean value,
“true” or “false”
► Integer values do not
equal to boolean values
• 0 does not equal false
• There is no built-in
conversion from integer
to boolean
• Decimal
► A fixed precision number
up to 28 digits plus decimal point
► Useful for money calculations
► 300.5m
• Suffix “m” or “M” indicates decimal
tackyspoons, Flickr
www.flickr.com/photos/tackyspoons/812710409/
Unified type system
• All types ultimately inherit from object
► Classes, enums, arrays, delegates, structs, …
• An implicit conversion exists from any type to type
object
StreamStream
MemoryStreamMemoryStream FileStreamFileStream
HashtableHashtable doubledoubleintint
objectobject
Slide from “Introduction to C#”,
Anders Hejlsberg
www.ecma-international.org/activities/Languages/
Introduction%20to%20Csharp.ppt
Variables
• Variables must be initialized or assigned to before
first use
• Class members take a visibility operator
beforehand
• Constants cannot be changed
type variable-name [= initialization-expression];
Examples:
int number_of_slugs = 0;
string name;
float myfloat = 0.5f;
bool hotOrNot = true;
Also constants:
const int freezingPoint = 32;
Enumerations
• Base type can be any integral type (ushort, long)
except for char
• Defaults to int
• Must cast to int to display in Writeln
► Example: (int)g.gradeA
enum identifier [: base-type]
{ enumerator-list}
Example:
enum Grades
{
gradeA = 94,
gradeAminus = 90,
gradeBplus = 87,
gradeB = 84
}
Conditionals
• C# supports C/C++/Java syntax for “if” statement
• Expression must evaluate to a bool value
► No integer expressions here
• == means “equal to” for boolean comparison
► if (i == 5) // if i equals 5
► if (i = 5) // error, since i = 5 is not a boolean expression
if (expression)
statement1
[else
statement2]
Example:
if (i < 5) {
System.Console.Writeln(“i is smaller than 5”);
} else {
System.Console.Writeln(“i is greater than or equal to 5”);
}
Switch statement
• Alternative to if
• Typically use break
• Can use goto to continue to another case
switch (expression)
{
case constant-expression:
statement(s);
jump-statement
[default: statement(s);]
Example:
const int raining = 1;
const int snowing = 0;
int weather = snowing;
switch (weather) {
case snowing:
System.Console.Writeln(“It is snowing!”);
goto case raining;
case raining;
System.Console.Writeln(“I am wet!”);
break;
default:
System.Console.Writeln(“Weather OK”);
break;
}
Homework
• Read in Programming C#
► Chapter 1 (C# and the .NET Framework)
► Chapter 2 (Getting Started: "Hello World")
► Chapter 3 (C# Language Fundamentals)
• Try one of the example code samples for yourself
in Visual C# Express
► Work with your partner
• Book is available online, via O’Reilly Safari
► http://safari.oreilly.com/0596006993
► Use on-campus computer to access
More resources
• Introduction to C#
Anders Hejlsberg
► http://www.ecma-international.org/activities/Languages/Introduction%20to%20Csharp.ppt
► High-level powerpoint presentation introducing the C# language by its designer

Weitere ähnliche Inhalte

Was ist angesagt?

Advanced CPP Lecture 2- Summer School 2014 - ACA CSE IITK
Advanced CPP Lecture 2- Summer School 2014 - ACA CSE IITKAdvanced CPP Lecture 2- Summer School 2014 - ACA CSE IITK
Advanced CPP Lecture 2- Summer School 2014 - ACA CSE IITK
Pankaj Prateek
 
Advanced CPP Lecture 1- Summer School 2014 - ACA CSE IITK
Advanced CPP Lecture 1- Summer School 2014 - ACA CSE IITKAdvanced CPP Lecture 1- Summer School 2014 - ACA CSE IITK
Advanced CPP Lecture 1- Summer School 2014 - ACA CSE IITK
Pankaj Prateek
 

Was ist angesagt? (20)

Constructor and Destructor
Constructor and DestructorConstructor and Destructor
Constructor and Destructor
 
Objective c
Objective cObjective c
Objective c
 
vb.net Constructor and destructor
vb.net Constructor and destructorvb.net Constructor and destructor
vb.net Constructor and destructor
 
C# basics
 C# basics C# basics
C# basics
 
Introduction to Type Script by Sam Goldman, SmartLogic
Introduction to Type Script by Sam Goldman, SmartLogicIntroduction to Type Script by Sam Goldman, SmartLogic
Introduction to Type Script by Sam Goldman, SmartLogic
 
YAPC::EU::2011 - Mostly Lazy DBIx::Class Testing
YAPC::EU::2011 - Mostly Lazy DBIx::Class TestingYAPC::EU::2011 - Mostly Lazy DBIx::Class Testing
YAPC::EU::2011 - Mostly Lazy DBIx::Class Testing
 
Static.18
Static.18Static.18
Static.18
 
Advanced CPP Lecture 2- Summer School 2014 - ACA CSE IITK
Advanced CPP Lecture 2- Summer School 2014 - ACA CSE IITKAdvanced CPP Lecture 2- Summer School 2014 - ACA CSE IITK
Advanced CPP Lecture 2- Summer School 2014 - ACA CSE IITK
 
03class
03class03class
03class
 
Calypso underhood
 Calypso underhood Calypso underhood
Calypso underhood
 
Concept of Object-Oriented in C++
Concept of Object-Oriented in C++Concept of Object-Oriented in C++
Concept of Object-Oriented in C++
 
06.1 .Net memory management
06.1 .Net memory management06.1 .Net memory management
06.1 .Net memory management
 
Advanced CPP Lecture 1- Summer School 2014 - ACA CSE IITK
Advanced CPP Lecture 1- Summer School 2014 - ACA CSE IITKAdvanced CPP Lecture 1- Summer School 2014 - ACA CSE IITK
Advanced CPP Lecture 1- Summer School 2014 - ACA CSE IITK
 
Constructor
ConstructorConstructor
Constructor
 
Java
Java Java
Java
 
03 classes interfaces_principlesofoop
03 classes interfaces_principlesofoop03 classes interfaces_principlesofoop
03 classes interfaces_principlesofoop
 
Basic info on java intro
Basic info on java introBasic info on java intro
Basic info on java intro
 
Few simple-type-tricks in scala
Few simple-type-tricks in scalaFew simple-type-tricks in scala
Few simple-type-tricks in scala
 
Week10 packages using objects in objects
Week10 packages using objects in objectsWeek10 packages using objects in objects
Week10 packages using objects in objects
 
Introduction to Smalltalk
Introduction to SmalltalkIntroduction to Smalltalk
Introduction to Smalltalk
 

Andere mochten auch

Some photos from Bohus Malmön
Some photos from Bohus MalmönSome photos from Bohus Malmön
Some photos from Bohus Malmön
Uncle Gary
 

Andere mochten auch (18)

Summer in Sweden
Summer in SwedenSummer in Sweden
Summer in Sweden
 
Orientationprogram2013
Orientationprogram2013Orientationprogram2013
Orientationprogram2013
 
Brandnv
BrandnvBrandnv
Brandnv
 
Bornholm an island in the Baltic
Bornholm an island in the BalticBornholm an island in the Baltic
Bornholm an island in the Baltic
 
Valencia, photos from my spanish course there in 2000
Valencia, photos from my spanish course there in 2000Valencia, photos from my spanish course there in 2000
Valencia, photos from my spanish course there in 2000
 
Brandnv
BrandnvBrandnv
Brandnv
 
前端攻城獅?一堂適合小獅子的入門分享 20140729
前端攻城獅?一堂適合小獅子的入門分享 20140729前端攻城獅?一堂適合小獅子的入門分享 20140729
前端攻城獅?一堂適合小獅子的入門分享 20140729
 
The mystery with the puck who disappeared
The mystery with the puck who disappearedThe mystery with the puck who disappeared
The mystery with the puck who disappeared
 
Eee assignment
Eee assignmentEee assignment
Eee assignment
 
Gmi presentation
Gmi presentationGmi presentation
Gmi presentation
 
Some photos from Bohus Malmön
Some photos from Bohus MalmönSome photos from Bohus Malmön
Some photos from Bohus Malmön
 
データベース入門1
データベース入門1データベース入門1
データベース入門1
 
データベース入門2
データベース入門2データベース入門2
データベース入門2
 
Urisa TU-74 final
Urisa TU-74 finalUrisa TU-74 final
Urisa TU-74 final
 
溝通升級版201005
溝通升級版201005溝通升級版201005
溝通升級版201005
 
網站解剖學
網站解剖學網站解剖學
網站解剖學
 
溝通升級版201006
溝通升級版201006溝通升級版201006
溝通升級版201006
 
溝通升級版201007
溝通升級版201007溝通升級版201007
溝通升級版201007
 

Ähnlich wie Dot Net csharp Language

Java cçccfftshrssfuutrfuuggiuffus201-java.ppt
Java cçccfftshrssfuutrfuuggiuffus201-java.pptJava cçccfftshrssfuutrfuuggiuffus201-java.ppt
Java cçccfftshrssfuutrfuuggiuffus201-java.ppt
scsankalp03
 
CSharp presentation and software developement
CSharp presentation and software developementCSharp presentation and software developement
CSharp presentation and software developement
frwebhelp
 
10 - Encapsulation(object oriented programming)- java . ppt
10 - Encapsulation(object oriented programming)- java . ppt10 - Encapsulation(object oriented programming)- java . ppt
10 - Encapsulation(object oriented programming)- java . ppt
VhlRddy
 
Presentation 3rd
Presentation 3rdPresentation 3rd
Presentation 3rd
Connex
 

Ähnlich wie Dot Net csharp Language (20)

Oops
OopsOops
Oops
 
Class introduction in java
Class introduction in javaClass introduction in java
Class introduction in java
 
Objective-C for iOS Application Development
Objective-C for iOS Application DevelopmentObjective-C for iOS Application Development
Objective-C for iOS Application Development
 
Java2
Java2Java2
Java2
 
C#2
C#2C#2
C#2
 
Java
JavaJava
Java
 
C# classes objects
C#  classes objectsC#  classes objects
C# classes objects
 
C#ppt
C#pptC#ppt
C#ppt
 
unit 2 java.pptx
unit 2 java.pptxunit 2 java.pptx
unit 2 java.pptx
 
Classes, Objects and Method - Object Oriented Programming with Java
Classes, Objects and Method - Object Oriented Programming with JavaClasses, Objects and Method - Object Oriented Programming with Java
Classes, Objects and Method - Object Oriented Programming with Java
 
Oops concept on c#
Oops concept on c#Oops concept on c#
Oops concept on c#
 
[OOP - Lec 13,14,15] Constructors / Destructor and its Types
[OOP - Lec 13,14,15] Constructors / Destructor and its Types[OOP - Lec 13,14,15] Constructors / Destructor and its Types
[OOP - Lec 13,14,15] Constructors / Destructor and its Types
 
Java cçccfftshrssfuutrfuuggiuffus201-java.ppt
Java cçccfftshrssfuutrfuuggiuffus201-java.pptJava cçccfftshrssfuutrfuuggiuffus201-java.ppt
Java cçccfftshrssfuutrfuuggiuffus201-java.ppt
 
CPP15 - Inheritance
CPP15 - InheritanceCPP15 - Inheritance
CPP15 - Inheritance
 
CSharp presentation and software developement
CSharp presentation and software developementCSharp presentation and software developement
CSharp presentation and software developement
 
UsingCPP_for_Artist.ppt
UsingCPP_for_Artist.pptUsingCPP_for_Artist.ppt
UsingCPP_for_Artist.ppt
 
10 - Encapsulation(object oriented programming)- java . ppt
10 - Encapsulation(object oriented programming)- java . ppt10 - Encapsulation(object oriented programming)- java . ppt
10 - Encapsulation(object oriented programming)- java . ppt
 
Csharp introduction
Csharp introductionCsharp introduction
Csharp introduction
 
class as the basis.pptx
class as the basis.pptxclass as the basis.pptx
class as the basis.pptx
 
Presentation 3rd
Presentation 3rdPresentation 3rd
Presentation 3rd
 

Kürzlich hochgeladen

Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
kauryashika82
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
PECB
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
ciinovamais
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
QucHHunhnh
 

Kürzlich hochgeladen (20)

Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and Mode
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
SECOND SEMESTER TOPIC COVERAGE SY 2023-2024 Trends, Networks, and Critical Th...
SECOND SEMESTER TOPIC COVERAGE SY 2023-2024 Trends, Networks, and Critical Th...SECOND SEMESTER TOPIC COVERAGE SY 2023-2024 Trends, Networks, and Critical Th...
SECOND SEMESTER TOPIC COVERAGE SY 2023-2024 Trends, Networks, and Critical Th...
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptxINDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SD
 
psychiatric nursing HISTORY COLLECTION .docx
psychiatric  nursing HISTORY  COLLECTION  .docxpsychiatric  nursing HISTORY  COLLECTION  .docx
psychiatric nursing HISTORY COLLECTION .docx
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
 
fourth grading exam for kindergarten in writing
fourth grading exam for kindergarten in writingfourth grading exam for kindergarten in writing
fourth grading exam for kindergarten in writing
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
Advance Mobile Application Development class 07
Advance Mobile Application Development class 07Advance Mobile Application Development class 07
Advance Mobile Application Development class 07
 
Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptx
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 

Dot Net csharp Language

  • 1. Introduction to C# Game Design Experience Professor Jim Whitehead January 22, 2008 Creative Commons Attribution 3.0 (Except imported slides, as noted) creativecommons.org/licenses/by/3.0
  • 2. Goals of the C# language • A simple, modern, general-purpose object-oriented langauge • Software robustness and programmer productivity ► Strong type checking, array bounds checking, detection of use of uninitialized variables, source code portability, automatic garbage collection • Useable in creating software components • Ease of learning by programmers familiar with C++ and Java • Usable for embedded and large system programming • Strong performance, but not intended to compete with C or assembly language Type II safety cans for flammables
  • 3. Brief history of C# • Originated by Microsoft as a response to Java ► Initial public release in 2000 • Language name inspired by musical note C# ► A “step above” C/C++ (and Java) ► Linux wags: Db (D-flat, same note, different name) • Lead designers: Anders Hejlsberg, Scott Wiltamuth ► Hejlsberg experience: Turbo Pascal, Borland Delphi, J+ + • C# standardized via ECMA and ISO ► However, Microsoft retains architectural control
  • 4. Key language features • Unified object system ► Everything type is an object, even primitives • Single inheritance • Interfaces ► Specify methods & interfaces, but no implementation • Structs ► A restricted, lightweight (efficient) type • Delegates ► Expressive typesafe function pointer ► Useful for strategy and observer design patterns • Preprocessor directives cking, Flickr www.flickr.com/photos/spotsgot/1414345/
  • 5. Hello World example class Hello { static void Main() { // Use the system console object System.Console.WriteLine(“Hello, World!”); } } Creates a new object type (class) called Hello. It contains a single method, called Main. Main contains one line, which writes “Hello, World!” on the display. The method that performs this action is called WriteLine. The WriteLine method belongs to the System.Console object. The keyword “static” means that the method Main can be called even if there is no current instance of the class. It’s a class method, not an instance method. The line beginning with // is a comment, and does not execute. Demonstration of creating Hello World inside Visual C# Express oskay, Flickr www.flickr.com/photos/oskay/472097903/
  • 6. Syntax • Case-sensitive • Whitespace has no meaning ► Sequences of space, tab, linefeed, carriage return • Semicolons are used to terminate statements (;) • Curly braces {} enclose code blocks • Comments: ► /* comment */ ► // comment ► /// <comment_in_xml> • Automatic XML commenting facility Peter Hellberg, Flickr www.flickr.com/photos/peterhellberg/1858249410
  • 7. Classes and Objects • A class combines together ► Data • Class variables ► Behavior • Methods • A key feature of object- oriented languages ► Procedural languages, such as C, did not require clustering of data and behavior • Class/instance distinction ► Class defines variables & methods ► Need to create instanced of the class, called objects, to use variables & methods ► Exception: static methods and variables ► Analogy: a jelly bean mold (class) can be used to create a large number of jelly beans (objects, instances of the class) Jelly bean mold, photo by daxiang stef www.flickr.com/photos/daxiang/96508482/
  • 8. Defining a class • Attributes: used to add metadata to a class ► Can safely be ignored • Access modifiers: one of ► public, private, protected, internal, protected internal • Base-class ► Indicates (optional) parent for inheritance • Interfaces ► Indicates (optional) interfaces that supply method signatures that need to be implemented in the class • Class-body ► Code for the variables and methods of the class [attributes] [access-modifiers] class identifier [:base-class [,interface(s)]] { class-body } Simple example: class A { int num = 0; // a simple variable A (int initial_num) { num = initial_num; } // set initial value of num } cking, Flickr www.flickr.com/photos/spotsgot/1559060/
  • 9. Inheritance • Operationally ► If class B inherits from base class A, it gains all of the variables and methods of A ► Class B can optionally add more variables and methods ► Class B can optionally change the methods of A • Uses ► Reuse of class by specializing it for a specific context ► Extending a general class for more specific uses • Interfaces ► Allow reuse of method definitions of interface ► Subclass must implement method definitions cking, Flickr www.flickr.com/photos/spotsgot/1500855/
  • 10. Inheritance Example class A { public void display_one() { System.Console.WriteLine("I come from A"); } } class B : A { public void display_two() { System.Console.WriteLine("I come from B, child of A"); } } class App { static void Main() { A a = new A(); // Create instance of A B b = new B(); // Create instance of B a.display_one(); // I come from A b.display_one(); // I come from A b.display_two(); // I come from B, child of A } } In-class demo of this code in Visual C# Express Enya_z, Flickr www.flickr.com/photos/nawuxika/270033468/
  • 11. Visibility • A class is a container for data and behavior • Often want to control over which code: ► Can read & write data ► Can call methods • Access modifiers: ► Public • No restrictions. Members visible to any method of any class ► Private • Members in class A marked private only accessible to methods of class A • Default visibility of class variables ► Protected • Members in class A marked protected accessible to methods of class A and subclasses of A. Clearly Ambiguous, Flickr www.flickr.com/photos/clearlyambiguous/47022668/
  • 12. Visibility Example class A { public int num_slugs; protected int num_trees; … } class B : A { private int num_tree_sitters; … } class C { … } • Class A can see: ► num_slugs: is public ► num_trees: is protected, but is defined in A • Class B can see: ► num_slugs: is public in A ► num_trees: is protected in parent A ► num_tree_sitters: is private, but is defined in B • Class C can see: ► num_slugs: is public in A ► Can’t see: • num_trees: protected in A • num_tree_sitters: private in BRaindog, Flickr www.flickr.com/photos/raindog/ 436176848/
  • 13. Constructors • Use “new” to create a new object instance ► This causes the “constructor” to be called • A constructor is a method called when an object is created ► C# provides a default constructor for every class • Creates object but takes no other action ► Typically classes have explicitly provided constructor • Constructor ► Has same name as the class ► Can take arguments ► Usually public, though not always • Singleton design pattern makes constructor private to ensure only one object instance is created bucklava, Flickr www.flickr.com/photos/9229859@N02/1985775921/
  • 14. Type System • Value types ► Directly contain data ► Cannot be null ► Allocated on the stack • Reference types ► Contain references to objects ► May be null ► Allocated on the heap int i = 123;int i = 123; string s = "Hello world";string s = "Hello world"; 123123ii ss "Hello world""Hello world" Slide adapted from “Introduction to C#”, Anders Hejlsberg www.ecma-international.org/activities/Languages/ Introduction%20to%20Csharp.ppt Numeral type, by threedots www.flickr.com/photos/threedots/115805043/
  • 15. Predefined Types • C# predefined types ► Reference object, string ► Signed sbyte, short, int, long ► Unsigned byte, ushort, uint, ulong ► Character char ► Floating-point float, double, decimal ► Logical bool • Predefined types are simply aliases for system- provided types ► For example, int == System.Int32 Slide from “Introduction to C#”, Anders Hejlsberg www.ecma-international.org/activities/Languages/ Introduction%20to%20Csharp.ppt
  • 16. Unusual types in C# • Bool ► Holds a boolean value, “true” or “false” ► Integer values do not equal to boolean values • 0 does not equal false • There is no built-in conversion from integer to boolean • Decimal ► A fixed precision number up to 28 digits plus decimal point ► Useful for money calculations ► 300.5m • Suffix “m” or “M” indicates decimal tackyspoons, Flickr www.flickr.com/photos/tackyspoons/812710409/
  • 17. Unified type system • All types ultimately inherit from object ► Classes, enums, arrays, delegates, structs, … • An implicit conversion exists from any type to type object StreamStream MemoryStreamMemoryStream FileStreamFileStream HashtableHashtable doubledoubleintint objectobject Slide from “Introduction to C#”, Anders Hejlsberg www.ecma-international.org/activities/Languages/ Introduction%20to%20Csharp.ppt
  • 18. Variables • Variables must be initialized or assigned to before first use • Class members take a visibility operator beforehand • Constants cannot be changed type variable-name [= initialization-expression]; Examples: int number_of_slugs = 0; string name; float myfloat = 0.5f; bool hotOrNot = true; Also constants: const int freezingPoint = 32;
  • 19. Enumerations • Base type can be any integral type (ushort, long) except for char • Defaults to int • Must cast to int to display in Writeln ► Example: (int)g.gradeA enum identifier [: base-type] { enumerator-list} Example: enum Grades { gradeA = 94, gradeAminus = 90, gradeBplus = 87, gradeB = 84 }
  • 20. Conditionals • C# supports C/C++/Java syntax for “if” statement • Expression must evaluate to a bool value ► No integer expressions here • == means “equal to” for boolean comparison ► if (i == 5) // if i equals 5 ► if (i = 5) // error, since i = 5 is not a boolean expression if (expression) statement1 [else statement2] Example: if (i < 5) { System.Console.Writeln(“i is smaller than 5”); } else { System.Console.Writeln(“i is greater than or equal to 5”); }
  • 21. Switch statement • Alternative to if • Typically use break • Can use goto to continue to another case switch (expression) { case constant-expression: statement(s); jump-statement [default: statement(s);] Example: const int raining = 1; const int snowing = 0; int weather = snowing; switch (weather) { case snowing: System.Console.Writeln(“It is snowing!”); goto case raining; case raining; System.Console.Writeln(“I am wet!”); break; default: System.Console.Writeln(“Weather OK”); break; }
  • 22. Homework • Read in Programming C# ► Chapter 1 (C# and the .NET Framework) ► Chapter 2 (Getting Started: "Hello World") ► Chapter 3 (C# Language Fundamentals) • Try one of the example code samples for yourself in Visual C# Express ► Work with your partner • Book is available online, via O’Reilly Safari ► http://safari.oreilly.com/0596006993 ► Use on-campus computer to access
  • 23. More resources • Introduction to C# Anders Hejlsberg ► http://www.ecma-international.org/activities/Languages/Introduction%20to%20Csharp.ppt ► High-level powerpoint presentation introducing the C# language by its designer