我有一个文件Mineral.cs,每当我尝试用静态构造函数Visual Studio崩溃替换方法InitializeMinerals()时。重新启动后,每次重复出现这种情况。什么?!
事件日志中的错误报告:
事件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.0\Common7\IDE\devenv.exe
Faulting module path: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC#\VCSPackages\cslangsvc.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:\Users\CLASSIFIED\AppData\Local\debuggee.mdmp
These files may be available here:
C:\Users\CLASSIFIED\AppData\Local\Microsoft\Windows\WER\ReportArchive\AppCrash_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;
}
}
}
答案 0 :(得分:0)
首先,在C#中,您不能在静态构造函数上拥有访问修饰符。
其次,关于静态构造函数的一些信息。它们用于初始化类的静态数据,直到需要类之前才调用它们。因此,第一次实例化Mineral类是在调用静态构造函数时。有关详细信息,请访问此站点: http://msdn.microsoft.com/en-us/library/k9x6w0hc.aspx
第三,如果要在XXX_Load方法或构造函数中的Windows窗体对象中创建Mineral类的实例,则将调用Mineral静态构造函数。静态构造函数可以与您的设计师一起玩快乐滚刀(并导致它与奇怪的错误一起崩溃)。如果您不必在表单创建/加载时实例化Mineral类,请不要。您可以通过简单地注释掉在表单中创建/依赖Mineral类的代码然后再次尝试设计器来测试是否是这种情况。如果没有异常,那么当设计者试图加载类时,Mineral类的静态构造函数可能会抛出异常。这种错误通常只影响设计师,程序可以完美运行。