Keyword Readonly pada bahasa pemrograman C#

Keyword Readonly pada bahasa pemrograman C# | IDCSharp
Keyword Readonly pada bahasa pemrograman C# | IDCSharp

Modifier readonly pada bahasa pemrograman c#, berfungsi untuk menccegah member dari class untuk dimodifikasi ketika berjalan.

field yang bertipe Readonly hanya dapat diubah ketika kamu mendeklarasikannya atau dari dalam constructor.

Keyword readonly merupakan modifier dalam bahasa pemrograman C# yang dapat digunakan dalam 3 konteks yaitu :

  • Saat mendeklarasikan field, readonly mengindikasikan bahwa tugas untuk field hanya dapat terjadi sebagai bagian dari deklarasi atau dalam sebuah konstruktor di kelas yang sama.
  • Saat mendeklarasikan struct yang bersifat readonly, readonly disini menunjukan bahwa struct tidak dapat diubah.
  • Dalam method return ref readonly, modifier readonly disini mengindikasikan bahwa method yang berfungsi untuk menulis dan mengembalikan reference tidak diperbolehkan pada reference tersebut.

contoh :

class internet
{
  readonly string website = "IDCSharp.com"; 
  public internet(string website) {
  this.website = website; 
  }

void ChangeWebsite()
    {
        //website = "www.ahr0chm6ly9pzgnzagfycc5jb20v.pixaku.space"; // Proses Kompilasi akan error 
    }
}

Perbedaan Readonly dengan Const C#

keyword readonly berbeda dengan keyword const, field dengan keyword const hanya dapat di inisialisasikan pada saat deklarasi dari field. Sedangkan field dengan keyword readonly dapat di tugaskan beberapa kali dalam deklarasi field dan di setiap Constructor. Oleh karena itu field yang bertipe readonly dapat mempunyai value atau nilai yang berbeda tergantung dengan constructor yang digunakan.

Sementara field dengan tipe const adalah compile-time constant. materi mengenai apa itu compile-time constant akan di bahas di materi lain. field dengan tipe readonly dapat digunakan untuk konstanta runtime.

contoh :

public static readonly uint timeStamp = (uint)DateTime.Now.Ticks;

Readonly Struct C#

Struct dengan modifier Readonly, bahwa struct bersifat immutable atau tidak dapat diubah. Setiap instance field pada struct harus ditandai dengan keyword readonly, seperti contoh di bawah ini:

public readonly struct idcsharp
{
    public int id { get; }
    public int csharp { get; }

    public idcsharp (int id, int csharp) => (id, csharp) = (id, csharp);

    public override string ToString() => $"({id}, {csharp})";
}

atau dapat juga dibuat seperti dibawah ini :

public readonly struct idcsharp
{
    public readonly int id;
    public readonly int csharp;

    public idcsharp(int id, int csharp) => (id, csharp) = (id, csharp);

    public override string ToString() => $"({id}, {csharp})";
}

Ref readonly C#

modifier readonly pada ref return, reference yang dikembalikan atau di return tidak dapat di modifikasi.

private static readonly idcsharp origin = new idcsharp (0, 0);
public static ref readonly idcsharp Origin => ref idcsharp ;

sampai jumpa di pembahasan selanjutnya, salam idcsharp.