Archive

Archive for the ‘C# and dot NET’ Category

Action C#

May 31, 2015 1 comment

Action adalah delegate yang mempunyai zero, satu atau lebih input parameter dan mengembalikan void. Kita dapat menggunakan Action untuk merepresentasikan method yang dapat di-pass sebagai parameter tanpa mendeklarasikan delegate secara explisit.

Syntax

delegate void Action();
delegate void Action(T arg);
delegate void Action(T1 arg1, T2 arg2);
 .. and so on, up to T16

Example

using System;
using System.Text;
using System.Threading.Tasks;
using System.Linq;
using System.Collections.Generic;

namespace AppBasicConsole
{
class Program
{
public static void Consumer(IEnumerable<string> names,  Action<string> consumerResolver)
{
if (consumerResolver == null) throw new ArgumentNullException("Exception is thrown");

foreach(string name in names)
{
consumerResolver(name);
}
}

static void Main(string[] args)
{
IEnumerable<string> names = new[]{"Jack", "Wilson", "Catherine", "Rina", "Pipit", "Job"};

Console.WriteLine("Upper Case: ");
Consumer(names, item => Console.WriteLine(item.ToUpper()));

Console.WriteLine("Length: ");
Consumer(names, item => Console.WriteLine(item.Length));
}
}
}

Capture screen

Action Delegate

Action Delegate

Referensi : dari berbagai sumber.

Semoga bermanfaat.

Advertisements

Func C#

May 17, 2015 Leave a comment

Func adalah delegate yang mempunyai zero, satu atau lebih input parameter dan mengembalikan value/reference. Kita dapat menggunakan Func untuk merepresentasikan method yang dapat di-pass sebagai parameter tanpa mendeklarasikan delegate secara explisit.

Berikut ini syntax Func

delegate TResult Func ();
delegate TResult Func (T arg);
delegate TResult Func (T1 arg1, T2 arg2);
.. and so on, up to T16

Example.

using System;
using System.Text;
using System.Threading.Tasks;
using System.Linq;
using System.Collections.Generic;

namespace AppBasicConsole
{
class Program
{
public static IEnumerable GetNumbers(IEnumerable numbers, Func numberResolver)
{
foreach (int number in numbers)
if (numberResolver(number))
yield return number;
}

static void Main(string[] args)
{

IEnumerable numbers = new[] { 1, 2, 3, 5, 4, 6, 7, 27, 8, 13, 21, 32, 9, 11, 14, 24};

IEnumerable greaterThanSeven = GetNumbers(numbers, x => x > 7);
greaterThanSeven.ToList().ForEach(Console.WriteLine);

Console.WriteLine("--------------");

IEnumerable greaterThanOneAfterDividedByEleven = GetNumbers(numbers, n => (n / 11) > 1);
greaterThanOneAfterDividedByEleven.ToList().ForEach(Console.WriteLine);

}
}
}

Capture screen.

Func Delegate

Func Delegate

Referensi : dari berbagai sumber.

Semoga bermanfaat.

Anonymous method C#

April 4, 2015 Leave a comment

Anonymous method adalah method tanpa nama, hanya block body method. Kita tidak perlu menspesifikasikan return type dari anonymous method tersebut karena return type disimpulkan secara implisit dari return statement.
Anonymous method menyediakan teknik untuk passing code-block sebagai parameter delegates. Anonymous method di deklarasikan saat inisiasi instance delegates dengan keyword delegate.

<delegate-name> <delegate-object-name> = <delegate-keyword> ()
{
/* Method body*/
};

Example

namespace AppBasicConsole
{
delegate int NumberChanger(int inputNumber);
delegate string StringReverse(string inputString);

class Program
{

static void Main(string[] args)
{

NumberChanger numberChanger = delegate(int inputNumber)
{
return inputNumber * inputNumber;
};

StringReverse reverse = delegate(string inputString)
{
char[] arrCharacter = inputString.ToCharArray();
Array.Reverse(arrCharacter);
return new string(arrCharacter);
};

Console.WriteLine(numberChanger(5));
Console.WriteLine(reverse("Hello, Goodbye"));

}
}
}

Semoga bermanfaat.

Referensi : dari berbagai sumber.

Delegates C#

April 3, 2015 Leave a comment

Delegates adalah type yang mempunyai reference pada method dengan parameter dan return type yang sama ( -dengan method ).  Setelah men-inisiasi delegates, kita dapat men-reference delegates tersebut dengan method  yang mempunyai parameter dan return type yang sama dan dapat memanggil method melalui delegates.

Syntax untuk mendeklarasikan delegates.
delegate <return type> <delegate-name> (<parameter list>)

Syntax untuk meninisiasi delegates.

<delegate-name> <delegate-object-name> = new <delegate-name>(<method-name>)
atau
<delegate-name> <delegate-object-name> = <method-name>

Example.

namespace AppBasicConsole
{
delegate int NumberChanger(int inputNumber);
delegate string StringReverse(string inputString);

class Program
{
public static int AddNumber(int inputNumber){
return inputNumber + 5;
}

public static int MultipleNumber (int inputNumber){
return inputNumber * inputNumber;
}

public static string Reverse(string inputString)
{
char[] arrCharacter = inputString.ToCharArray();
Array.Reverse(arrCharacter);
return new string(arrCharacter);
}

static void Main(string[] args)
{
NumberChanger numberChangerOne = AddNumber;
NumberChanger numberChangerTwo = MultipleNumber;
StringReverse stringReverse = Reverse;

Console.WriteLine(numberChangerOne(5));
Console.WriteLine(numberChangerTwo(5));
Console.WriteLine(stringReverse("Indonesia"));
}
}
}

Capture screen.

Delegates

Delegates

Referensi : dari berbagai sumber.
Semoga bermanfaat.

Access Modifier C#

March 22, 2015 Leave a comment

Di C# terdapat 5 access modifier yang berfungsi untuk men-set accessibility dari types ( class, struct, interface, enum ) dan type members ( fields, properties, methods, indexers, etc ).

Berikut ini summary dari access modifier,

Access Modifier C#

Access Modifier C#

Type default dan type members access modifier.

Types default and type members access modifier

Types default and type members access modifier

Referensi : dari berbagai sumber.

Semoga bermanfaat.

Struct C#

March 7, 2015 Leave a comment

Di C#, structure adalah jenis nilai tipe data . Digunakan untuk membuat single variable yang dapat men-hold berbagai jenis type data lain. Struct kata kunci digunakan untuk membuat structure di C#.

Berikut ini example structure.

Struct Rectangle ( Rectangle.cs )

struct Rectangle
{
private int Width;
private int Height;
public int WidthProperty {
get
{
return Width;
}
set
{
Width = value;
}
}

public int HeightProperty
{
get
{
return Height;
}
set
{
Height = value;
}
}

public int GetSquare()
{
return HeightProperty * WidthProperty;
}
}

Main class ( Program.cs )

class Program
{
static void Main(string[] args)
{
Rectangle rectangleFirst = new Rectangle
{
HeightProperty = 10,
WidthProperty = 20
};
Console.WriteLine( rectangleFirst.GetSquare());

Rectangle rectangleSecond = new Rectangle();
rectangleSecond.HeightProperty = 99;
rectangleSecond.WidthProperty = 11;

Console.WriteLine(rectangleSecond.GetSquare());
}
}

Pendeklarasian Struct secara syntax hampir sama dengan pendeklarasian class, tapi secara behaviour sangat berbeda, struct adalah value type sedangkan class adalah reference type. Untuk inisialisasi struct dapat dilakukan dengan 2 cara seperti pada example diatas. Feature struct yang lain adalah :

  • Struct dapat methods, fields, indexers, properties, operator methods, dan events.
  • Struct dapat memiliki constructors, tapi tidak dengan destructors.
  • Struct tidak dapat dijadikan base untuk struct lain atau class.
  • Struct dapat men-implement satu / lebih interface.
  • Struct members tidak dapat mempunyai modifier seperti abstract, virtual, atau protected.

Referensi : dari berbagai sumber.

Semoga bermanfaat.

Categories: C# and dot NET Tags: ,

Extension Method di C#

February 25, 2015 Leave a comment

Salah satu feature di C# 3.0 adalah extension method. Dengan feature tersebut dapat menambahkan fungsionalitas baru pada instance/object type. Extension method merupakan static method yang berada pada static class dengan keyword this sebagai parameter input pada method tersebut. Pada Visual Studio IntelliSense, extension method mempunyai symbol panah/arrow kebawah.

Example.

Plant.cs ( Plant class )

class Plant
{
public Plant()
{
}
}

PlantExtension.cs ( PlantExtension class )

static class PlantExtension
{
static public void PlantName(this Plant plant, string plantName)
{
Console.WriteLine("Plant name is: " + plantName);
}
}

Main class

class Program
{
static void Main(string[] args)
{
Plant plant = new Plant();
plant.PlantName("Pinus");
}
}

Capture screen.

Extension Method

Extension Method

Referensi : dari berbagai sumber.

Semoga bermanfaat. 🙂