私はこれをいくつかの方法で試してきましたが、できないという結論に達しています。これは私が過去に他の言語から享受してきた言語機能です。それはちょうど私が書き留める必要がありますか?スタティックインデクサは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; }
}
}
}
}
...あなたが意図している方法でアクセスできるg。これは、イミディエイトウィンドウでテストすることができます...
Memory.Register[0] = 12 * 12;
?Memory.Register[0]
144
関連する問題
- 1. 指定されたパスはサポートされていません。C#
- 2. ChangeCulture:Culture名はC#Winformでサポートされていません
- 3. TrueTypeFont.drawString()はサポートされていません
- 4. エンティティフレームワークキャストはサポートされていません
- 5. はサポートされていませんSqlFunctions.DateDiff
- 6. ファイルパスはサポートされていません
- 7. スイッチ内の文字列はサポートされていません - ソース1.5ではサポートされていません。 "
- 8. c#cosmos IndexOfはサポートされていません
- 9. C++バインドUDPソケットアドレスファミリはサポートされていません
- 10. C++ OpenGLシェーディングバージョンエラー - GLSL xはサポートされていません[Ubuntu 16.04]
- 11. "キーワードはサポートされていません" MySQL C#
- 12. シンボルはjxBrowserではサポートされていませんか?
- 13. なぜ "Maybe.doOnDispose"はRxJava2ではサポートされていませんか?
- 14. は "System.Windows.Browser"はxbox lakeview adkでサポートされていませんか?
- 15. varcharとnvarcharはPostgreSQLではサポートされていませんか?
- 16. 64ビットモードではOleDBはサポートされていませんか?
- 17. DOM値プロパティはIEではサポートされていませんか?
- 18. MarqueeスタイルProgressBarはWin7ではサポートされていませんか?
- 19. MIPSアセンブリでは'set noat 'はサポートされていませんか?
- 20. RowVectorXdはrcppEigenではサポートされていませんか?
- 21. jQueryバージョンはAndroid 7.0ではサポートされていませんか?
- 22. USSDはまだAndroidでサポートされていませんか?
- 23. ブラウザはローカルホスト上でFirebaseでサポートされていませんか?
- 24. cell2matはMATLAB CoderのCコード生成ではサポートされていません
- 25. アドレスファミリはプロトコルでサポートされていませんか? sendto
- 26. アクションリンクはグラフAPIでサポートされていませんか?
- 27. RGBA BackgroundプロパティはCSS3トランジションでサポートされていませんか?
- 28. iframeタグはmozilla firefoxでサポートされていませんか?
- 29. es6テンプレートリテラルはFirefoxブラウザでサポートされていませんか?
- 30. RangyモジュールはChromeでサポートされていませんか?
正確に。彼らは彼らの場所を持っています。ここでは設計上の問題について話している他の人たちは、非常に有益なので、許可されている古典的な言語を使ったことはありません。 – user9991
正確に私のポイント。彼らは建築に非常に便利な場所を持っています。何人かの人々は盲目的に動いていると思います。 – Kilhoffer
クラップス。今私はキャッシュ[キー]の代わりに静的メソッドCache.Get(キー)を書く必要があります... – Gishu