idcsLogo
idcsLogo2
idcsLogo2
  • Home
  • E-Learning
    • Visual Studio C#
    • C# Dasar
    • Windows Form C#
    • Golang
    • SQL Server
  • Tips and Trick
    • Console
    • Windows Form
  • Submit Artikel
  • Laporkan Masalah

Generic Constraints pada bahasa pemrograman C#

Home » Generic Constraints pada bahasa pemrograman C#
  • Daftar Materi

    • Apakah itu C# ?
    • Mengenal .Net Framework
    • IDE pada C#
    • Variable pada C#
    • Membuat Program C#
    • Text C#
    • Var C#
    • Konstanta pada C#.
    • Operator Aritmatika C#
    • Asignment Operator C#
  • –

    • IF dan Else pada C#
    • Switch dan Case pada C#
    • Perulangan While pada C#
    • Perulangan For pada C#
    • Perulangan Do While C#
    • Switch dan Case pada C#
    • Operator Logika C#
  • –

    • Mengenal Method C#
    • Parameter Method C#
    • Named Arguments C#
    • Optional Argument C#
    • Method Overloading C#
    • Rekursif ( Recursion )C#
  • –

    • Class dan Object C#
    • Value dan Reference Type C#
    • Encapsulation C#
    • Constructor dan Destructor C#
    • Properti Class C#
    • Class dan Static Member C#
    • Keyword This C#
    • Keyword Readonly C#
    • Indexer C#
    • Operator Overloading C#
  • –

    • Mengenal Array C#
    • Perulangan Array C#
    • Array Multidimensi C#
    • Jagged Array C#
    • Property dan Method Array C#
    • String Object C#
  • –

    • Inheritance C#
    • Keyword Protected C#
    • polymorphism C#
    • Abstract Class C#
    • Nested Class C#
    • Interface C#
    • Namespace C#
  • –

    • Method dan Class C#
    • Generic Constraints C#
    • System Collection C#
    • BitArray C#
    • List C#
    • Stack C#
    • Queue C#
    • Dictionary C#
    • HashSet C#
  • –

    • Struct C#
    • Enumerasi C#
    • Exceptions Handling C#
    • System.IO namespace C#
  • Generic Constraints pada bahasa pemrograman C# | IDCSharp
    Generic Constraints pada bahasa pemrograman C# | IDCSharp

    Constraint merupakan suatu Validasi yang dapat kamu berikan pada Parameter bertipe Generic.

    Berikut adalah beberapa tipe dari Constraint, setiap Constraint dimulai dengan Syntax ( where T : )

    • struct  – Argument Harus bertipe Value
    • class – Argument Harus bertipe Reference
    • new() – harus memiliki Constructor tanpa parameter public.
    • <base class> – Argument harus diwarisi dari <base class>.
    • <interface> –  Argument harus diimplementasikan dari interface
    • U – Argument T harus diwarisi dari Argument U.

    Where T : Struct.

    Didalam Struct Constraint, kamu hanya bisa membuat argument bertipe Value. contoh :

    TodoList < int > li = new TodoList< int >();    
    TodoListlst2 < string > li2 = new TodoList< string >();
    

    Pada kode diatas, tipe string akan mendapatkan error, kenapa ?.

    Karena Tipe String bukan merupakan Value Tipe, melainkan Reference Tipe.

    Where T : Class

    Berbalikan dengan Where T:Struct, Where T:Class diharuskan argument bertipe Reference. beberapa diantaranya yang bertipe reference adalah : string, class dan delegasi.

    public class TodoList < T > where T : class
    {
    }
    TodoList < int > li = new TodoList < int >();
    TodoList < string > li = new TodoList < string >();        
    TodoList < EventHandler > li2 = new TodoList < EventHandler >();   
    

    Pada kode diatas, tipe int akan mendapatkan error, Karena Tipe int adalah berupa Value Type.

    Where T : new()

    Berbeda dengan sebelumnya yang mana validasinya berdasarkan tipe argument Reference ataupun Value.

    Where T:new(), memvalidasi argumentnya diharuskan memiliki Constructor tanpa parameter public.

    public classTodoList where T : new()
    {
    }
        class Program
        {
            static void Main(string[] args)
            {
    TodoList idcs = new TodoList(); 
    TodoList CategoryTodos = newTodoList();
                 
            }
        }
     
    public class Idcs
    {
        public Idcs()
        {
     
        }
    }
     
    public class Category
    {
        public Category(string CategoryName)
        {
     
        }
    }
    

    Pada Kode diatas, akan terjadi error pada Argument Category, karena argument Category mempunyai parameter CategoryName.

    where T : <base class>

    Pada Where T:<base clase>, Argument harus diwarisi dari <base class>.

    public class TodoList where T : Idcsharp
    {
    }
    public class Idcsharp
    {
    }
     
    public class Idcs : Idcsharp
    {
    }
     
    public class Category
    {
    }
     
    class Program
    {
        static void Main(string[] args)
        {
            TodoList idc = new TodoList(); 
     
            TodoList cat = new TodoList(); 
        }
    }
    

    Pada program di atas, akan terjadi error pada Category, kenapa ? karena status Categori tidak inherit atau mengambil warisan dari Base Class ( Idcsharp ).

    where T : <interface>

    argument harus mengimplementasikan Interface.

    public class TodoList where T : Idcsharp
    {
    }
     
    public interface Idcsharp
    {
    }
     
    public class Category : Idcsharp
    {
    }
     
    public class Member
    {
    }
      
    class Program
    {
        static void Main(string[] args)
        {
            TodoList cat = new TodoList(); 
     
            TodoList mem = new TodoList(); 
        }
    }
    

    Where T : U

    where T : U, merupakan Constraint yang mana ada 2 argument, yaitu T dan U, dan U dapat berupa interface, abstract, ataupum Class biasa. sedangkan T harus diwarisi atau mengambil warisan dari U.

    public class TodoList where T : U
    {
        public void ContohAja(T subClass, U baseClass)
        {
     
        }
    }
     
    public interface Idcsharp
    {
    }
     
    public class Member : Idcsharp
    {
    }
     
    class Program
    {
        static void Main(string[] args)
        {
            TodoList MemberNodes = new TodoList();
        }
    }
    
    Angga Adji Surya
    17
    C#, E-Learning
    Prev PostMethod dan Class Generic pada Bahasa Pemrograman C# | IDCSharpMethod dan Class Generic pada Bahasa Pemrograman C#Mar 26, 2019
    Next PostCollection pada bahasa pemrograman C#Mar 29, 2019Collection pada bahasa pemrograman C#
    idcsLogo
    IDCSharp menyediakan materi - materi bahasa pemrograman komputer dan informasi seputar dunia IT untuk kamu. Mari kita belajar membuat aplikasi bersama
    • Implementasi Media Video dan Audio pada HTML5 Part 2
    • Memahami 3 Jenis Api Model pada HTML5
    • Memahami 3 Api Model pada HTML5 Part 2
    • Memahami 3 Api Model pada HTML5 Part 3
    • Memahami 3 Api Model pada HTML5 Part 4
    • Home
    • E-Learning
      • Visual Studio C#
      • C# Dasar
      • Windows Form C#
      • Golang
      • SQL Server
    • Tips and Trick
      • Console
      • Windows Form
    • Submit Artikel
    • Laporkan Masalah
    Copyright © 2021 IDCSharp. All Rights Reserved