Visual Studio 在单个文件中的静态构造函数上崩溃.[VS2010]



我有一个文件Mineral.cs,每当我尝试用静态构造函数替换方法InitializeMinerals((时,Visual Studio都会崩溃。每次重新启动后,这种情况都会一遍又一遍地重复发生。什么?!

事件日志中的错误报告:

事件 1000,应用程序错误:

Faulting application name: devenv.exe, version: 10.0.30319.1, time stamp: 0x4ba1fab3
Faulting module name: cslangsvc.dll, version: 10.0.30319.1, time stamp: 0x4ba20c61
Exception code: 0xc0000005
Fault offset: 0x0024b651
Faulting process id: 0x1904
Faulting application start time: 0x01d012904f2726d1
Faulting application path: C:Program Files (x86)Microsoft Visual Studio 10.0Common7IDEdevenv.exe
Faulting module path: C:Program Files (x86)Microsoft Visual Studio 10.0VC#VCSPackagescslangsvc.dll
Report Id: f146768b-7f33-11e4-80e9-083e8e5a419a

事件 1001,Windows 错误报告:

Fault bucket , type 0
Event Name: APPCRASH
Response: Not available
Cab Id: 0
Problem signature:
P1: devenv.exe
P2: 10.0.30319.1
P3: 4ba1fab3
P4: cslangsvc.dll
P5: 10.0.30319.1
P6: 4ba20c61
P7: c0000005
P8: 0024b651
P9: 
P10: 
Attached files:
C:UsersCLASSIFIEDAppDataLocaldebuggee.mdmp
These files may be available here:
C:UsersCLASSIFIEDAppDataLocalMicrosoftWindowsWERReportArchiveAppCrash_devenv.exe_df1fb0912a591be97726252b29e971ef71bcbe74_0737cf24
Analysis symbol: 
Rechecking for solution: 0
Report Id: f146768b-7f33-11e4-80e9-083e8e5a419a
Report Status: 0

文件中的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace XXXXXXXX.XXXXXXXXXX.Content.Items
{
    public class Mineral
    {

        public static void InitalizeMinerals()
        {
        }

        public Mineral(bool gem, string name, string[] subtypes = default(string[]))
        {
            this.IsGem = gem;
            this.Subtypes = subtypes;
            this.Name = name;
        }
        public bool IsGem
        {
            get;
            private set;
        }
        public string[] Subtypes
        {
            get;
            private set;
        }
        public string Name
        {
            get;
            private set;
        }

   }
}

首先,在 C# 中,不能在静态构造函数上使用访问修饰符。

其次,关于静态构造函数的一些信息。它们用于初始化类的静态数据,直到需要类之前才调用。因此,第一次实例化 Mineral 类是在调用静态构造函数时。有关更多详细信息,请参阅此站点:http://msdn.microsoft.com/en-us/library/k9x6w0hc.aspx

第三,如果要在 XXX_Load 方法或构造函数中的 Windows 窗体对象中创建 Mineral 类的实例,则将调用 Mineral 静态构造函数。静态构造函数可以与你的设计器一起玩快乐的滚刀(并导致它因奇怪的错误而崩溃(。如果不必在窗体创建/加载时实例化 Mineral 类,请不要。您可以通过简单地注释掉在窗体中创建/依赖 Mineral 类的代码,然后再次尝试设计器来测试是否是这种情况。如果没有异常,则当设计器尝试加载类时,Mineral 类的静态构造函数可能会引发异常。这种错误通常只影响设计器,程序可以完美运行。

最新更新