C#で[]演算子をオーバーロードするにはどうすればよいですか?
[]演算子はインデクサーと呼ばれます。
インデクサーを使用すると、配列などのオブジェクトにインデックスを付けることができます。クラスのインデクサーを定義すると、このクラスは仮想配列と同様に動作します。次に、配列アクセス演算子([])を使用してこのクラスのインスタンスにアクセスできます。
インデクサーはオーバーロードされる可能性があります。インデクサーは複数のパラメーターで宣言することもでき、各パラメーターは異なるタイプにすることができます。インデックスは整数である必要はありません。
例1
static void Main(string[] args){ IndexerClass Team = new IndexerClass(); Team[0] = "A"; Team[1] = "B"; Team[2] = "C"; Team[3] = "D"; Team[4] = "E"; Team[5] = "F"; Team[6] = "G"; Team[7] = "H"; Team[8] = "I"; Team[9] = "J"; for (int i = 0; i < 10; i++){ Console.WriteLine(Team[i]); } Console.ReadLine(); } class IndexerClass{ private string[] names = new string[10]; public string this[int i]{ get{ return names[i]; } set { names[i] = value; } } }
出力
A B C D E F G H I J
例2
オーバーライド[]
static class Program{ static void Main(string[] args){ IndexerClass Team = new IndexerClass(); Team[0] = "A"; Team[1] = "B"; Team[2] = "C"; for (int i = 0; i < 10; i++){ Console.WriteLine(Team[i]); } System.Console.WriteLine(Team["C"]); Console.ReadLine(); } } class IndexerClass{ private string[] names = new string[10]; public string this[int i]{ get{ return names[i]; } set{ names[i] = value; } } public string this[string i]{ get{ return names.Where(x => x == i).FirstOrDefault(); } } }
出力
A B C C
-
*演算子はPythonのタプルでどのように機能しますか?
star(*)演算子は、シーケンス/コレクションを位置引数に解凍します。したがって、タプルがあり、そのタプルの項目をタプル内にある各位置の引数として渡したい場合は、各要素に個別にインデックスを付ける代わりに、*演算子を使用できます。 例 def multiply(a, b): return a * b values = (1, 2) print(multiply(*values)) これにより、タプルが解凍され、実際に-として実行されます。 print(multiply(1, 2)) 出力 これにより、出力が得られます- 2
-
Ruby三項演算子の使用方法(?:)
Rubyの三項演算子とは何ですか? 三項演算子は3つの部分で構成されており、「三項」という言葉の由来です。これらの部分には、条件付きステートメントが含まれます &2つの可能な結果 。 つまり、ターナリを使用すると、1行のコードでコンパクトなif/else式を記述できます。 例 : 1 :eat_apple else :buy_apple end これになることができます : 1 ? :eat_apple : :buy_apple 三項演算子に感謝します! 質問… これはどのように機能しますか?正確には、適切な構文は何ですか? 調べてみましょう。 独自のTerna