为什么静态构造函数必须是无参数的?

use*_*690 -6 c#

我遇到此错误:

'LnkScript.LnkScript.KillstreakHud.KillstreakHud(InfinityScript.Entity)':静态构造函数必须是无参数的C:\ Users \ home \ Desktop \ LnkScripts.cs 61 20 LnkScript

我的源代码:

public class KillstreakHud : BaseScript
{
   static KillstreakHud(Entity player)
   {
      string killstreak = "^3Killstreak:^3" + player.GetField<int>("killstreak").ToString();
      HudElem hudelem = HudElem.CreateFontString(player, "hudsmall", 1f);
      HudElem.SetPoint("TOPCENTER", "TOPCENTER");
      HudElem.SetText(killstreak);
      base.OnInterval(300, delegate
      {
         killstreak = "^3Killstreak:^3" + player.GetField<int>("killstreak").ToString();
         hudelem.SetText(Killstreak);
         return true;
      });
   }
}
Run Code Online (Sandbox Code Playgroud)

显然,我的静态构造函数不是无参数的,因此编译器对此不屑一顾。但为什么?

Bra*_*NET 6

静态构造函数必须是无参数的,因为没有任何东西可以调用它,当您访问静态成员或创建类的实例时,它会被调用,但不能直接调用(由运行时调用)。

解决方案:删除您的参数,或使其变为非静态

静态构造函数参考:http : //msdn.microsoft.com/zh-cn/library/k9x6w0hc.aspx

要使其变为非静态(请注意,现在将需要使用new关键字直接调用它):

public KillstreakHud(Entity player)
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

  • @ user3688690那不是工作原理。如果您有其他问题,请问一个新问题。话虽如此,SO并不是要成为编译修复服务(尽管会带来一些好的问题)。对于每个错误:(1)读取错误,这意味着什么是错误的?有明显的方法可以解决此问题吗?(2)搜索错误,查看那里已有的现有解释/修复步骤。(3)如果确实很奇怪,并且您不明白为什么它坏了,请提出一个新的SO问题。如果您有足够的代表来聊天,我会考虑使用它,但即使如此,您也没有表现出足够的努力。 (3认同)
  • 它们不会在程序启动时被调用...如果使用了它们的类型,它们会在使用它们的类型之前的某个不确定的时间被调用。 (2认同)
  • @ user3688690为了上帝的爱,如果您要询问遇到的错误,请包含实际错误! (2认同)