나는이 방법을 여러 가지 방법으로 시도해 왔지만 할 수 없다는 결론에 도달했습니다. 과거 다른 언어에서 내가 좋아했던 언어 기능입니다. 그냥 내가 써야 할게 뭔가?정적 인덱서는 C#에서 지원되지 않습니까?
34
A
답변
59
아니요, 정적 인덱서는 C#에서 지원되지 않습니다. 그러나 다른 답변 들과는 달리, 나는 그 (것)들을 갖는 데있어서 얼마나 중요한지 쉽게 알 수 있습니다. 고려 :
Encoding x = Encoding[28591]; // Equivalent to Encoding.GetEncoding(28591)
Encoding y = Encoding["Foo"]; // Equivalent to Encoding.GetEncoding("Foo")
그것은 상대적으로 거의 사용되지 않을 것입니다, 나는 생각한다,하지만 난 그것을 금지 있다는 이상한 생각 - 그것은 지금까지 내가 볼 수있는 특별한 이유 비대칭 성을 제공합니다.
16
당신은 정적 색인 속성을 사용하여 정적 인덱서를 시뮬레이션 할 수 있습니다 :
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()); }
}
}
사용법 :
Encoding x = MyEncoding.Items[28591]; // Equivalent to Encoding.GetEncoding(28591)
Encoding y = MyEncoding.Items["Foo"]; // Equivalent to Encoding.GetEncoding("Foo")
+3
Jon의 답변 (평소와 같이)이 가장 정확하지만 일부 상황에서는 그다지 좋지 않습니다. – Thiru
0
아니,하지만 사용하는 클래스의 인스턴스를 보유하고 정적 필드를 만들 수 있습니다 인덱서 ...
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; }
}
}
}
}
... 당신이 의도 한 방식으로 접근 할 수있는 지. 직접 실행 창에서 테스트 할 수 있습니다.
Memory.Register[0] = 12 * 12;
?Memory.Register[0]
144
관련 문제
- 1. NSRegularExpression - iPad가 지원되지 않습니까?
- 2. @dynamic 속성은 GDB에서 지원되지 않습니까?
- 3. 토런트 파일 인덱서는 어떻게 구성합니까?
- 4. C에서 정적 메서드가 필요함
- 5. C에서 정적 가져 오기
- 6. select 최상위 nodetext는 jQuery에서 지원되지 않습니까?
- 7. OleDB는 64 비트 모드에서 지원되지 않습니까?
- 8. Where-Clause에서 NHibernate Linq DateTime이 지원되지 않습니까?
- 9. 안드로이드 SDK가 Windows Vista에서 지원되지 않습니까?
- 10. Perl 5.8.8에서 XML :: LibXML이 지원되지 않습니까?
- 11. target = attribute의 "_new"값이 HTML5에서 지원되지 않습니까?
- 12. 재귀 구조형은 scala에서 더 이상 지원되지 않습니까?
- 13. 왜이 쿼리는 엔티티에 대한 linq에서 지원되지 않습니까?
- 14. @Model은 Razor Views에서 VB 용으로 지원되지 않습니까?
- 15. C에서 "정적"필드에 대한 정리 #
- 16. Doxygen에서 정적 클래스를 문서화하지 않습니까?
- 17. C에서 정적 메서드 호출을 가로 채기하는 방법
- 18. C에서 스레드에서 비 정적 메서드에 액세스하는 방법
- 19. Objective-C에서 정적 메서드를 만들려면 어떻게해야합니까? 자바에서
- 20. C에서 다중 스레드의 정적 상수 변수에 액세스
- 21. iphone의 Objective C에서 정적 문자열 변수
- 22. Objective-C에서 정적 변수를 선언하는 방법은 무엇입니까?
- 23. Objective-C에서 메소드 오버로딩 - init에 사용되지 않습니까?
- 24. SQL Server 타임 스탬프 열이 Mono에서 지원되지 않습니까?
- 25. IIS7 용 web.config에서 핸들러 구성을 분리하십시오. (configSource가 지원되지 않습니까?)
- 26. CSS div 테이블 사용 - 아직 널리 지원되지 않습니까?
- 27. HTML의 img 태그에 대한 alt 속성이 Windows의 Safari에서 지원되지 않습니까?
- 28. RedHat Enterprise Linux 5.3 이상에서는 sem_timedwait가 제대로 지원되지 않습니까?
- 29. 왜 webservices가 정적 메서드를 허용하지 않습니까?
- 30. 어떻게 정적 클래스를 정적으로 만들지 않습니까?
정확히 일치합니다. 그들에게는 그들의 자리가 있습니다. 디자인 문제에 관해 이야기하는 다른 이들은 명확하게 허용 된 고전어로 작업 한 적이 없었습니다. 왜냐하면 매우 도움이되기 때문입니다. – user9991
예. 정확히 요. 그들은 건축에서 매우 유용한 장소를 가지고 있습니다. 어떤 사람들은 그들의 눈가리개를 가지고 있습니다. – Kilhoffer
쓰레기. 이제 Cache [key] 대신에 정적 메서드 Cache.Get (key)를 작성해야합니다 ... – Gishu