0% found this document useful (0 votes)
35 views

C# (C Sharp)

C# is an object-oriented programming language developed by Microsoft as part of .NET. It was designed to be simple, modern, and general-purpose. C# aims to have strong typing, bounds checking, and automatic garbage collection for robustness. It also aims to support internationalization and be suitable for both large and small applications. C# differs from C/C++ by having no global variables, requiring boolean expressions, and disallowing implicit conversions between integers and booleans. Key features include garbage collection, interfaces without multiple inheritance, properties for access control, and full reflection capabilities.

Uploaded by

shivuhc
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
35 views

C# (C Sharp)

C# is an object-oriented programming language developed by Microsoft as part of .NET. It was designed to be simple, modern, and general-purpose. C# aims to have strong typing, bounds checking, and automatic garbage collection for robustness. It also aims to support internationalization and be suitable for both large and small applications. C# differs from C/C++ by having no global variables, requiring boolean expressions, and disallowing implicit conversions between integers and booleans. Key features include garbage collection, interfaces without multiple inheritance, properties for access control, and full reflection capabilities.

Uploaded by

shivuhc
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 7

C# ( C Sharp )

C# Introduction

C# is an object-oriented programming language developed by


Microsoft as part of the .NET initiative and later approved as a
standard by ECMA (European Computer Manufacturers
Association) and ISO (International Organization for
Standardization )
Anders Hejlsberg leads development of the C# language, which
has a procedural, object-oriented syntax based on C++ and
includes aspects of several other programming languages (most
notably Delphi and Java) with a particular emphasis on
simplification
C# is intended to be a simple, modern, general-purpose, objectoriented programming language
Because software robustness, durability and programmer
productivity are important. The language should include strong
type checking, array bounds checking, detection of attempts to
use uninitialized variables, source code portability, and
automatic garbage collection.

Design goals
The language is intended for use in developing software components
that can take advantage of distributed environments
Programmer portability is very important, especially for those
programmers already familiar with C and C++
Support for internationalization is very important
C# is intended to be suitable for writing applications for both hosted
and embedded systems, ranging from the very large that use
sophisticated operating systems, down to the very small having
dedicated functions
Although C# applications are intended to be economical with
regards to memory and processing power requirements, the
language was not intended to compete directly on performance and
size with C or assembly language
C#'s principal designer and lead architect at Microsoft is
Anders Hejlsberg
His previous experience in programming language and framework
design (Visual J++, Borland Delphi, Turbo Pascal) can be readily
seen in the syntax of the C# language, as well as throughout the
Common Language Runtime (CLR) core

Architectural history
C# differs from C and C++ in many ways, including:
There are no global variables or functions. All methods and
members must be declared within classes
Local variables cannot shadow variables of the enclosing block,
unlike C and C++. Variable shadowing is often considered
confusing by C++ texts
C# supports a strict boolean type, bool. Statements that take
conditions, such as while and if, require an expression of a
boolean type. While C++ also has a boolean type, it can be freely
converted to and from integers, and expressions such as if(a)
require only that a is convertible to bool, allowing a to be an int,
or a pointer
C# disallows this 'integer meaning true or false' approach on the
grounds that forcing programmers to use expressions that return
exactly bool prevents certain types of programming mistakes

Features
In C#, pointers can only be used within blocks specifically marked
as unsafe, and programs with unsafe code need appropriate
permissions to run. Most object access is done through safe
references, which cannot be made invalid. An unsafe pointer can
point to an instance of a value-type, array, string, or a block of
memory allocated on a stack. Code that is not marked as unsafe
can still store and manipulate pointers through the System.IntPtr
type, but cannot dereference them
Managed memory cannot be explicitly freed, but is automatically
garbage collected. Garbage collection addresses memory leaks.
C# also provides direct support for deterministic finalization with
the using statement (supporting the
Resource Acquisition Is Initialization idiom)
Multiple inheritance is not supported, although a class can
implement any number of interfaces. This was a design decision
by the language's lead architect to avoid complication, avoid
dependency hell and simplify architectural requirements
throughout CLI

C# is more typesafe than C++. The only implicit conversions by


default are safe conversions, such as widening of integers and
conversion from a derived type to a base type. This is enforced at
compile-time, during JIT, and, in some cases, at runtime. There
are no implicit conversions between Booleans and integers and
between enumeration members and integers (except 0, which can
be implicitly converted to an enumerated type), and any userdefined conversion must be explicitly marked as explicit or
implicit, unlike C++ copy constructors (which are implicit by
default) and conversion operators
Enumeration members are placed in their own namespace.
Accessors called properties can be used to modify an object with
syntax that resembles C++ member field access. In C++,
declaring a member public enables both reading and writing to
that member, and accessor methods must be used if more finegrained control is needed. In C#, properties allow control over
member access and data validation.
Full type reflection and discovery is available

THANK YOU

You might also like