Search This Blog

Thursday, July 18, 2013

Indexers C#

C# > Indexers

Indexers enable to create a class that client applications can access as an array.
Implementation: encapsulate an internal collection or array.





Example:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        class Test
        {
            private string[] mStr = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "K"};
            public int Length
            {
                get { return mStr.Length; }
            }
            // Indexer declaration.
            public string this[int index]
            {
                get
                {
                    return mStr[index];
                }
                set
                {
                    mStr[index] = value;
                }
            }
        }
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            Test t = new Test();
            //  indexer set accessor
            t[1] = "a";
            t[2] = "b";
            //  indexer get accessor
            for (int i = 0; i < t.Length -1 ; i++)
            {
                MessageBox.Show(t[i]); 
            }
        }
     }
}

 





Asc Method Visual Basic

VB.NET > Functions > ASC

Asc Method returns an Integer value of character code corresponding to a character.

Example:

Dim IntCode As Integer
IntCode = Asc("A") '65
IntCode = Asc("a") '97
IntCode = Asc("@") '64
IntCode = Asc("?") '93





CType Function Visual Basic NET

VB.NET > Functions > CType

CType function returns the result of explicitly converting an expression to a specified data type.

Example:

Public Class Form1
  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim mStr As String = "100"
    Dim mInt As Integer = CType(mStr, Integer) 'convert "100" string to mInt = 100 OK

    mStr = "aaa"
    mInt = CType(mStr, Integer) ' Error: Conversion from string "aaa" to type 'Integer' is not valid. NOK
  End Sub
End Class






Tuesday, July 16, 2013

Events C#


Events in C# are based on the delegate model.
To declare an event in a class the delegate type for the event must be declared.

Events use the publisher-subscriber model.

A publisher is an object that contains the definition of the event and the delegate.
A subscriber is an object that accepts the event and provides an event handler.




Example:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public class Event
        {
            private int value;
            public delegate void EventHandler(int v);
            public event EventHandler ValueChanged;

            protected virtual void OnValueChanged()
            {
                if (ValueChanged != null)
                {
                    ValueChanged(value);
                }
            }
            public Event()
            {
            }
            public void SetValue(int n)
            {
                if (value != n)
                {
                     value = n;
                    OnValueChanged(); // raise event
                }
            }
        }
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            Event ev = new Event();
            ev.ValueChanged += ev_ValueChanged;
            ev.SetValue(2);
            ev.SetValue(3);
        }
        void ev_ValueChanged(int v)
        {
           MessageBox.Show("Event value : " + v.ToString()); 
        }
     }
}

 




Logger class Delegate Example

C# > Delegate

Logger class Delegate Example

Example:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public class LoggerClass
        {
            public delegate void LogHandler(string message); // Declare a delegate
            public void Log(LogHandler vLogHandler)
            {
                vLogHandler("Log begin");
                // do stuff ...
                vLogHandler("Log end");
            }
        }
        static void Logger(string s)
        {
            MessageBox.Show(s);
        }
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            LoggerClass mClass = new LoggerClass();
            LoggerClass.LogHandler mLogger = new LoggerClass.LogHandler(Logger);  // create an instance of the delegate and pointing to the logging function.
            mClass.Log(mLogger); // delegate will be passed to the Log() function.
        }
    }
}




Square brackets ([]) operator C#

C# > Operators > [] Operator 

Square brackets ([]) operator is used for arrays, indexers, and attributes.

Examples
 //arrays
  int[] mList;
  mList = new int[200];

 //indexers
  System.Collections.Hashtable h = new System.Collections.Hashtable();
  h["e1"] = 1;
      
  //attributes
  [System.Serializable]
      









Monday, July 15, 2013

Abstract classes, MustInherit, MustOverride , Overrides VB NET

VB.NET > OOP > Abstract Class

Abstract classes specify members that must be implemented in the inheriting classes. Any class can inherit only from one abstract class. You we cannot create objects of an abstract class.

MustInherit
Specifies that a class can be used only as a base class and that you cannot create an object directly from it.

MustOverride  
Specifies that a property or procedure is not implemented in this class and must be overridden in a derived class before it can be used.

Overrides
Specifies that a property or procedure overrides an identically named property or procedure inherited from a base class.




Example:

Public Class Form1
  Public MustInherit Class Employee

    Private mFirstName As String
    Private mLastName As String

    Public Sub New(ByVal FirstName, ByVal LastName)
      mFirstName = FirstName
      mLastName = LastName
    End Sub

    Public Property FirstName() As String
      Get
        Return mFirstName
      End Get
      Set(ByVal value As String)
        mFirstName = value
      End Set
    End Property

    Public Property LastName() As String
      Get
        Return mLastName
      End Get
      Set(ByVal value As String)
        mLastName = value
      End Set
    End Property

    Public MustOverride Function Income() As Double
  End Class

  Public Class Teacher
    Inherits Employee

    Private mSalary As Double

    Public Sub New(ByVal FirstName, ByVal Lastname, ByVal salary)
      MyBase.New(FirstName, Lastname)
      mSalary = salary
    End Sub

    Public Property Salary() As String
      Get
        Return mSalary
      End Get
      Set(ByVal value As String)
        mSalary = value
      End Set
    End Property

    Public Overrides Function Income() As Double
      Return Salary() * 1.2
    End Function
  End Class

  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim mTeacher As New Teacher("John", "Smith", 100)
    Dim sal = mTeacher.Income ' 120
  End Sub

End Class