Static变量在Debug和Release模式下的初始化顺序偶有差异
2011-09-13 10:17
363 查看
新建一个简单的Console项目,包含三个class:
Helper.cs是一个工具类,提供一些静态的方法:
Tester.cs是一个含有静态变量的类:
Program.cs中的Main函数初始化Tester类的一个实例。
按一般逻辑,应该是先显示Step1….., 然后再显示Step 2….。在Dubug模式下确实如此:
在Release模式下,若直接在Vs.net中按F5运行也是显示上图结果,但若按“Ctrl+F5”键运行或直接点击“bin/release/StaticMember.exe”文件运行,则显示的是如下顺序:
甚是奇怪,未得其解!
Helper.cs是一个工具类,提供一些静态的方法:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace StaticMember { class Helper { internal static string GetVersion() { Console.WriteLine("Step 2.<Helper.GetVersion> The methods GetVersion() had been invoked. It indicates that Tester.version had been initilized."); return "V1.0.0.2566"; } } }
Tester.cs是一个含有静态变量的类:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace StaticMember { class Tester { static string version = Helper.GetVersion(); internal static void Init() { Console.WriteLine("Tester.Init()"); } } }
Program.cs中的Main函数初始化Tester类的一个实例。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace StaticMember { class Program { static void Main(string[] args) { Console.WriteLine( "Step 1. <Program.Main> Before create an instance of Tester class. "); Tester tester = new Tester(); //Tester.Init(); Console.Read(); } } }
按一般逻辑,应该是先显示Step1….., 然后再显示Step 2….。在Dubug模式下确实如此:
在Release模式下,若直接在Vs.net中按F5运行也是显示上图结果,但若按“Ctrl+F5”键运行或直接点击“bin/release/StaticMember.exe”文件运行,则显示的是如下顺序:
甚是奇怪,未得其解!
相关文章推荐
- Static变量在Debug和Release模式下的初始化顺序偶有差异
- BOOL 值在 debug 和 release 模式下初始化不一样!!!
- 调试Release模式下遇到的问题 - Debug和Release的差异。
- Debug模式下链接release下的lib文件
- VS中Debug模式和Release模式的区别
- Opencv学习笔记——release和debug两个模式的运行问题
- NSLog 在debug模式下正常使用,在release模式下不可用
- VS中Debug模式和Release模式的区别
- DEBUG和RELEASE 版本差异及调试相关问题
- (未解决)MDI程序开多个视图,用Tab页并排显示。Debug下完全成功显示,Release调试模式下成功显示,但是直接点Release下的exe,部分弹出视图为空
- 在C++代码中判断运行模式(debug、release)和环境(win32、64)
- 便捷log,debug与release模式互换
- Android 判断是开发debug模式,还是发布release模式
- 程序由debug改为release模式后
- Dotnet Debug/Release模式编译时要注意的事项
- C#中Release和debug模式下调试跟踪程序的原则和方法(一)
- Eclipse的Debug模式和Run模式性能差异
- C#中Release和debug模式下调试跟踪程序的原则和方法