【问题标题】:Visual studio's intellisense breaks when using static constructor使用静态构造函数时 Visual Studio 的智能感知中断
【发布时间】:2015-06-28 20:34:59
【问题描述】:

我对 Visual Studio 的智能感知有疑问。 每次我在结构中创建C# 静态构造函数时,Visual Studio 的智能感知在尝试调用构造函数时都会中断。 似乎它找不到构造函数,甚至没有默认构造函数。 有谁知道我为什么会遇到这个问题?

    public Triangle(int aX, int aY, int bX, int bY, int cX, int cY)
    {
        A = new Point(aX, bY);
        B = new Point(bX, bY);
        C = new Point(cX, cY);
    }

    public Triangle(Point a, Point b, Point c)
    {
        A = a;
        B = b;
        C = c;
    }

    public Triangle(Triangle value)
    {
        A = value.A;
        B = value.B;
        C = value.C;
    }

    static Triangle()
    {
        Empty = new Triangle(0, 0, 0, 0, 0, 0);
    }

【问题讨论】:

  • 您能否发布您的静态构造函数的代码。
  • 你应该阅读the static constructor
  • Intellisense 是否可以在其他任何地方工作,重新启动 Studio 和 ReBuild 后问题是否仍然存在?如有疑问,请删除 *.suo 文件并重新启动 VS。
  • 智能感知似乎适用于其他任何地方。我已经重新启动了 Visual Studio,甚至删除了 *.suo 文件。当我尝试创建对象时,智能感知没有显示,当我删除静态构造函数时,它显示我的其他构造函数就好了。
  • 我也没有,但我没有问题。

标签: c# .net visual-studio-2013 struct static-constructor


【解决方案1】:

您不能直接调用static constructor,它会在创建第一个实例或引用任何静态成员之前自动调用以初始化类型。

这里是静态构造函数规范的总结

  • 静态构造函数不接受访问修饰符或具有参数。
  • 在创建第一个实例或任何静态成员之前,会自动调用静态构造函数来初始化类 参考。
  • 不能直接调用静态构造函数。
  • 用户无法控制何时在程序中执行静态构造函数。
  • 静态构造函数的典型用途是当类使用日志文件并且构造函数用于将条目写入该文件时。
  • 静态构造函数在为非托管代码创建包装类时也很有用,此时构造函数可以调用 LoadLibrary 方法。
  • 如果静态构造函数抛出异常,运行时将不会再次调用它,并且类型将保持未初始化状态 您的程序所在的应用程序域的生命周期 正在运行。

关于 Visual Studio 中的问题:

我对其进行了测试,一切正常。

【讨论】:

  • 我知道静态构造函数是如何工作的,但它似乎阻止了我结构中的其他构造函数出现在 Visual Studio 的智能感知中。
  • 我在 Visual Studio 2013 中只有这个错误,而且只有结构。可能是因为我的设置设置为 C++?
  • 什么是错误?你能发布一个关于这个错误的截图和简要的细节吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-07
  • 2016-03-20
  • 2011-10-14
  • 2014-07-17
  • 2013-12-07
  • 2013-11-23
相关资源
最近更新 更多