No, but you can come pretty close. See this example:
class Test
{
static Dictionary<int, string> map = new Dictionary<int, string>();
private Test() { }
private static Test instance = new Test();
internal static Test Instance
{
get { return Test.instance; }
}
public string this[int i]
{
get
{
return map[i];
}
set
{
map[i] = value;
}
}
}
Sample usage:
Test.Instance[3] = "hello";
string s = Test.Instance[3];