当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > .net 反序题目的详细解答

ASP.NET
使用NUnit进行单元测试
[FxCop.设计规则]1. 抽象类不应该拥有构造函数
遍历XML文档返回二维数组(ASP)(更新版)
c#中的interface abstract与virtual
[VB.NET] Single & Double
asp.net验证码生成类(参考)
JAVA开发者应该去的20个英文网站 [摘]
C#中关于GDI+输出的问题
XML 命名空间提供了一种避免元素命名冲突的方法。
VS.NET 2005 Beta 2初体验(3)—操作SQL Mobile数据库
VS.NET 2005 Beta 2初体验(1)-用C#开发Managed代码
VS.NET 2005 Beta 2初体验(2)-用C++开发Native代码
VS.NET 2005 Beta2初体验(4)-Notification控件
XmlHttp异步获取网站数据的例子
利用C#编写一个简单的抓网页应用程序
C#中结构与类的区别
在.NET中实现彩色光标,动画光标和自定义光标
C#2.0新特性探究之模拟泛型和内置算法
C#2.0 新特性探究之委托与匿名委托
获取本机的本地上网IP地址

ASP.NET 中的 .net 反序题目的详细解答


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 134 ::
收藏到网摘: n/a

在各种答案,以及平时面试过程中,这道题总归会有一些非常典型的错误发生。其中给老赵的感觉也非常有意思,不知其中的“思路”是否如老赵猜测那样。 请将方法补充完整:
复制代码 代码如下:
常见错误
  在各种答案,以及平时面试过程中,这道题总归会有一些非常典型的错误发生。其中给老赵的感觉也非常有意思,不知其中的“思路”是否如老赵猜测那样。
在方法中进行输入和输出
  有不少朋友在代码里放置了这样的代码:
复制代码 代码如下:

static void Reverse(int[] array, int begin, int end)
{
Console.WriteLine("请输入xxx");
array[0] = Int32.Parse(Console.ReadLine());
...
for (int i = 0; i < array.Length; i++)
{
Console.WriteLine(i);
}
}

为什么会出现这种情况?老赵估计是受到了某些培训机构的影响(观察出现这个问题的朋友们的分布便知)。这些培训一再强调输入、输出,而没有让学员有任何“模块”,“类库”,“辅助方法”的概念。学员的观念中,任何程序都要向用户去索要“输入”,并且要“输出”,否则就不算是程序。
打印错误,而不是抛出异常
代码如下:
复制代码 代码如下:

static void Reverse(int[] array, int begin, int end)
{
if (array == null)
{
Console.WriteLine("数组为空");
return;
}
...
}

除了和上面类似的“思维”以外,这说明有些朋友还没有形成“抛出异常”的观念。这意味着在过往的编程经验中,可以说完全没有“参数校验”的概念在头脑里面。培训机构只是一味地CRUD,展示,写入,却没有“抛出异常”的想法。同理,即使在题目中已经明确写清了是“抛出”异常,有些朋友的写法是这样的:
复制代码 代码如下:

static void Reverse(int[] array, int begin, int end)
{
try
{
// 交换数据
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}

很明显,他们只有“捕获”异常的概念——自然是框架本身抛出的异常——而不知“抛出”异常。
参考答案
  以下是老赵给出的参考答案:
复制代码 代码如下:

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超过array最大下标");
}
while (end > begin)
{
int temp = array[begin];
array[begin] = array[end];
array[end] = temp;
begin++;
end--;
}
}