【问题标题】:Using .NET CodeDOM to declare and initialize a field in one statement使用 .NET CodeDOM 在一个语句中声明和初始化字段
【发布时间】:2008-08-27 04:43:00
【问题描述】:

我想使用 CodeDOM 在一个语句中声明和初始化我的静态字段。我该怎么做?

// for example
public static int MyField = 5;

我似乎可以弄清楚如何声明一个静态字段,我可以稍后设置它的值,但我似乎无法获得上述效果。

@lomaxx, 不,我只想要静态的。我不想要常量。这个值可以改变。我只是想要一举宣布和初始化的简单性。好像密码世界中的任何事物都很简单。每个类型名称都有 20 多个字符长,您最终会构建这些巨大的表达式树。弄得我眼睛瞎了。多亏了 resharper 的重新格式化,我才活到今天。

【问题讨论】:

    标签: .net codedom


    【解决方案1】:

    创建 CodeMemberField 实例来表示静态字段后,您可以将 InitExpression 属性分配给要用于填充该字段的表达式。

    【讨论】:

      【解决方案2】:

      This post by Omer van Kloeten 似乎可以满足您的需求。注意输出有一行:

      private static Foo instance = new Foo();
      

      【讨论】:

      【解决方案3】:

      我认为你想要的是一个 const 而不是静态的。我假设您想要的是具有静态只读的效果,这就是为什么您总是希望该值为 5。

      在 c# 中,const 被视为与只读静态完全相同。

      From the c# docs:

      即使考虑了常量 静态成员,一个常量- 声明既不要求也不 允许使用静态修饰符。

      【讨论】:

        猜你喜欢
        • 2020-01-20
        • 1970-01-01
        • 2022-01-17
        • 1970-01-01
        • 1970-01-01
        • 2022-01-09
        • 2013-03-30
        • 2016-10-31
        • 1970-01-01
        相关资源
        最近更新 更多