社区
C# 帖子详情 c#里的try里的变量与try外面的局部变量有什么不同 布鲁克斯南南 2013-01-07 04:36:58 c#里的try里的变量与try外面的局部变量有什么不同
为什么方法在返回会时不能用try里的局部变量!!
感觉小问题,对于大神们,就给20分了,呵呵
...全文
480 9 打赏 收藏 c#里的try里的变量与try外面的局部变量有什么不同 c#里的try里的变量与try外面的局部变量有什么不同 为什么方法在返回会时不能用try里的局部变量!! 感觉小问题,对于大神们,就给20分了,呵呵 复制链接
扫一扫 分享 转发到动态 举报 AI 作业
写回复 配置赞助广告取 消
确 定
用AI写文章 9 条回复 切换为时间正序 请发表友善的回复… 发表回复 打赏红包 需支付: 0.00 元 取 消 确 定 wangyd324 2013-01-08 打赏举报 回复 引用 8 楼 li875590079 的回复:引用 5 楼 wangyd324 的回复:try里面的变量智能在try里面访问
在try外就不能访问
try为定义的变量在try内和外都能访问
其实这个道理我也知道,只是为什么呢,不都是压栈了吗,难道这个有什么不同,还有,catch里的捕获的也只能是try里的局部变量的异常(如数组越界等!)?
try catch finally 本来是检测一段代码中的异常,如果还能检测try外的异常,那还要这个try干什么,这个本来是已经设计好了的,还有try里面定义的变量的生命周期只在这个大括号里面,如果反面的方法能访问,那也就是说我随便一个方法都能访问另一个方法定义的变量了~~ 布鲁克斯南南 2013-01-08 打赏举报 回复 引用 5 楼 wangyd324 的回复:try里面的变量智能在try里面访问
在try外就不能访问
try为定义的变量在try内和外都能访问
其实这个道理我也知道,只是为什么呢,不都是压栈了吗,难道这个有什么不同,还有,catch里的捕获的也只能是try里的局部变量的异常(如数组越界等!)? superfrank0711 2013-01-07 打赏举报 回复 引用 3 楼 haukwong 的回复:C#里面用一对大括号来表示代码块{}
在{}里面定义的局部变量,有效范围指只能在这个括号内。
+1
____Seven 2013-01-07 打赏举报 回复 在{}里面声明的变量只能在{}里边去操作。出来{}就不行了。 wangyd324 2013-01-07 打赏举报 回复 try里面的变量智能在try里面访问
在try外就不能访问
try为定义的变量在try内和外都能访问 布鲁克斯南南 2013-01-07 打赏举报 回复 引用 3 楼 haukwong 的回复:C#里面用一对大括号来表示代码块{}
在{}里面定义的局部变量,有效范围指只能在这个括号内。
原来是这样的啊,感觉定义了要定义好多变量啊,有时! Hauk 2013-01-07 打赏举报 回复 C#里面用一对大括号来表示代码块{}
在{}里面定义的局部变量,有效范围指只能在这个括号内。
bdmh 2013-01-07 打赏举报 回复 里面的只能在try内部访问 six-years 2013-01-07 打赏举报 回复 c#里的if里的变量与if外面的局部变量有什么不同
为什么方法在返回会时不能用if里的局部变量!! C#基础2——②try-catch,方法及其深入,局部变量,通过返回值传递变量的值 一、try-catch
二、方法
一、局部变量
一、通过返回值传递变量的值
为什么在try{}和catch(){}中的变量无法引用? 因为try{}和catch(){}中的变量都是局部变量,在try{}和catch(){}外部是无法直接使用的。
比如在finally{}中关闭流时就无法直接使用try{}中的变量。
解决办法:
把try{}中的变量拿出来,定义为全局变量,根据数据类型赋值为null或0,然后在try{}中直接给该变量重新赋值即可。
代码示例:
public class ReadFile03 {
public static void main(String[] args) {
FileInputStream fis C# 方法(局部变量和局部常量) 本章内容:方法的结构方法体内部的代码执行局部变量局部常量控制流方法调用返回值返回语句和void方法局部函数参数值参数引用参数引用类型作为值参数和引用参数输出参数参数数组参数类型总结方法重载命名参数可选参数栈帧递归。 try catch 后局部变量无法引用到 try catch 后局部变量无法引用到
代码如下
public void test (){
String result;
try {
result = JsonUtils.object2Json(map);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(result);
}
当打印输出result时报错,Cannot resolve symb try中的局部变量在finally中是找不到的。 解答:和try catch没有关系,只要是块,就符合这个规则。包括if for while switch等。 一对花括号代表着一个作用域,当在try的花括号里面定义变量时,该变量只能在try{}中才有效,可以理解为该变量只属于try,finall{}里是找不到该变量的。 如果在try{}catch{}finally{}的外面定义变量,可以理解为是属于他们共有的。
转载于:https://www.c...
C#
111,098
社区成员
642,554
社区内容
发帖 与我相关 我的任务 C# .NET技术 C# 复制链接
扫一扫 分享 确定 社区描述 .NET技术 C# 社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章