Shared C# Snippet
// Program.cs
using System;
using System.Collections.Generic;
Console.WriteLine("C# Indexers Demo");
Console.WriteLine();
var team = new Team();
Console.WriteLine("1) Team indexer with int");
Console.WriteLine(team[0]);
Console.WriteLine(team[1]);
Console.WriteLine(team[2]);
team[1] = "Avto";
Console.WriteLine("After changing team[1]:");
Console.WriteLine(team[1]);
var settings = new AppSettings();
Console.WriteLine();
Console.WriteLine("2) Settings indexer with string key");
settings["theme"] = "dark";
settings["language"] = "ka";
settings["font"] = "Aptos";
Console.WriteLine(settings["theme"]);
Console.WriteLine(settings["language"]);
Console.WriteLine(settings["font"]);
Console.WriteLine();
var days = new DaysOfWeek();
Console.WriteLine("3) Read-only indexer");
Console.WriteLine(days[0]);
Console.WriteLine(days[1]);
Console.WriteLine(days[6]);
Console.WriteLine();
var safeTeam = new SafeTeam();
Console.WriteLine("4) Safe indexer with validation");
Console.WriteLine(safeTeam[0]);
Console.WriteLine(safeTeam[1]);
Console.WriteLine(safeTeam[10]);
safeTeam[1] = "Dato";
safeTeam[100] = "Should not crash";
Console.WriteLine(safeTeam[1]);
Console.WriteLine();
var grades = new StudentGrades();
Console.WriteLine("5) Multiple indexers");
Console.WriteLine(grades["Math"]);
Console.WriteLine(grades["English"]);
grades["Math"] = 100;
Console.WriteLine("After changing Math grade:");
Console.WriteLine(grades["Math"]);
Console.WriteLine("Subject by index:");
Console.WriteLine(grades[0]);
Console.WriteLine(grades[1]);
Console.WriteLine(grades[2]);
Console.WriteLine();
var cart = new ShoppingCart();
Console.WriteLine("6) Realistic example: Shopping cart");
cart.Add(new CartItem("Laptop", 2500));
cart.Add(new CartItem("Mouse", 50));
cart.Add(new CartItem("Keyboard", 150));
Console.WriteLine(cart[0]);
Console.WriteLine(cart[1]);
Console.WriteLine(cart[2]);
cart[1] = new CartItem("Gaming Mouse", 120);
Console.WriteLine("After changing cart[1]:");
Console.WriteLine(cart[1]);
Console.WriteLine();
Console.WriteLine("Done!");
// Team.cs
public class Team
{
private string[] _members = { "Gio", "Nika", "Ana" };
public string this[int index]
{
get
{
return _members[index];
}
set
{
_members[index] = value;
}
}
}
// CartItem.cs
public class CartItem
{
public string Name { get; set; }
public decimal Price { get; set; }
public CartItem(string name, decimal price)
{
Name = name;
Price = price;
}
public override string ToString()
{
return $"{Name} - {Price} GEL";
}
}
// ShoppingCart.cs
using System.Collections.Generic;
public class ShoppingCart
{
private List<CartItem> _items = new List<CartItem>();
public CartItem this[int index]
{
get
{
return _items[index];
}
set
{
_items[index] = value;
}
}
public void Add(CartItem item)
{
_items.Add(item);
}
}
// StudentGrades.cs
using System.Collections.Generic;
public class StudentGrades
{
private Dictionary<string, int> _grades = new Dictionary<string, int>
{
{ "Math", 90 },
{ "English", 85 },
{ "Physics", 95 }
};
private string[] _subjects = { "Math", "English", "Physics" };
public int this[string subject]
{
get
{
return _grades[subject];
}
set
{
_grades[subject] = value;
}
}
public string this[int index]
{
get
{
return _subjects[index];
}
}
}
// SafeTeam.cs
using System;
public class SafeTeam
{
private string[] _members = { "Gio", "Nika", "Ana" };
public string this[int index]
{
get
{
if (index < 0 || index >= _members.Length)
{
return "Invalid index";
}
return _members[index];
}
set
{
if (index < 0 || index >= _members.Length)
{
Console.WriteLine($"Cannot set value. Index {index} is invalid.");
return;
}
_members[index] = value;
}
}
}
// DaysOfWeek.cs
public class DaysOfWeek
{
private string[] _days =
{
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
};
public string this[int index]
{
get
{
return _days[index];
}
}
}
// AppSettings.cs
using System.Collections.Generic;
public class AppSettings
{
private Dictionary<string, string> _values = new Dictionary<string, string>();
public string this[string key]
{
get
{
return _values[key];
}
set
{
_values[key] = value;
}
}
}