He estado intentando esto de diferentes maneras, pero estoy llegando a la conclusión de que no se puede hacer. Es una función de idioma que he disfrutado de otros idiomas en el pasado. ¿Es solo algo que debería cancelar?¿Los indexadores estáticos no son compatibles con C#?
Respuesta
No, los indexadores estáticos no son compatibles con C#. A diferencia de otras respuestas, sin embargo, veo cómo podría haber un punto en tenerlas. Considero:
Encoding x = Encoding[28591]; // Equivalent to Encoding.GetEncoding(28591)
Encoding y = Encoding["Foo"]; // Equivalent to Encoding.GetEncoding("Foo")
Sería utilizado con relativa poca frecuencia, sospecho, pero yo creo que es extraño que está prohibido - le da la asimetría por ninguna razón particular por lo que yo puedo ver.
Puede simular indexadores estáticas utilizando las propiedades indexadas estáticas:
public class MyEncoding
{
public sealed class EncodingIndexer
{
public Encoding this[string name]
{
get { return Encoding.GetEncoding(name); }
}
public Encoding this[int codepage]
{
get { return Encoding.GetEncoding(codepage); }
}
}
private static EncodingIndexer StaticIndexer;
public static EncodingIndexer Items
{
get { return StaticIndexer ?? (StaticIndexer = new EncodingIndexer()); }
}
}
Uso:
Encoding x = MyEncoding.Items[28591]; // Equivalent to Encoding.GetEncoding(28591)
Encoding y = MyEncoding.Items["Foo"]; // Equivalent to Encoding.GetEncoding("Foo")
Aunque la respuesta de Jon (como de costumbre) es la más correcta, esta no es una alternativa tan mala para algunas situaciones. – Thiru
No, pero es posible crear un campo estático que contiene una instancia de una clase que utiliza un indexador ...
namespace MyExample {
public class Memory {
public static readonly MemoryRegister Register = new MemoryRegister();
public class MemoryRegister {
private int[] _values = new int[100];
public int this[int index] {
get { return _values[index]; }
set { _values[index] = value; }
}
}
}
}
... Que se puede acceder de la manera que se desea gramo. Esto se puede probar en la Ventana Inmediata ...
Memory.Register[0] = 12 * 12;
?Memory.Register[0]
144
- 1. Los desencadenadores no son compatibles con Windows 8 XAML?
- 2. contenedores adaptadores no son compatibles con los iteradores
- 3. Xattrs no son compatibles
- 4. ¿Ideone y Codepad realmente no son compatibles con C++ 03?
- 5. Los elementos duplicados no son compatibles con el parámetro "Recursos"
- 6. ¿Qué navegadores no son compatibles con los gifs animados?
- 7. SQLAlchemy con Python 3.2: ¿las extensiones C no son compatibles?
- 8. ¿Son compatibles los goto y los destructores?
- 9. son generadores compatibles en RPython?
- 10. Excepción: "formatos de URI no son compatibles"
- 11. ¿Qué etiquetas HTML son compatibles con los componentes Swing?
- 12. ¿Los alias de shell son compatibles con POSIX?
- 13. ¿Todos los navegadores son compatibles con $ _SERVER de PHP ['HTTP_X_REQUESTED_WITH']?
- 14. ¿Las extensiones reactivas son compatibles con los búfers de laminación?
- 15. Son declaraciones preparadas compatibles con MySQL incorporado
- 16. Son las funciones makecontext()/swapcontext() compatibles con C++
- 17. Cómo usar archivos compatibles con ARC en proyectos que no son compatibles con ARC
- 18. ¿Qué formatos de archivos gráficos son compatibles con los navegadores?
- 19. JQUERY, Advertencia Usuarios que no son compatibles con IE6
- 20. ¿Los objetos estáticos son únicos por usuario?
- 21. ¿Qué navegadores son compatibles con "! Important"?
- 22. ¿Por qué los navegadores modernos no son compatibles con los métodos de forma PUT y DELETE?
- 23. F #: ¿Por qué los tipos de opciones no son compatibles con los tipos que aceptan nulos?
- 24. ¿Qué navegadores son compatibles con HTML SHORTTAGs?
- 25. Trabajando LinqToSQls "consultas con colecciones locales no son compatibles" excepción
- 26. ¿Por qué algunos sitios web no son compatibles con iPad?
- 27. ¿Por qué las conexiones persistentes no son compatibles con URLLib2?
- 28. Last y LastOrDefault no son compatibles
- 29. ¿Qué navegadores son compatibles con XSLT 2.0?
- 30. ¿Qué navegadores solo son compatibles con SSLv2?
Exactamente. Ellos tienen su lugar. Otros aquí hablando sobre temas de diseño claramente nunca han trabajado con un lenguaje clásico que lo permitiera, ya que son muy útiles. – user9991
Sí. Exactamente mi punto. Tienen un lugar muy útil en la arquitectura. Algunas personas tienen sus anteojeras, supongo! – Kilhoffer
Mierda. Ahora debo escribir un método estático Cache.Get (clave) en lugar de Cache [key] ... – Gishu