Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ Length ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· ΠΊΠΎΠ΄Π° Π² Π΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡΠ΅Π³ΠΎ Π°ΠΊΡΠ΅ΡΡΠΎΡ set ΠΎΠ±ΡΡΠ²Π»Π΅Π½ ΠΊΠ°ΠΊ private. Π ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Length Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π½Π΅ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ, ΠΏΠΎΡΡΡΠ΅ΡΡΠ²Ρ, ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Error, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.public bool Error { get; private set; }
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Error ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ, Π½ΠΎ Π½Π΅ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠ° FailSoftArray.
ΠΠ»Ρ ΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π½ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠ²ΠΎΠΉΡΡΠ² Length ΠΈ ErrorΠ² ΠΊΠ»Π°ΡΡΠ΅ FailSoftArray ΡΠ΄Π°Π»ΠΈΠΌ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ len ΠΈ ErrFlag, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈΠ±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½Ρ, Π° Π·Π°ΡΠ΅ΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ len ΠΈ ErrFlagΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ Length ΠΈ Error Π² ΠΊΠ»Π°ΡΡΠ΅ FailSoftArray. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉΠ²Π°ΡΠΈΠ°Π½Ρ ΠΊΠ»Π°ΡΡΠ° FailSoftArray Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Main(), Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΠΌ Π΅Π³ΠΎΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅.// ΠΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌΡΠ΅ ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅// ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Length ΠΈ Error.using System;class FailSoftArray { int[] a; // ΡΡΡΠ»ΠΊΠ° Π½Π° Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² // ΠΠΎΡΡΡΠΎΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠ°Π·ΠΌΠ΅ΡΡ. public FailSoftArray(int size) { a = new int [size]; Length = size; } // ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌΠΎΠ΅ ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Length. public int Length { get; private set; } // ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌΠΎΠ΅ ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Error. public bool Error { get; private set; } // ΠΡΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΎΡ Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²Π° FailSoftArray. public int this[int index] { // ΠΡΠΎ Π°ΠΊΡΠ΅ΡΡΠΎΡ get. get { if(ok(index)) { Error = false; return a[index]; } else { Error = true; return 0; } } // ΠΡΠΎ Π°ΠΊΡΠ΅ΡΡΠΎΡ set. set { if(ok(index)) { a[index] = value; Error = false; } else Error = true; } } // ΠΠΎΠ·Π²ΡΠ°ΡΠΈΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true, Π΅ΡΠ»ΠΈ // ΠΈΠ½Π΄Π΅ΠΊΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ°Ρ . private bool ok(int index) { if(index >= 0 & index < Length) return true; return false; }}// ΠΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ// ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°.class FinalFSDemo { static void Main() { FailSoftArray fs = new FailSoftArray(5); // ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Error. for(int i=0; i < fs.Length + 1; i++) { fs[i] = i*10; if(fs.Error) Console.WriteLine("ΠΡΠΈΠ±ΠΊΠ° Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅ " + i); } }}
ΠΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ ΠΊΠ»Π°ΡΡΠ° FailSoftArray Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ, Π½ΠΎ Π² Π½Π΅ΠΌ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠ΅ ΠΏΠΎΠ»Ρ, ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌΡΠ΅ ΡΠ²Π½ΠΎ.
ΠΠ° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² Π΄ΠΎΡΡΡΠΏΠ° Π² Π°ΠΊΡΠ΅ΡΡΠΎΡΠ°Ρ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π΄ΠΎΡΡΡΠΏΠ° ΠΏΠΎΠ΄Π»Π΅ΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π°ΠΊΡΠ΅ΡΡΠΎΡ: set ΠΈΠ»ΠΈ get, Π½ΠΎ Π½Π΅ ΠΎΠ±Π° ΡΡΠ°Π·Ρ. ΠΠΎ-Π²ΡΠΎΡΡΡ , ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠ±ΠΎΠ»Π΅Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ Π°ΠΊΡΠ΅ΡΡΠΎΡΡ, ΡΠ΅ΠΌ Π΄ΠΎΡΡΡΠΏ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈΠ»ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΎΡΠ°. Π Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄ΠΎΡΡΡΠΏΠ° Π½Π΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ Π°ΠΊΡΠ΅ΡΡΠΎΡΠ°Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°ΠΊΡΠ΅ΡΡΠΎΡΠ°, ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅. (ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°Ρ ΡΠ΅ΡΡ ΠΏΠΎΠΉΠ΄Π΅Ρ Π² Π³Π»Π°Π²Π΅ 12.)ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΎΡΠΎΠ² ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π±ΡΠ» ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π½ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΎΡΠΎΠ² ΠΈ ΡΠ²ΠΎΠΉΡΡΠ², Π½ΠΎ ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π΅ Π±ΡΠ»ΠΈ ΡΠ°ΡΠΊΡΡΡΡ Π² ΠΏΠΎΠ»Π½ΡΡΡΠΈΠ»Ρ. ΠΠΎΡΡΠΎΠΌΡ Π² Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ Π³Π»Π°Π²Ρ ΠΎΠ±ΡΠ°ΡΠΈΠΌΡΡ ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠ»Π°ΡΡΠ° RangeArray,Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΎΡΡ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΈΠΏΠ° ΠΌΠ°ΡΡΠΈΠ²Π° Ρ ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ.
ΠΠ°ΠΊ Π²Π°ΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π² C# Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡΡ Π½ΡΠ»Ρ. ΠΠΎ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ΄ΠΎΠ±Π½Π΅Π΅ Π½Π°ΡΠΈΠ½Π°ΡΡ Ρ Π»ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ ΠΎΡΡΡΠ΅ΡΠ°: Ρ 1 ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡ-5 ΠΈ Π΄ΠΎ 5. Π Π°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΠΉ Π·Π΄Π΅ΡΡ ΠΊΠ»Π°ΡΡ RangeArray ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±ΡΠ΄ΠΎΠΏΡΡΠΊΠ°ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ².
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ»Π°ΡΡ RangeArray, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π°.RangeArray rΠ° = new RangeArray(-5, 10); // ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ ΠΎΡ -5 Π΄ΠΎ 10for(int i=-5; i <= 10; i++) ra[i] = i; // ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΎΡ -5 Π΄ΠΎ 10
ΠΠ΅ΡΡΡΠ΄Π½ΠΎ Π΄ΠΎΠ³Π°Π΄Π°ΡΡΡΡ, ΡΡΠΎ Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΊΠΎΠ½ΡΡΡΡΠΈΡΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° RangeArray Ρ ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΎΡ -5 Π΄ΠΎ 10 Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ. ΠΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ, Π° Π²ΡΠΎΡΠΎΠΉ β ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎΠΎΠ±ΡΠ΅ΠΊΡ rΠ° Π±ΡΠ΄Π΅Ρ ΡΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°Π½, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠΈΠ² Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΎΡ -5 Π΄ΠΎ 10.
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΊΠ»Π°ΡΡ RangeArray Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΊΠ»Π°ΡΡΠΎΠΌ RangeArrayDemo,Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° Π² Π·Π°Π΄Π°Π½Π½ΡΡ ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ . ΠΠ»Π°ΡΡRangeArray ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ ΡΠΈΠΏΠ° int, Π½ΠΎΠΏΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΎΡ ΡΠΈΠΏ Π½Π° Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ./* Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΊΠ»Π°ΡΡ ΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΡΠΌΠΈ ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠ»Π°ΡΡ RangeArray Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° Ρ Π»ΡΠ±ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π½ΡΠ»Ρ. ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° RangeArray ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡΡ. ΠΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ, ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΠΎΡ -5 Π΄ΠΎ 5, ΠΎΡ 1 Π΄ΠΎ 10 ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΎΡ 50 Π΄ΠΎ 56. */using System;class RangeArray { // ΠΠ°ΠΊΡΡΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. int[] Π°; // ΡΡΡΠ»ΠΊΠ° Π½Π° Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² int lowerBound; // Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ int upperBound; // Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ // ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌΠΎΠ΅ ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Length. public int Length { get; private set; } // ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌΠΎΠ΅ ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Error. public bool Error { get; private set; } // ΠΠΎΡΡΡΠΎΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠ°Π·ΠΌΠ΅ΡΡ. public RangeArray(int low, int high) { high++; if(high <= low) { Console.WriteLine("ΠΠ΅Π²Π΅ΡΠ½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ"); high = 1; // ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π»Ρ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΉ ΠΌΠ°ΡΡΠΈΠ² low = 0; } Π° = new int[high - low]; Length = high - low; lowerBound = low; upperBound = --high; } // ΠΡΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΎΡ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ° RangeArray. public int this[int index] { // ΠΡΠΎ Π°ΠΊΡΠ΅ΡΡΠΎΡ get. get { if(ok(index)) { Error = false; return a[index - lowerBound]; } else { Error = true; return 0; } } // ΠΡΠΎ Π°ΠΊΡΠ΅ΡΡΠΎΡ set. set { if(ok(index)) { a[index - lowerBound] = value; Error = false; } else Error = true; } } // ΠΠΎΠ·Π²ΡΠ°ΡΠΈΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true, Π΅ΡΠ»ΠΈ // ΠΈΠ½Π΄Π΅ΠΊΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ°Ρ . private bool ok(int index) { if(index >= lowerBound & index <= upperBound) return true; return false; }}// ΠΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎ// Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΠΌΠΈ ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.class RangeArrayDemo { static void Main() { RangeArray ra = new RangeArray(-5, 5); RangeArray ra2 = new RangeArray(1, 10); RangeArray ra3 = new RangeArray(-20, -12); // ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ra Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠ°ΡΡΠΈΠ²Π°. Console.WriteLine("ΠΠ»ΠΈΠ½Π° ΠΌΠ°ΡΡΠΈΠ²Π° ra: " + rΠ°.Length); for(int i = -5; i <= 5; i++) ra[i] = i; Console.Write("Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ra: "); for(int i = -5; i <= 5; i++) Console.Write(ra[i] + " "); Console.WriteLine("\n"); // ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ra2 Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠ°ΡΡΠΈΠ²Π°. Console.WriteLine("ΠΠ»ΠΈΠ½Π° ΠΌΠ°ΡΡΠΈΠ²Π° ra2: " + ra2.Length); for(int i = 1; i <= 10; i++) ra2[i] = i; Console.Write("Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ra2: "); for(int i = 1; i <= 10; i++) Console.Write(ra2[i] + " "); Console.WriteLine("\n"); // ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ raΠ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠ°ΡΡΠΈΠ²Π°. Console.WriteLine("ΠΠ»ΠΈΠ½Π° ΠΌΠ°ΡΡΠΈΠ²Π° ra3: " + ra3.Length); for(int i = -20; i <= -12; i++) ra3[i] = i; Console.Write("Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ra3: "); for(int i = -20; i <= -12; i++) Console.Write(ra3[i] + " "); Console.WriteLine("\n"); }}
ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.ΠΠ»ΠΈΠ½Π° ΠΌΠ°ΡΡΠΈΠ²Π° ra: 11Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ra: -5 -4 -3 -2 -1 0 1 2 3 4 5ΠΠ»ΠΈΠ½Π° ΠΌΠ°ΡΡΠΈΠ²Π° ra2: 10Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ra2: 1 2 3 4 5 6 7 8 9 10ΠΠ»ΠΈΠ½Π° ΠΌΠ°ΡΡΠΈΠ²Π° ra3: 9Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ra2: -20 -19 -18 -17 -16 -15 -14 -13 -12
ΠΠ°ΠΊ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ· ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ ΠΊΠΎΠ΄Π°, ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΈΠΏΠ°RangeArray ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π»ΡΠ±ΠΎΠΉ ΡΠΎΡΠΊΠΈ ΠΎΡΡΡΠ΅ΡΠ°, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π½ΡΠ»Ρ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠ°ΠΌΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ°RangeArray.
Π Π½Π°ΡΠ°Π»Π΅ ΠΊΠ»Π°ΡΡΠ° RangeArray ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π°ΠΊΡΡΡΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°.// ΠΠ°ΠΊΡΡΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.int[] Π°; // ΡΡΡΠ»ΠΊΠ° Π½Π° Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²int lowerBound; // Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΉ ΠΈΠ½Π΄Π΅ΠΊΡint upperBound; // Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ