មេរៀនទី១២: ប៉ារ៉ាម៉្រែត Array

មេរៀនទី១២: ប៉ារ៉ាម៉្រែត Array

1. បង្កើត Overloaded Method

Overload គឺជាបច្ចេកទេសសំរាប់ប្រកាស declare ពីរឬ ច្រើន methods ជាមួយឈ្មោះដូចគ្នានៅក្នុង scope ដូចគ្នា ។ ចាប់ផ្តើមអាចធ្វើ overload method គឺប្រើក្នុងករណីកន្លែងដែលអ្នកចង់ចាត់ចែង សកម្មភាព នៅលើ arguments នៃប្រភេទខុសគ្នា ។ ឧទាហរណ៍ overload ក្នុងកម្មវិធី Microsoft Visual C# is Console.WriteLine ។ WriteLine method គឺជា overloaded ប្រើរយះពេលដ៏ធំដែលអ្នកអាចផ្ញើទៅក្នុងប្រភេទ primitive argument:

class Console

{

public static void WriteLine(int parameter)

public static void WriteLine(double parameter)

public static void WriteLine(decimal parameter)

}

2. ប្រើប្រាស់ Array Argument គឺជាមធ្យោបាយអ្នកនឹងអាចរកឃើញអប្បរិមានៃ តំលៃចំនួនអថេរ នឹងប្រើ ទៅក្នុង array មួយ ។ ឧទាហរណ៍ ដើម្បីរកតំលៃតូចបំផុតនៃ int អ្នកនឹងអាចសរសេរ static method ដែលហៅថា Min ដែល parameter ទោលដែលគឺជា តំលៃ array នៃ int:

class Util

{

public static int Min(int[] paramList)

{

if (paramList == null || paramList.Length == 0)

{

throw new ArgumentException(“Util.Min”);

}

int currentMin = paramList [0];

foreach (int i in paramList)

{

if (i < currentMin)

{

currentMin = i;

}

}

return currentMin;

}

}

ដើម្បីប្រើ Min method សំរាប់រកមើលតំលៃអប្បរិមាពីរនៃ int អ្នកនឹង សរសេរដូចនេះ:

int[] array = new int[2];

array[0] = first;

array[1] = second;

int min = Util.Min(array);

ដើម្បីប្រើ Min method សំរាប់រកតំលៃអប្បរិមានៃ បីចំនួន int អ្នកនឹង សរសេរដូចនេះ:

int[] array = new int[3];

array[0] = first;

array[1] = second;

array[2] = third;

int min = Util.Min(array);

ប្រកាស params Array

អ្នកអាចប្រើពាក្យគន្លឹះ params ដូចជា array parameter មួយដែល ផ្លាស់ប្តូរ ឧទាហរណ៍ Min ពេលនេះប្រើជាមួយ array parameter ដែល

ប្រកាស declared ដូចជា params array:

class Util

{

public static int Min(params int[] paramList)

{

// code exactly as before

}

}

លទ្ធផលនៃពាក្យគន្លឹះ params នៅលើ Min method គឺវាអនុញ្ញាត អោយអ្នកហៅវាដោយប្រើចំនួនគត់ integer arguments ។ ឧទាហរណ៍ រក តំលៃអប្បបរិមានៃពីរចំនួនគត់ integer អ្នកនឹងអាចសរសេរដូចនេះ:

int min = Util.Min(first, second);

និង compiler បកប្រែហៅទៅក្នុង code ខាងក្រោមនេះ:

int[] array = new int[2];

array[0] = first;

array[1] = second;

int min = Util.Min(array);

ដើម្បីរកតំលៃអប្បបរិមានៃបីតំលៃចំនួនគត់ អ្នកនឹងសរសេរដូចនេះ:

int min = Util.Min(first,second,third);

រួចហើយ compiler បកប្រែហៅទៅក្នុង code ខាងក្រោមនេះ:

int[] array = new int[3];

array[0] = first;

array[1] = second;

array[2] = third;

int min = Util.Min(array);

មានចំណុចជាច្រើនដែលមិនល្អអំពី params arrays:

 

· អ្នកអាចប្រើពាក្សគន្លឹះគ្រាន់តែជា single-dimension arrays​ ដូចឧទាហរណ៍នេះ:

// compile-time error

public static int Min(params int[,] table)

­ អ្នកមិនអាច overload មូលដ្ឋាននៅលើពាក្យគន្លឹះ params ។ ពាក្យ គន្លឹះ params មិនមាន form នៃ method ដូចបង្ហាញក្នុងឧទាហរណ៍ក្រោមនេះ

// compile-time error: duplicate declaration

public static int Min(int[] paramList)

public static int Min(params int[] paramList)

­ អ្នកមិនអនុញ្ញាត ref ឬ out params arrays ដូចបង្ហាញឧទាហរណ៍ ខាងក្រោមនេះ:

// compile-time errors

public static int Min(ref params int[] paramList)

public static int Min(out params int[] paramList)

­ params array មួយត្រូវតែ parameter ពីមុន (នេះមានន័យថាអាច មាន params array ក្នុង method) ឧទាហរណ៍ខាងក្រោមនេះ:

// compile-time error

public static int Min(params int[] array,int i)

­ compiler រាវរក rejects និងអនុភាពមិនច្បាស់លាស់នៃ overloads ។ ឧទាហរណ៍ ខាងក្រោមនេះមានពីរ Min methods មិនច្បាស់

លាស់; វាមិនច្បាស់លាស់ដែលមិនហៅផ្ញើទៅពីរ int arguments:

// compile-time error

public static int Min(params int[] paramList)

public static int Min(int, params int[] paramList)

­ មិនមាន non-params method ដែលតែងតែមានអទិភាពលើ params method ។ នេះមានន័យថាប្រសិនបើអ្នកចង់ធ្វើ អ្នកអាចនៅតែ overload សំរាប់ករណីរួមឧទាហរណ៍:

public static int Min(int leftHandSide, int rightHandSide)

public static int Min(params int[] paramList)

3. Console.WriteLine

Console class ដែលផ្ទុកនៅលើ overloads ច្រើនសំរាប់ WriteLine method មួយនៃ overloads ទាំងនេះមើលឃើញដូចខាងក្រោមនេះ:

public static void WriteLine(string format, params object[] arg);

ឧទាហរណ៍ នៃការហៅ method:

Console.WriteLine(“Name:{0}, Age:{1}”, name, age);

compiler ដោះស្រាយហៅនៅក្នុងដូចខាងក្រោមនេះ:

Console.WriteLine(“Name:{0}, Age:{1}”, new object[2]{name, age});

ប្រើ params Array

ក្នុងលំហាត់បន្ទាប់នេះ អ្នកនឹងធ្វើការជាមួយ console application រួចហើយសរសេរ static method ដែលហៅថា Util.Min ដែលមានគោល

បំណងគឺដើម្បីរកនិងត្រឡប់ទៅក្នុងអថេរចំនួនអប្បបរិមានៃ int arguments ដែលផ្ញើទៅវា ។ អ្នកនឹងធ្វើដោយសរសេរ Util.Min ជាមួយ params int[] parameter ។ អ្នកនឹងអនុវត្តពីរលក្ខខ័ណ្ឌឆែកនៅលើ param parameter ដើម្បីធ្វើអោយប្រាកដ Util.Min method ត្រូវបំពេញបញ្ចប់ ។ ចុងក្រោយបំផុត អ្នកនឹងហៅ Util.Min method ជាមួយការផ្ទៀងផ្ទាត់រវាង argument ដើម្បី បញ្ជាក់ធ្វើជាទូទៅ ។

សរសេរ params array method

1. ចាប់ផ្តើមចូលក្នុង Start Visual Studio .NET ។

2. បើក ParamsArrays project ដែលមានទីតាំងក្នុង\Microsoft Press\Visual C# Step by Step\Chapter 11\ ParamsArrays folder នៅក្នុង My Documents folder របស់អ្នក ។

3. បើកប្រភព file Open the Util.cs នៅក្នុង Code pane នៃសន្លឹក Code And Text Editor ។ ក្នុង Util.cs file ផ្ទុក class ទទេដែល ហៅថា Util នៅក្នុង ParamsArrays namespace ។

4. នៅក្នុង Code pane បន្ថែម public static method ដែលហៅថា Min ទៅ Util class ។ ដែល Util.Min method ត្រឡប់ទៅ int និង អនុញ្ញាត params array នៃតំលៃ int ។ Util.Min និងបង្ហាញដូចនេះ:

class Util

{

public static int Sum(params int[] paramList)

{

}

}

4. ជំហានដំបូងក្នុងការអនុវត្តន៍ Util.Min គឺឆែកមើល array parameter ។ វាគឺជា null ហើយនិងជា array មួយដែលមានប្រវែង zero length ។

5. ក្នុង Code pane បន្ថែម statement មួយទៅអោយ Util.Min ដែល បោះចោល ArgumentException ប្រសិនបើ array គឺជា null ។ Util.Min នឹងបង្ហាញដូចខាងក្រោមនេះ:

public static int Sum(params int[] paramList)

{

if (paramList == null)

{

throw new ArgumentException(“Util.Sum: null parameter list”);

}

}

6. ក្នុង Code pane បន្ថែម statement មួយទៅ Util.Min ដែល បោះ

ចោល ArgumentException ប្រសិនបើប្រវែងនៃ array គឺជា 0 ។ Util.Min នឹងបង្ហាញដូចនេះ:

public static int Sum(params int[] paramList)

{

if (paramList == null)

{

throw new ArgumentException(“Util.Sum: null parameter list”);

}

if (paramList.Length == 0)

{

throw new ArgumentException(“Util.Sum: empty parameter list”);

}

}

7. ក្នុង Code pane បន្ថែម statement នីមួយៗទៅ Util.Min ដើម្បីរក មើលធាតុ int ដែលតូចបំផុតនៅក្នុង array រួចហើយត្រឡប់វាពីក្នុង Util.Min ត្រឡប់ statement ។ Util.Min នឹងបង្ហាញដូចខាងក្រោមនេះ:

{

int sumTotal = 0;

foreach (int i in paramList)

{

sumTotal += i;

}

return sumTotal;

}

}

 

8. ក្នុង Code pane បន្ថែម public static ផ្សេងទៀតដែលហៅថា Min ទៅអោយ Util class ។ វិធី method នេះនឹងត្រឡប់ទៅក្នុង int ហើយ អនុញ្ញាតពីរ int parameters ។ ការអនុវត្តន៍ Util.Min ជាមួយ return statement ទោលដែលប្រើប្រមាណវិធីស្ទួនហើយប្រមាណវិធី ។

The new Util.Min នឹងមើលឃើញដូច្នេះ:

Console.WriteLine(Util.Sum(null));

Exception: Util.Min: null parameter list

Console.WriteLine(Util.Sum());

Exception: Util.Min: empty parameter list

Console.WriteLine(Util.Sum(10,9,8,7,6,5,4,3,2,1));

9. នៅក្នុង Code pane ប្តូរ if statement នៅក្នុង statement នីមួយៗក្នុង Util.Min method ដើម្បីហៅ Util.Min method ថ្មី ។

Util.Min ដើមនឹងមើលដូចខាងក្រោមនេះ:

class Util

{

public static int Min(params int[] array)

{

if (array == null)

{

throw new ArgumentException(“Util.Min: null array”);

}

if (array.Length == 0)

{

throw new ArgumentException(“Util.Min:empty array”);

}

int currentMin =array[0];

foreach (int i in array)

{

currentMin = Min(currentMin, i);

}

return currentMin;

}

}

10. នៅលើ Build menu ចុចលើ BuildSolution ។ បញ្ជាក់ថាមិនមាន​ errors ក្នុង code របស់អ្នក ។

ហៅ params array method

1. ក្នុង Code pane បើកប្រភព Program.cs ។

2. ក្នុង Code pane ទីតាំង Entrance method ក្នុង Program class.

3. ក្នុង Code pane បន្ថែម statement ខាងក្រោមទៅ Entrance method:

Console.WriteLine(Util.Min(null));

4. នៅលើ Debug menu ចុចលើ Start Without Debugging ឬប្រើ shortcut key Ctrl+F5 ។ កម្មវិធី builds និងរត់ដំណើរការដែល សរសេរ message ទៅអោយ console ដូចខាងក្រោមនេះ:

Exception: Util.Min: null array

5. នៅក្នុង Code pane ប្តូរហៅទៅ Console.WriteLine ក្នុង Entrance បន្ទាប់មក statement:

Console.WriteLine(Util.Min());

6. នៅលើ Debug menu ចុចលើ Start Without Debugging ឬប្រើ shortcut key Ctrl+F5 ។ កម្មវិធី builds រួចរត់ដំណើរការដែល សរសេរ message ទៅ console​ ដូចខាងក្រោមនេះ:

Exception: Util.Min: empty array

នេះបញ្ជាក់ថាហៅវិធី params method ដោយមិមាន arguments លទ្ធផលប្រវែង array ០ និង មិនមាន null ទីពីរលក្ខខ័ណ្ឌឆែកមើល ក្នុង Util.Min គឺជាការចាំបាច់ ។

7. ប្តូរហៅ Console.WriteLine នៅក្នុង Entrance ដូចខាង

ក្រោមនេះ:

Console.WriteLine(Util.Min(10,9,8,7,6,5,4,3,2,1));

8. នៅលើ Debug menu ចុចលើ Start Without Debugging ឬប្រើ shortcut key Ctrl+F5 ។

9. កម្មវីធី builds, runs រួចហើយសរសេរ 1 ទៅ console ។

សង្ខេបជំពូកទី ១១

ប្រធានបទ

ការអនុវត្តន៍

សរសេរ method ដែលអាច អនុញ្ញាតចំនួននៃប្រភេទបានផ្តល់អោយ ។

 

សរសេរ method មួយដែលមាន parameter គឺជា paramsarray នៃប្រភេទដែលបាន

ផ្តល់អោយ ។ ឧទាហរណ៍ method

ដែលអនុញ្ញាតចំនួននៃ bool arguments នឹងមាន:

someType Method(params bool[] flags)

{

}

សរសេរ method ដែលអាច មានចំនួននៃ arguments នៃប្រភេទផ្សេងទៀត ។  សរសេរ method មួយដែល params array នៃ object មួយ ឧទាហរណ៍:someType Method(params object[] paramList)

{

}

អនុញ្ញាតប្រើ command-line arguments នៅក្នុង Main  សរសេរ Main ដើម្បីអនុញ្ញាតចូល array នៃ strings ។ (ពាក្យគន្លឹះparams គឺមិនចាំបាច់ក្នុងករណី នេះ) ឧទាហរណ៍:

static void Main(

string[] args)

{

}