一个关于流程控制的问题
2010-10-28 23:05
148 查看
CSDN 帖子链接
代码
代码
static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Console.WriteLine(Test2()); // 输出 AA TestClass ts = Test(); Console.WriteLine(ts.str); // 输出 CC Console.ReadLine(); } public static TestClass Test() { TestClass ts = new TestClass(); try { ts.str = "AA"; // return ts; // 在执行return的时候、返回值就已经确定了,在此时要对数据进行拷贝 // 由于 Ts 是引用类型即是一个指针,数据拷贝直接拷贝的是 内存地址 // 由于方法到此时还没有执行完毕所以还要继续执行 } catch (Exception ex) { ts.str = "BB"; Console.WriteLine(ex.Message); return ts; } finally { ts.str = "CC"; // 由于Finally的特殊性:无论是否发生异常都要执行finally语句 // 该语句会在执行return 语句之后 方法执行完毕前 执行。 // 由于数据拷贝是在return语句执行是发生的,并且拷贝的是内存地址, // 而该语句又是对内存地址所指向的数据进行修改、而不是修改这个内存地址, // 所以 此操作影响了外界到的数据、更确切的说是影响了其内存地址中的数据 } } public static string Test2() { string str = ""; try { str = "AA"; // return str; // 在执行return的时候、返回值就已经确定了,在此时要对数据进行拷贝 // 由于 string 是值类型,数据拷贝直接拷贝的是 数据 // 由于方法到此时还没有执行完毕所以还要继续执行 } catch (Exception ex) { str = "BB"; Console.WriteLine(ex.Message); return str; } finally { str = "CC"; // 由于Finally的特殊性:无论是否发生异常都要执行finally语句 // 该语句会在执行return 语句之后 方法执行完毕前 执行。 // 由于数据拷贝是在return语句执行是发生的,并且拷贝的是数据, // 所以该语句的执行不会影响到返回值 } } } public class TestClass { public string str; }
相关文章推荐
- 关于CS模式下,控制一个容器内控件的值问题
- 关于css控制a标签的一个小问题
- 关于控制一个外部窗口的相关问题
- 今天碰到的一个问题,关于通过基类对象的引用给子类赋值
- 关于Objective-C 对象release操作的一个小问题探讨
- 关于一个分解质因数的问题
- 关于.vhd文件的一个问题
- 关于坛友的一个布局问题的解答
- 关于ansible变量的一个问题
- 发现一个奇怪的问题,关于文件名
- 学习Java的第一步是安装好JDK,写一个Hello World, 其实JDK的学习没有那么简单,关于JDK有两个问题是很容易一直困扰Java程序员的地方:一个是CLASSPATH的问题,其实从原理上来说,是要搞清楚JRE的ClassLoader是如何加
- 关于启动vagrant up 蓝屏的一个问题的思考
- 一个关于用Array.newInstance方式创建多维数组的问题
- 关于误差,想到一个 整数规划问题
- 分页page,关于form表单的控制范围问题。哪些数据会随着form表单提交?图文详解
- 一个关于使用String做锁的问题(PS:不要使用string做锁)
- 关于一个按钮绑定两个事件的问题,click和submit
- 关于javamail的一个问题
- iOS不得姐项目--推荐关注模块(一个控制器控制两个tableView),数据重复请求的问题,分页数据的加载,上拉下拉刷新(MJRefresh)
- 关于unity动态添加游戏对象问题,如何动态添加一个菜单【一】