Csharp Dotnet Adnanreza
Csharp Dotnet Adnanreza
Csharp Dotnet Adnanreza
1
Outline
SQLServer
2. Introduction to c#
3. Entity framework
4. ASP.NET MVC
2
History of programming: Linear, Structured,
and Object-Oriented
What is C#
What is C#
C# Types of Applications
The product of the C# compiler is called the
“Assembly”. It’s either a “.dll” or a “.exe”
file. Both run on the Common Language
Runtime and are different from native code
that may also end with a “.exe”
extension.
•VS was not able to make web applications only windows application
•so this solved by .NET Framework ( web/win/mobile apps)
the output of c# code compilation is called assemply file ( you can write more than c# file
and they are assempled in one file)
not NATIVE code but called Managed code (CIL, IL)
CIL: Common Intermediat lang (does not depend on lang type or OS)
10
hello world in c# or hello world in VB both gives the same IL
History of programming: Linear, Structured,
and Object-Oriented
intermediat lang (IL) file can't run on OS directly so extra layer or tiny os layer (CLR) is
runnig as another OS , runtime environment to execute/run .net apps
.NET Basics
.NET Basics
.NET Basics
.NET Basics
18
The.NetFramework
1. Common Language Runtime - The “Common
Language Infrastructure” or CLI is a platform
on which the .Net programs are executed.
19
The.NetFramework
2. Class Library
20
The.NetFramework
3. Languages - The types of applications that can be
built in the .Net framework.
https://visualstudio.microsoft.com/downloads/
22
Introduction to c#
Namespace
1. Introduction
2. .NET Basics
3. C# Basics
4. Code Elements
5. Organization
6. GUI
7. Demo
8. Conclusion
4/8:Code Elements
1/12:Types
Types
1. Value type
1. Variable name contains the actual value
2. int, double and other primitive types
3. Structure, Enumeration, etc.
2. Reference Type
1. Variable name contains the reference or
pointer to the actual value in memory
2. Array, derived from class Array
3. Class, Interface, Delegate, String, etc.
4/8:Code Elements
1/12:Types
Type
s
• The value types are derived from
System.ValueType
• All types in C# are derived from
System.Object which is also accessed
by the alias keyword ‘object’
• This type hierarchy is called Common
Type System (CTS)
4/8:Code Elements
1/12:Types
Type
Nullable
s
The value types can’t be assigned a null. To
enable regular primitive value types to take a
null value, C# uses nullable types using ‘?’
with type name. Following example shows
how.
int? a; a = null; int b; b = a ?? - ‐99;
// the ?? operator picks -
‐99 if null
System.Console.WriteLine("this is null. {0}",b);
a = 23; // not null
System.Console.WriteLine("this is not null.
{0}", a ?? -
‐99);
4/8:Code Elements
1/12:Types
Type
Anonymous
s
Variables can be defined without an explicit name
and to encapsulate a set of values. This is
useful for C#’s Language Integrated Query
(which will not be discussed in this
presentation)
Array
s and
Following is an example of declaring
using a simple array.
Arra
y
The ‘foreach’ ,’in’ keywords are used to
provide read only (recommended)
access to members of an array or any
object implementing the IEnumerable
interface (more about this is discussed
in the section ‘Iterator’).
4/8:Code Elements
3/12:Property
Properties
Properties
class Client{
private string name ;
public string Name{
get{
return name;
}
set{
name=value;
}
}
static void
Main(string[] args)
{
Client c = new Client();
c.Name = "Celia";
System.Console.WriteLine(c.Name);
System.Console.ReadLine();
}
4/8:Code Elements
3/12:Property
Properties
Automatically Implemented
C# also has a feature to automatically implement the getters
and setter for you.
Users have direct access to the data members of the class.
Following example does the same thing as the previous
example, but using automatically implemented properties
class Client2{
public string Name { get; set; }
static void Main(string[] args){
Client2 c = new Client2();
c.Name = "Cruz";
System.Console.WriteLine(c.Name);
System.Console.ReadLine();
}
}
4/8:Code Elements
4/12:Indexer
Indexers
Nested Classes
Inheritance and
Interface
A class can directly inherit from only one base class and
can implement multiple interfaces.
To override a method defined in the base class, the
keyword ‘override’ is used.
An abstract class can be declared with the keyword
‘abstract’.
A static class is a class that is declared with the ‘static’
keyword. It can not be instantiated and all
members must be static.
4/8:Code Elements
6/12:Inheritance and Interface
Inheritance and
Interface
class BaseClass{
public virtual void show()
{ System.Console.WriteLine("base
class");}
}
interface Interface1{void showMe();}
interface Interface2{void showYou();}
class DerivedAndImplemented:
BaseClass,Interface1,Interface2{ public void showMe()
{ System.Console.WriteLine("Me!"); } public void showYou()
{ System.Console.WriteLine("You!"); } public override void
show(){
System.Console.WriteLine("I'm in derived Class");}
static void Main(string[] args){
DerivedAndImplemented de = new DerivedAndImplemented();
de.show();
System.Console.Read();}
}
4/8:Code Elements
7/12:Class Access & Partial
Delegates
Delegates
class Program
{
delegate int mydel(int aa);
int myfunc(int a){ return a*a; }
int myfunc2(int a) { return a + a; }
static void Main(string[] args)
{
Program p=new Program();
mydel d=p.myfunc; System.Console.WriteLine(d(5));
d = p.myfunc2; System.Console.WriteLine(d(5));
System.Console.Read();
}
}
4/8:Code Elements
8/12:Delegate
Delegates
Lambda Expression
In C#, implementors (functions) that are targeted by a
delegate, can be created anonymously, inline and on
the fly by using the lambda operator “=>”.
class Program {
delegate int mydel(int aa, int bb);
static void Main(string[] args) {
mydel d = (a, b) => a + 2 * b;
// in above line, read a,b go to
a+b*2 to evaluate
System.Console.WriteLine(d(2,3));
System.Console.Read();
}
}
4/8:Code Elements
9/12:Generic
Generics
Generics
class Genclass<T>{
public void genfunc(int a, T b){
for (int i = 0; i < a; i++)
{
System.Console.WriteLine(b);
}
}
}
class Program{
static void Main(string[] args)
{ Genclass<float> p = new
Genclass<float>(); p.genfunc(3,
(float)5.7);
System.Console.Read();
}
}
4/8:Code Elements
10/12:Object Initializer
Object Initializer
Object Initializer
class Client2
{
public string Name { get; set; }
static void Main(string[] args)
{
Client2 c = new Client2
{Name="Adalbarto"};
// above is the object initializer
System.Console.WriteLine(c.Name);
System.Console.ReadLine();
}
}
4/8:Code Elements
11/12:Iterator
Iterator
Iterator
public class MyBooks : System.Collections.IEnumerable
{ string[] books = { "Linear Systems", "Design
Patterns
Explained", "The Now Habbit", "The DeVinci Code" };
public System.Collections.IEnumerator GetEnumerator() {
for (int i = 0; i < books.Length; i++) {
yield return books[i];
}
}
}
class Program {
static void Main(string[] args) {
MyBooks b = new MyBooks();
foreach (string s in b) {
System.Console.Write(s + "
");
}
System.Console.Read();
}
}
4/8:Code Elements
12/12:Sturcture
Structure
Structure
struct Rectangle{
public int length; public int width;
public Rectangle(int length,int width){
this.length=length;
this.width=width;
}
public int getArea()
{ return
length*width;
}
}
class Program{
static void Main(string[]
args){
Rectangle r=new Rectangle(2,5);
System.Console.WriteLine("The area is: {0}",r.getArea());
System.Console.Read();
}
}
5/8:Organization
1/4:Namespaces
Namespace
using System;
namespace space1{
class
MyClass1{
public void show()
{ System.Console.WriteLine("MyClass1
");
}
}
}
namespace space2{
class Program{
static void
Main(strin
g[] args){
space1.MyClass1 c=new space1.MyClass1();
c.show(); Console.Read();
}
}
}
5/8:Organization
2/4:Attribute
Attribute
Attributes add metadata to the code entities such
as assembly, class, method, return value etc
about the type.
This metadata describes the type and it’s
members
This metadata is used by the Common Runtime
Environment or can also be used by client
code.
Attributes are declared in square brackets above
the class name, method name etc.
5/8:Organization
2/4:Attribute
Attribute
The IDE
GUI:
Introduction
The .NET framework provides a class library of
various graphical user interface tools such as
frame, text box, buttons etc. that C# can use
to implement a GUI very easily and fast.
Visual
Items
The following are some of the visual items.
• Form: displays as a window.
• Button: displays a clickable button
• Label: displays a label
• TextBox: displays an area to edit
• RadioButton: displays a selectable button
6/8:GUI
2/3:Visual Items
Visual
Items
The containing
window is
called the
“Frame”.
Inside are
some other
GUI
elements,
such as
Button,
TextBox etc
6/8:GUI
3/3:Events
1/4:Intro Events
When anything of interest occurs, it’s called an
event such as a button click, mouse
pointer movement, edit in a textbox etc.
An event is raised by a class. This is called
publishing an event.
It can be arranged that when an event is raised,
a class will be notified to handle this event,
i.e. perform required tasks. This is called
subscribing to the event. This is done via:
• Delegates or
• Anonymous function or
• Lambda expression.
These will be discussed shortly
6/8:GUI
3/3:Events
1/4:Intro Events
The .NET Framework has many built-in events
and delegates for easily subscribing to these
events by various classes.
For example, for Button class, the click event is
called “Click” and the delegate for handler is
called “System.EventHandler”. These are
already defined in the .NET class library.
To tie the event with the handler, the operator
“+=” is used. (Will be discussed shortly)
Then, when the Button object is clicked, that
function will execute.
6/8:GUI
3/3:Events
2/4:With Delegates
With Delegates
Class Form1:Form{
private System.Windows.Forms.Button button1;
///...
Void init(){
this.button1.Click += new System.EventHandler(this.button1_Click);
}
private void button1_Click(object sender, EventArgs e){
button1.Text = "clicked1";
}
}
6/8:GUI
3/3:Events
3/4:With Lambda
With Lambda
Class Form1:Form{
private System.Windows.Forms.Button button1;
///...
Void init(){
// the arguments a,b are just to satisfy the delegate signature.
// they do nothing useful in this simple example.
this.button1.Click += (a,b) => { this.button1.Text = "clicked1"; };
}
}
6/8:GUI
3/3:Events
4/4:With Anonymous Method
With Anonymous
Methods
An anonymous method is declared with the
keyword “delegate”. It has no name in
source code level.
After the delegate keyword, the arguments need
to be put in parenthesis and the function
body needs to be put in braces.
It is defined in-line exactly where it’s instance is
needed.
Anonymous methods are very useful in event
programming in C# with .NET Framework.
With Anonymous
Methods
The following example does the same thing as
the previous two examples but uses
anonymous methods to handle that event.
Class Form1:Form{
private System.Windows.Forms.Button button1;
///...
Void init(){
this.button1.Click += delegate(object oo, System.EventArgs ee) {
this.button1.Text = "clicked1";
};
}
}
3/8:C# Basics
3/3:Typical and Trivial
A Typical and Trivial
Program in
C#
using System;
namespace typical_trivial{
class House{
private int location;
protected string name;
public House(){
name = "No Name Yet!";
}
// every class inherits ‘object’ that has ToString()
public override string ToString(){
string disp = "Name is " + name + ", location= " +
location.ToString();
return disp;
}
}
Continues to the next slide …
3/8:C# Basics
3/3:Typical and Trivial
A Typical and Trivial
Program in
C#
… continuing from the previous slide
class Program{
static void Main(string[] args){
House h = new House();
for (int i = 0; i < 4; i++){
System.Console.WriteLine("i=
{0}, house says:
{1}", i, h.ToString());
}
System.Console.Read();
}
}
}