欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.net 反序題目的詳細(xì)解答第2/2頁(yè)

 更新時(shí)間:2009年06月13日 20:34:47   作者:  
在各種答案,以及平時(shí)面試過(guò)程中,這道題總歸會(huì)有一些非常典型的錯(cuò)誤發(fā)生。其中給老趙的感覺(jué)也非常有意思,不知其中的“思路”是否如老趙猜測(cè)那樣。

常見(jiàn)錯(cuò)誤
  在各種答案,以及平時(shí)面試過(guò)程中,這道題總歸會(huì)有一些非常典型的錯(cuò)誤發(fā)生。其中給老趙的感覺(jué)也非常有意思,不知其中的“思路”是否如老趙猜測(cè)那樣。

在方法中進(jìn)行輸入和輸出
  有不少朋友在代碼里放置了這樣的代碼:
復(fù)制代碼 代碼如下:

static void Reverse(int[] array, int begin, int end)
{
Console.WriteLine("請(qǐng)輸入xxx");
array[0] = Int32.Parse(Console.ReadLine());
...

for (int i = 0; i < array.Length; i++)
{
Console.WriteLine(i);
}
}

為什么會(huì)出現(xiàn)這種情況?老趙估計(jì)是受到了某些培訓(xùn)機(jī)構(gòu)的影響(觀察出現(xiàn)這個(gè)問(wèn)題的朋友們的分布便知)。這些培訓(xùn)一再?gòu)?qiáng)調(diào)輸入、輸出,而沒(méi)有讓學(xué)員有任何“模塊”,“類庫(kù)”,“輔助方法”的概念。學(xué)員的觀念中,任何程序都要向用戶去索要“輸入”,并且要“輸出”,否則就不算是程序。

打印錯(cuò)誤,而不是拋出異常
代碼如下:
復(fù)制代碼 代碼如下:

static void Reverse(int[] array, int begin, int end)
{
if (array == null)
{
Console.WriteLine("數(shù)組為空");
return;
}

...
}

除了和上面類似的“思維”以外,這說(shuō)明有些朋友還沒(méi)有形成“拋出異?!钡挠^念。這意味著在過(guò)往的編程經(jīng)驗(yàn)中,可以說(shuō)完全沒(méi)有“參數(shù)校驗(yàn)”的概念在頭腦里面。培訓(xùn)機(jī)構(gòu)只是一味地CRUD,展示,寫入,卻沒(méi)有“拋出異?!钡南敕?。同理,即使在題目中已經(jīng)明確寫清了是“拋出”異常,有些朋友的寫法是這樣的:
復(fù)制代碼 代碼如下:

static void Reverse(int[] array, int begin, int end)
{
try
{
// 交換數(shù)據(jù)
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}

很明顯,他們只有“捕獲”異常的概念——自然是框架本身拋出的異常——而不知“拋出”異常。

參考答案
  以下是老趙給出的參考答案:
復(fù)制代碼 代碼如下:

static void Reverse(int[] array, int begin, int end)
{
if (array == null)
{
throw new ArgumentNullException("array", "array不能為空");
}

if (begin < 0)
{
throw new ArgumentOutOfRangeException("begin", "begin不能小于0");
}

if (end < begin)
{
throw new ArgumentOutOfRangeException("end不能小于begin", (Exception)null);
}

if (end >= array.Length)
{
throw new ArgumentOutOfRangeException("end", "end超過(guò)array最大下標(biāo)");
}

while (end > begin)
{
int temp = array[begin];
array[begin] = array[end];
array[end] = temp;

begin++;
end--;
}
}

相關(guān)文章

最新評(píng)論