代码之家  ›  专栏  ›  技术社区  ›  pero

汽车性能问题

  •  1
  • pero  · 技术社区  · 16 年前

    这就是反射器所提供的:

    public int Int1 { get; set; }
    public string StringA { get; set; }
    
    // Fields
    [CompilerGenerated]
    private int <Int1>k__BackingField;
    [CompilerGenerated]
    private string <StringA>k__BackingField;
    

    问题是C#规范没有明确指定如何命名自动属性的支持字段。 这可能是二进制序列化的一个问题(摘自Nutshell中的C#3.0)。 汽车性能还有其他问题吗?MS应该在C#规范中指定这一点吗?

    2 回复  |  直到 16 年前
        1
  •  1
  •   Jon Skeet    16 年前

    我认为MS不应该指定一个名称——我认为避免二进制序列化更合理,在我看来,二进制序列化总是有点脆弱。(Java序列化同样脆弱。)如果它依赖于字段名(并且可能有一种方法可以通过归因您的属性来绕过它——我对二进制序列化没有足够的经验来了解),那么它已经严重限制了实现更改。

    我对自动属性最大的问题是无法创建 真诚地 只读属性(带有只读支持字段)。不过,我以前对此大发雷霆。..

        2
  •  0
  •   vboctor    16 年前

    我不喜欢以下关于汽车属性的内容:

    1. 无法在汽车属性上放置断点。

    2. 类中的字段是显而易见的,您必须检查字段和属性,以了解类中的哪些字段。如果不使用它们,那么您可以只检查字段区域。

    3. 删除了用只读、易失性等装饰底层字段的能力。