日期:2014-05-18  浏览次数:20788 次

[C# 新手问题]关于方法返回值的问题.
public int CompareTo(object obj)
  {
  if (obj is person)
  { 
  person otherperson = obj as person;
  return this.Age - otherperson.Age;
  }
  else
  { 
  throw new ArgumentException("用来比较的对像不是person对像");
   
  }
  int a=10; //变成无法访问代码
   
  }


请教:上面代码.

  1、是不是throw 可以代替return呢。因为带有返回值的方法必须return出去一个值,但是这里的return在if语句中。
  2、变量a,变成了无法访问的代码,是不是说throw以后,方法就停止运行了或者说是直接跳出方法了。

------解决方案--------------------
throw和return是两回事
throw后,不会继续执行
------解决方案--------------------
问题回答:
1、throw 不可以用return代替,你这个方法是返回一个int类型,所有每个if……分支都要有返回int值,
而throw是抛出异常,程序出现异常时用到,这时程序中止,后面的都不执行。
2、变量a,如果出现异常,遇到throw程序就中止了,a当然就变成了无法访问的代码。