Preview only show first 10 pages with watermark. For full document please download

Language Basics Cs

   EMBED


Share

Transcript

Deccansoft Software Services Language Basics Chapter-3 Agenda   1. Primitive  Data  Types  and  Variable  Declaration   2. Handling  Overflow  Checks   3. Casting  between  other  data  types   4. Boxing  &  Unboxing   5. Enum  and  Constant   6. Operators   7. Control  Statements   8. Working  with  Arrays   9. Working  with  Methods     Table  Of  Contents   P RIMITIVE   D ATA T YPES  AND   V ARIABLE   D ECLARATION 3 V ARIABLE   D ECLARATION   S YNTAX 5 H ANDLING   O VERFLOW   C HECKS 6 C AST ING  BETWEEN  OTHER  DA TA  TYPES 8 B OXING   &   U NBOXING 9 E NUM  AND   C ONSTANT 10 O PERATORS 11 C ONTROL   S TATEMENTS 12 W ORKING  WITH   A RRAYS 18 W ORKING  WITH   M ETHODS 22                   1 Deccansoft Software Services Language Basics Chapter-3       2 Deccansoft Software Services Language Basics Chapter-3 Primitive  DataTypes  and   Variable  Declaration   Integral  Types:     DataType   Size   .  Net   (CTS)   Comments   byte   1   System.Byte   0  -­‐  255  It  is  Unsigned   Sbyte   1   System.SByte   -­‐128  to  127  –  Signed   Short   2   System.Int16     UShort   2   System.UInt16     Int   4   System.Int32     UInt   4   System.Unt32   long   8   System.Int64   Ulong   8   System.UInt64     Floating  Types  (the  position  of  decimal  point  is  not  fixed):   Float   4   System.Single   Has  up  to  8  digits  after  decimal     Double   8   System.Double   Has  up  to  16  digits  after  decimal   Decimal*   16   System.Decimal   Has  28  digits  after  decimal  and  its  fixed     *  Even  though  the  decimal  datatype  as  decimal  point  it’s  not  floating  because  the  number  of  digits  after   decimal  are  fixed  i.e.  28  digits.   Other  DataTypes:   Char   2   System.Char   Uses  Unicode  Charset  and  thus  supports  multiple   languages   string  **     Systring.String   Uses  Unicode  Charset   bool   1   System.Boolean   True  /  False     object  **     System.Object   Generic  Datatype   **All  the  above  data  types  are  Value  Types  except  String  and  Object,  which  are  Reference     Why  Data  types:   Ø Based  on  the  data  type  the  size  of  variable  and  the  format  in  memory  is  decided   Ø Based  on  the  data  type  the  compiler  is  going  to  validate  the  expressions  making  the  language  type   safe.   Memory  in  an  application  is  divided  into  three  parts.   1. Global  Memory:  Used  by  all  global  variables.  These  variables  are  allocated  memory  when  the   application  begins  and  will  remain  in  memory  throughout  the  life  of  the  application.     3 Deccansoft Software Services 2. Language Basics Chapter-3 Stack  Memory:  Used  by  local  variables  of  a  method.  When  a  method  is  invoked  a  stack  of  memory  is   allocated  to  and  the  stack  is  cleared  when  the  method  returns   3. Heap  Memory:  All  dynamic  memory  requirements  of  an  application  are  fulfilled  from  the  heap   memory.  After  allocating  some  memory  from  heap  to  a  variable,  once  its  job  is  completed  the  memory   must  be  returned  back  to  heap  so  that  the  same  can  be  reused  for  another  variable.   • The  value  type  of  variable  has  value  where  as  the  value  of  a  reference  type  is  reference  to  value   (object)  on  heap.   • The  value  (object)  of  a  reference  type  is  always  allocated  heap  memory.     • Value  types  are  allocated  memory  based  on  the  scope  of  the  variable,  If  its  Global  Variable  its  allocated   memory  in  Global  Memory  Area,  if  its  Local  Variable  or  Parameter  its  allocated  memory  on  stack  and  if   it’s  a  member  of  an  object  its  allocated  memory  on  Heap.   Value  Types  directly  hold  the  value.     ValueType Ex:  All  Basic  Types,  Structures  &  Enum   Var = Value Reference  Types  hold  the  reference  to  the  value  on   Ref type Var Value HEAP.   Ex:  String,  Object,  Class,  Arrays,    Delegates           4 Deccansoft Software Services Language Basics Chapter-3 Variable  Declaration  Syntax   int  a,b;   int  a=10,  b=20;   • A  local  variable  declared  must  be  explicitly  initialized  before  used  in  an  expression  otherwise  gives  an   compilation  error.   • A  variable  declared  in  a  block  is  local  to  the  block  in  which  it  is  declared.   • A  variable  declared  in  outer  block  cannot  be  re-­‐declared  in  the  inner  block.   Casting:   Converting  data  from  one  form  to  another  form.   If  RHS  expression  and  LHS  variable  are  not  of  same  data  type  then  casting  is  required.     Casting  can  be  implicit  casting  or  explicit  casting.   Implicit  Casting:  If  every  possible  value  of  RHS  expression  is  valid  for  a  variable  on  LHS  variable.   Explicit  Casting:  If  an  RHS  expression  is  assigned  to  LHS  and  if  there  is  a  possibility  of  data  loss  then  explicit   casting  is  needed.       Program  to  caste  integer  to  byte   using  System;   class  Program   {          public  static  void  Main()          {                  int  n  =  256;                  byte  b;                  byte  b1,  b2,  b3;                  b1  =  b2  =  10;  //In  VB  it  is  not  valid                  b1  =  b2  +  b3;  //Compilation  Error                  //if    either  byte,  short  or  char  variables  are  used  in  an  expression  they  are  automatically  raised   to  the  rank  of  int.                  b1  =  (byte)(b2  +  b3);        }   }   Code:  3.1   C#               5 Deccansoft Software Services   Language Basics Chapter-3   Handling  Overflow  Checks   Code  snippet  for  handling  overflow  checks   unchecked  //Overflow  checks  are  not  done…   {          b  =  (byte)  n;          Console.WriteLine(b);   }   checked  //Overflow  checks  are  done…   {        b  =  (byte)  n;        Console.WriteLine(b);   }     To  Enable  /  Disable  Overflow  checks:   Project  à  Properties  à  Compile  à  Scroll  and  Click  on  Advanced  Compile  Options  à  Check  Integer  Overflow   Checks   Fig:  3.1   6 Deccansoft Software Services Language Basics Chapter-3 Note:     You  cannot  use  the  checked  and  unchecked  keywords  to  control  floating  point  (non-­‐integer)   arithmetic.  The  checked  and  unchecked  keywords  control  only  integer  arithmetic.  Floating  point   arithmetic  never  throws  OverflowException.       Converting  float  &  decimal  datatypes                  double  dbl  =  0.6D;  //0.6                  float  f  =  0.6F;                  decimal  dec  =  0.6M;   //long  to  float  -­‐  Same  as  VB                  long  lng  =  10L;                  f  =  lng;  //because  range  of  long  is  smaller  than  float                  lng  =  (long)  f;   //float  and  decimal  requires  casting                  dec  =  10;  //Integer  to  decimal                  //f  =  dec;  //Invalid                    //dec  =  f;  //Invalid                    f  =  (float)  dec;                    dec  =  (decimal)  f;   //“decimal”  should  be  explicitly  casted  to  every  other  type  if  required.                                 7 Deccansoft Software Services Language Basics Chapter-3 Casting  between   other  data   types   Casting  between  other  datatypes              //int  to  char.                  n  =  c;                    /*c  =  n;  invalid  */                  c  =  (char)  n;                  //bool  –  int  -­‐  anydatatype  explicit  or  implicit  casting  is  not  allowed  either  direction                //string  to  int                  s  =  "100";                  n  =  (int)  s;  //Invalid  –  String  cannot  be  casted                  n  =  int.Parse(s);  //if  failes  throws,  FormatException                  bool  bln  =  int.TryParse(s,  out  n);                  //n  =  (int)  s;  //Direct  casting  of  string  to  int  is  not  allowed.                  //int  to  string                  s  =  n.ToString();                  //s  =  (string)  n  //Casting  of  int  to  string  is  not  allowed     Program  to  Print  the  Char  equivalent  of  the  Ascii  value  read  from  the  keyboard     using  System;   class  Program   {          static  void  Main(string[]  args)          {                  string  str;                  str  =  Console.ReadLine();                  int  n  =  100;                  if  (int.TryParse(str,  out  n))                          Console.WriteLine((char)n);                  else                          Console.WriteLine("Invalid  number");          }   }   Code:  3.2   C#         8 Deccansoft Software Services Language Basics Chapter-3 Boxing  &  Unboxing   Boxing   is   the   term   used   to   describe   the   transformation   from   Value   Type   to   reference   type   (Object).   The   runtime  creates  a  temporary  reference-­‐type  box  for  the  object  on  the  heap.   UnBoxing  is  the  term  used  to  describe  the  transformation  from  reference  type  (Object)  to  value  type.    We   use  the  term  cast  here,  as  this  has  to  be  done  explicitly.                  object  obj  =  n;  //Boxing                  n  =  (int)  obj;  //Unboxing   1 When  a  value  is  boxed  to  an  object  type,  the  object  type  variable  cannot  be  used  in  any  mathematical   operations.   2 When  the  value  of  object  type  variable  cannot  be  assigned  to  variable  on  LHS,  an  Exception  of  type   InvalidCastException  is  thrown.   3 Excessive  usage  of  Object  data  type  makes  the  language  “Loosely  Typed”  and  also  because  of  frequent   casting  requirement  while  Boxing  and  Unboxing  performance  is  also  degraded.     4 Boxing  /  Unboxing  should  be  used  only  in  situations  where  until  runtime  we  don’t  know  the  type  of   data  we  are  going  to  deal  with.                         9 Deccansoft Software Services Language Basics Chapter-3 Enum  and  Constant   Casting  between  other  datatypes   enum  WeekDay  :  int  //WeekDay  is  subtype  of  int   {          Sun=1,  Mon,  Tues,  Wed=5,  Thus,  Fri,  Sat   }   Enum  can  be  subtype  of  any  integral  type  only.                      n  =  2;  //n  is  int                  WeekDay  wd  =  WeekDay.Sat;                  wd  =  (WeekDay)  n;  //Explicit                  //n  =  wd;  //Invalid                  n  =  (int)  wd;  //Explicit  -­‐  In  VB.NET  it’s  not  required     //Constant  Declaration                  const  double  PI  =  3.14;     10 Deccansoft Software Services Language Basics Chapter-3 Operators   Arithmetic   +,  -­‐,  *  ,  /  ,  %  (mod)  (Power  operator  is  missing)   Logical  Operators   ^  (XOR),  !(NOT)  &&  (VB-­‐AndAlso)  ,  ||  (VB-­‐OrElse)   Ternary  Operator   ?:   String  concatenation   +  (VB-­‐&)   Increment,  decrement   ++  ,  -­‐-­‐   Bitwise   <<  ,    >>,    &  ,  |  ,  ~  (complement/negation)   Relational   =  =  ,  !=  ,  <  ,  >  ,  <=  ,  >=   Assignment   =  ,  +=  ,  -­‐=  ,  *=  ,  /=  ,  %=  ,  &=  ,  |  =  ,  ^=  ,  <<=  ,  >>=   Type  information   is  ,  sizeof  ,  typeof,  as   Indirection  and  Address   *  ,  -­‐>  ,  []  ,  &     • Dividing  a  Integral  Type  with  zero  (Integral  Division  Operator)    throws  DivideByZeroException   • Floating  Point  Division  by  zero  is  not  a  runtime  exception  but  the  value  would  be  either  PositiveInfinity   (if  numerator  is  greater  than  zero)  or  NegativeInfinity  (if  numerator  is  less  than  zero)  or  NaN  (if   numerator  is  also  zero)     Using  Conditional  operator                  n  =  10;                  int  m  =  n++;  //m=n;  n=n+1  -­‐  Post  Increment                  Console.WriteLine(n  +  "  "  +  m);                  m  =  ++n;  //n=n+1;  m=n  -­‐  Pre  Increment                  Console.WriteLine(n  +  "  "  +  m);                                    //?:  Conditional  Operator  (VB:  IIf)                  int  max;                  max  =  n  >  m  ?  n  :  m;  //?:  Operator         11 Deccansoft Software Services Language Basics Chapter-3 Co ntrol   Statements   If  else-­‐statement  syntax:          if  (BooleanExpression)            {                          statement;          }          else  if  (Boolean-­‐Expression)          {                        statement;            }          else          {                        statement;            }     Program  to  print  if  the  command  line  argument  provided  is  an  odd  number  or  even  number   using  System;   using  System;   class  Program   {          public  static  void  Main(string[]  args)          {                  int  n;                  if  (args.Length  ==  0)                          Console.WriteLine("Please  provide  a  number");                  else  if  (!int.TryParse(args[0],  out  n))                          Console.WriteLine("Not  a  number");                  else  if  (int.Parse(args[0])  %  2  ==  0)                          Console.WriteLine("Even  number");                  else                          Console.WriteLine("Odd  number");          }   }   Code:  3.3   C#     Note:     To  execute  above  program  correctly,  supply  valid  integers  in  command  line  arguments.  Right  click   on  Project  -­‐>  Select  Properties  -­‐>  Click  on  Debug  tab  and  enter  few  values  in  “Command  line   arguments”  section  seperated  by  spaces.  For  this  example  we  have  used  the  values:  2  3           12 Deccansoft Software Services Language Basics Chapter-3 Here  is  the  output  of  executing  above  code:     Fig:    3.2     Switch  statement  syntax:        switch    (expr)  //expr  can  only  integral  type  /  char  /  string        {                  case  0:  //value  of  case  must  be  a  constant.                            statements;                            goto  default;    //  or  break  can  be  used.                  case  1:                  case  2:                            statements;                            break;  //break  must  be  preset  after  every  case  with  statements                  default:                            statements;                            break;  //break  must  be  present  after  default  also.        }     Task:   Write  a  program  to  print  grade  of  the  person  based  on  the  marks  scored.     while…..loop  statement  syntax:   while  (BooleanExpression)   {                Statements;   }   do     {                    Statements   }   while  (BooleanExpression)        }       13 Deccansoft Software Services Language Basics Chapter-3 Program    to  Print  the  table  of  any  number  read  from  the  keyboard.   using  System;   class  Program   {          public  static  void  Main()          {                  int  n;                  Console.Write("Table  of:  ");                  n  =  int.Parse(Console.ReadLine());                  string  s  =  "";                  for  (int  i  =  1;  i  <=  10;  i++)                          s  +=  n  +  "*"  +  i  +  "="  +  n  *  i  +  "\n";                  Console.WriteLine(s);          }   }   Code:  3.4   C#     Here  is  the  output  of  executing  above  code:     Fig:  3.3   for  statement  syntax:    for  (  initializer;  condition;  iterator  )   {                              statements;         }     Sample  program  implementing  for  loops  –  Example  1   using  System;   class  Program   {          static  void  Main(string[]  args)          {                  for  (int  i  =  0;  i  <  3;  i++)   14 Deccansoft Software Services Language Basics Chapter-3                {                          for  (int  j  =  0;  j  <  3;  j++)                          {                                  if  (i  ==  j)                                          break;                                  Console.WriteLine(i  +  "  "  +  j);                          }                  }          }   }   Code:  3.5   C#     Here  is  the  output  of  executing  above  code:     Fig:  3.4     Sample  program  implementing  for  loops  –  Example  2   using  System;   class  Program   {          static  void  Main(string[]  args)          {                  for  (int  i  =  0;  i  <  10;  i++)                  {                          if  (i  ==  7)  break;                          if  (i  ==  3)  continue;                          Console.WriteLine(i);                  }          }   }   Code:  3.6   C#     Here  is  the  output  of  executing  above  code:   15 Deccansoft Software Services Chapter-3 Language Basics                                                                      Fig:  3.5     Program  to  show  the  Pyramid  of  Numbers   using  System;   class  Program   {          static  void  Main(string[]  args)          {                  int  k  =  0;                  for  (int  i  =  0;  i  <  4;  i++)                  {                          for  (int  j  =  0;  j  <=  i;  j++)                                  Console.Write(k++  +  "\t");                          Console.WriteLine();                  }          }   }   Code:  3.7   C#     Here  is  the  output  of  executing  above  code:                                                  Fig:  3.6       16 Deccansoft Software Services Language Basics Chapter-3   Foreach  statements  syntax:    foreach  (DataType    identifier    in  )     {              embedded-­‐statements;   }                     Program  to  print  all  command  line  arguments   using  System;   class  Program   {          static  void  Main(string[]  args)          {                  foreach  (string  s  in  args)                          Console.WriteLine(s);          }   }   Code:  3.8   C#         17 Deccansoft Software Services Language Basics Chapter-3   Working  with  Arrays   1 Arrays  are  reference  types  and  thus  are  allocated  memory  on  heap.   2 Every  element  of  an  array  is  automatically  initialized  to  a  default  value  based  on  its  data  type.   3 They  are  always  dynamic  because  we  can  SET  the  size  of  the  arrays  at  runtime.     4 Size  of  array  can  never  be  changed  at  runtime.   5 Trying  to  access  an  element  of  array  with  invalid  index  throws  IndexOutofRangeException  Exception.   6 All  arrays  irrespective  of  their  type  are  by  default  inherited  from  System.  Array  class     Single-­‐Dimensional  Arrays   int  []  myArray  =  new  int  [5];   string  []myStringArray  =  new  string[5];     When  you  initialize  an  array  upon  declaration,  it  is  possible  to  use  the  following  shortcuts:   int[]  myArray  =  {1,  3,  5,  7,  9};   string[]  weekDays  =  {"Sun",  "Sat",  "Mon",  "Tue"};     It  is  possible  to  declare  an  array  variable  without  initialization,  but  you  must  use  the  new  operator  when  you   assign  an  array  to  this  variable.  For  example:   int[]  myArray;   myArray  =  new  int[]  {1,  3,  5,  7,  9};      //  OK   myArray  =  {1,  3,  5,  7,  9};      //  Error   weekdays  =  new  string[]  {“Sunday”,  “Monday”,  “Tuesday”};     Multi-­‐Dimensional  Arrays   int[,]  myArray  =  new  int[4,2];   Also,  the  following  declaration  creates  an  array  of  three  dimensions,  4,  2,  and  3:     int[,,]  myArray  =  new  int  [4,2,3];   You  can  initialize  the  array  upon  declaration  as  shown  in  the  following  example:   int[,]  myArray  =  new    int[,]  {{1,2},  {3,4},  {5,6},  {7,8}};   You  can  also  initialize  the  array  without  specifying  the  rank:   int[,]  myArray  =  {{1,2},  {3,4},  {5,6},  {7,8}};   If  you  choose  to  declare  an  array  variable  without  initialization,  you  must  use  the  new  operator  to  assign  an   array  to  the  variable.  For  example:   int[,]  myArray;   myArray  =  new  int[,]  {{1,2},  {3,4},  {5,6},  {7,8}};      //  OK   myArray  =  {{1,2},  {3,4},  {5,6},  {7,8}};      //  Error     Program  to  use  arrays:   using  System;   class  Program   {          static  void  Main(string[]  args)          {                  int[]  ar  =  new  int[]  {  1,  2,  3,  4  };                  Console.WriteLine(ar.Length);                  Console.WriteLine(ar.Rank);  //Prints  Number  of  Dimensions  in  array.                  foreach  (int  n  in  ar)   18 Deccansoft Software Services Language Basics Chapter-3                        Console.WriteLine(n);          }   }   Code:  3.9   C#       Here  is  the  output  of  executing  above  code:     Fig:  3.7   Program:  To  read  a  list  of  numbers  separated  by  space  and  print  the  Average  of  all  those   numbers.   using  System;   class  ProgramForMaxOfAnyNumbers   {          static  void  Main(string[]  args)          {                  string  str  =  Console.ReadLine();                  string[]  ar  =  str.Split('  ');                  int  sum  =  0;                  for  (int  i  =  0;  i  <  ar.Length;  i++)                  {                          sum  +=  int.Parse(ar[i]);                          Console.WriteLine(ar[i]);                  }                  Console.WriteLine("Average:  "  +  1.0  *  sum  /  ar.Length);          }   }   Code:  3.10   C#         19 Deccansoft Software Services Language Basics Chapter-3 Here  is  the  output  of  executing  above  code:     Fig:  3.8     Program:  To  read  length  and  data  for  an  array  from  keyboard  print  the  same.   using  System;   class  ProgramForMaxOfAnyNumbers   {          static  void  Main()          {                  Console.Write("Enter  the  array  length:  ");                  int  n;                  n  =  int.Parse(Console.ReadLine());                  int[]  ar  =  new  int[n];                  for  (int  i  =  0;  i  <  n;  i++)                  {                          Console.Write("Enter  the  "  +  i  +  "th  value:  ");                          ar[i]  =  int.Parse(Console.ReadLine());                  }                  for  (int  i  =  0;  i  <  ar.Length;  i++)                  {                          Console.Write(ar[i]  +  "  ");                  }          }   }   Code:  3.11   C#           20 Deccansoft Software Services Language Basics Chapter-3 Here  is  the  output  of  executing  above  code:     Fig:  3.9             21 Deccansoft Software Services Language Basics Chapter-3 Working  with  Methods   Working  with  Methods Method  Overloading:     1 Having  two  or  more  methods  with  same  name  and  different  parameters.   2 Parameters  must  be  different  either  in  their  data  type  or  in  their  count.   3 Method  cannot  be  overloaded  based  on  Return  Type  or  ByVal/ByRef  or  Parameter  names.   4 Call  to  the  Overloaded  method  is  resolved  at  compile  time  and  is  done  based  on  data  type  and  count  of   arguments  passed  to  the  method.   5 While  resolving  the  called  method,  the  compiler  searches  for  a  direct  match  of  arguments  and   parameters.  Only  if  a  direct  match  is  not  available  it  would  then  use  nearest  match  for  resolving  the  call.     Method  overloading   using  System;   class  Program   {          public  static  void  Main()          {                  int  res  =  Add(10,  2);                  Console.WriteLine(res.ToString());                  string  str;                  str  =  Add("Deccan",  "soft");                  Console.WriteLine(str);          }          static  int  Add(int  a,  int  b)          {                  return  Add(a,  b,  0);          }          static  int  Add(int  a,  int  b,  int  c)          {                  return  a  +  b  +  c;          }          static  string  Add(string  s1,  string  s2)          {                  return  s1  +  s2;          }   }   Code:  3.12   C#         22 Deccansoft Software Services Language Basics Chapter-3 Here  is  the  output  of  executing  above  code:     Fig:  3.10   Params  Parameters:   1. Only  Parameters  which  are  of  type  array  (of  any  data  type)  can  be  declared  as  params   2. If  parameter  is  declared  as  params  either  a  reference  to  the  array  can  be  passed  as  argument  or  0  or   more  individual  values  can  be  passed  to  it.   3. Only  one  parameter  of  a  method  can  be  declared  as  params  parameter.   4. It  must  be  last  parameter  in  the  list  of  parameters  for  a  given  method.   5. If  we  have  other  parameters  in  the  list  they  must  be  before  the  params  parameter  and  they  cannot  be   declared  as  optional.     using  System;   class  Program   {          public  static  void  Main()          {                  int  res  =  Add(10,  2);                  int[]  mar  =  {  1,  2,  3,  4  };                  res  =  Add(mar);                  Console.WriteLine(res.ToString());                  res  =  Add();                  res  =  Add(1,  2,  3,  4,  5);                  res  =  Add(1,  2,  3,  4,  5,  6);                  res  =  Add(1,  2,  3,  4,  5,  6,  7);                  Console.WriteLine(res.ToString());          }            static  int  Add(params  int[]  ar)          {                  int  sum  =  0;                  foreach  (int  n  in  ar)                          sum  +=  n;                  return  sum;          }   }   Code:  3.13   C#   Here  is  the  output  of  executing  above  code:   23 Deccansoft Software Services Chapter-3 Language Basics   Fig:  3.11     Pass  by  value  and  reference  example   using  System;   class  Program   {          public  static  void  Main()          {                  int  n1,  n2,  n3;                  n1  =  n3  =  10;                  Foo(n1,  out  n2,  ref  n3);                  Console.WriteLine(n1  +  "  "  +  n2  +  "  "  +  n3);          }          static  void  Foo(int  a,  out  int  b,  ref  int  c)          {                  a++;                  b  =  20;                  c++;          }   }   Code:  3.14   C#     Here  is  the  output  of  executing  above  code:                                                                                        Fig:  3.13     24 Deccansoft Software Services Language Basics Chapter-3 The  argument  “n2”  is  passed  by  reference  to  “b”,  i.e.  both  “b”  and  “n2”  reference  to  same  memory  and   hence  change  made  to  “b”  is  also  reflected  in  “n2”.   Out  parameter  must  be  initialized  in  the  method  and  are  generally  used  in  situations  where  we  want  to   return  more  than  one  value  from  the  method.   If  a  method  has  return  type  anything  other  than  “void”,  all  code  paths  in  it  must  return  a  value.   The  example  below  compilation  error  because  if  a==0  nothing  is  mentioned  as  return  value:   static  int  Foo(int  a)   {                    if  (a  !=  0)                                  return  a;   }     Summary   In  this  section  we  have  covered  most  of  the  C#  language  structures  that  includes:  Datatypes  declaration  &   initialization,  conditional  and  looping  structures,  working  with  arrays  &  methods  and  enumerated  datatypes.     25