Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在C#中捕获静态属性?_C# - Fatal编程技术网

有没有办法在C#中捕获静态属性?

有没有办法在C#中捕获静态属性?,c#,C#,假设有一个代码(错误发生在服务器端): 将初始化从字段移到静态构造函数中: 将初始化从字段移到静态构造函数中: 如果您使用静态属性,会怎么样 private static int MyProperty { get { try { return 10 / Convert.ToInt32("0"); } catch (Exception e) { retur

假设有一个代码(错误发生在服务器端):


将初始化从字段移到静态构造函数中:


将初始化从字段移到静态构造函数中:


如果您使用静态属性,会怎么样

private static int MyProperty
{
    get
    {
        try
        {
            return 10 / Convert.ToInt32("0");
        }
        catch (Exception e)
        {
            return -1;
        }
    }
}

如果您使用静态属性,会怎么样

private static int MyProperty
{
    get
    {
        try
        {
            return 10 / Convert.ToInt32("0");
        }
        catch (Exception e)
        {
            return -1;
        }
    }
}

您是否希望在某个地方(任何地方)编写一些代码来捕获错误(例如静态构造函数),还是希望(特别是)从
Foo
类之外的某个地方捕获异常?1)您可以编写一个静态函数,将其结果分配给属性。该函数可以使用它喜欢的任何异常处理。2) 您可以使用类型为
Lazy
的静态字段,这样,只有在您实际访问该值时才会抛出该字段。3) 为什么静态属性甚至会抛出异常?这是一个相当可疑的想法。考虑使用一个依赖项来注入一个单体。您是否希望在某处(任何地方)编写一些代码来捕获错误(例如静态构造函数),或者您想要(具体地)从
Foo
类之外的某个地方捕获异常?1)您可以编写一个静态函数,将其结果指定给属性。该函数可以使用它喜欢的任何异常处理。2) 您可以使用类型为
Lazy
的静态字段,这样,只有在您实际访问该值时才会抛出该字段。3) 为什么静态属性甚至会抛出异常?这是一个相当可疑的想法。考虑使用一个依赖项来注入单点,因为静态构造函数的存在会影响静态初始化的发生,并导致静态字段访问的减速,甚至在初始化之后很长时间,在某些情况下,用作字段初始值设定项的静态函数可能更可取。因为静态构造函数的存在会影响静态初始化发生的时间,并导致静态字段访问速度减慢,即使在初始化后很长时间,在某些情况下,用作字段初始值设定项的静态函数可能更可取。问题指出“错误发生在服务器端”,因此初始化(服务器只调用一次)解决方案的开销可能比属性解决方案小。一个折衷的解决方案是使用
Lazy
问题指出“错误发生在服务器端”,因此初始化(服务器只调用一次)解决方案的开销可能比属性解决方案小。折衷的解决方案是使用
Lazy
private static int MyProperty
{
    get
    {
        try
        {
            return 10 / Convert.ToInt32("0");
        }
        catch (Exception e)
        {
            return -1;
        }
    }
}