ich für die richtige Syntax suche einen impliziten Operator für eine Klasse zu verwenden, die einen Indexer ein eigenes Wörterbuch Acess verwendet:Syntax für impliziten Operator mit Klasse Indexer
[System.Serializable]
public class MyClass : IEnumerable
{
private Dictionary<string, object> vars = new Dictionary<string, object>();
public object this[string key]
{
get
{
if(vars.ContainsKey(key))
{
return (object)vars[key];
}
else
{
return null;
}
}
set
{
object o = value;
if(!vars.ContainsKey(key))
{
vars.Add(key, o);
}
else if(value == null)
{
vars.Remove(key);
}
else
{
vars[key] = o;
}
}
}
/*some code*/
public static implicit operator bool(WorldVars w, string i)
{
if(w[i] != null)
{
return true;
}
else
{
return false;
}
}
}
Im Augenblick ist die Verwendung ist ziemlich geradlinig
MyClass[anykey] = myValue
aber ich möchte einen schnelleren Weg zu implementieren, um die Anwesenheit eines Wertes zu testen, wie:
if(MyClass[anykey])
{ //logic }
Die Bedeutung von 'if (MyClass [k])' muss so sein, dass der mit dem Schlüssel verknüpfte Wert wahr ist, nicht dass der Schlüssel in der Sammlung existiert! Was wäre, wenn der Wert von 'MyClass [k]' existierte und * falsch * war? Das wäre sehr verwirrend, wenn dieser Ausdruck als wahr betrachtet würde. –
Verdammt! Vielen Dank! Zu viel Denken, dass ich sogar den Beweis dafür verloren habe. Danke noch einmal! – Ulrag