Ищу для правильного синтаксиса, чтобы использовать неявный оператор в классе, который использует индексатор Асесс частный Словарь:Синтаксис неявного оператора с классом индексатор
[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;
}
}
}
Сейчас использование довольно прямо вперед
MyClass[anykey] = myValue
, но я хотел бы реализовать более быстрый способ, чтобы проверить наличие значения, как:
if(MyClass[anykey])
{ //logic }
Значение 'if (MyClass [k])' должно быть в том, что значение, связанное с ключом, является истинным, а не тем, что ключ существует в коллекции! Что, если значение 'MyClass [k]' существует и было * false *? Это было бы очень запутанно, если бы это выражение считалось истинным. –
Черт! Благодаря! Слишком много думал, что я даже потерял доказательства этого. Еще раз спасибо! – Ulrag