【问题标题】:Initialize property which needs Add method - C# [duplicate]初始化需要添加方法的属性 - C# [重复]
【发布时间】:2019-05-16 06:35:48
【问题描述】:

我有一个控件,我可以在其中添加一些其他控件。 我需要在对象初始化中添加这些控件,但它会给我一个错误,即 Controls 属性是indexer,它是read-only。所以我应该使用Add 方法在另一行添加它。有没有办法在对象初始化中做这样的事情?

pgvSections.Pages.Add(new PageView() { Name = sectionName, /* Controls = DOES NOT ALLOWED */  });
pgvSections.Pages.Last().Controls.Add(someControl);

【问题讨论】:

  • 请更新您的标签 - 是 WebForms 吗?

标签: c# winforms


【解决方案1】:

根据 PetSerAl 链接的 GitHub 上的文档(感谢他指出我的错误),允许使用类似 Controls = { new Control(), new Control(), ... } 的内容,因为它会自动转换为一系列 Controls.Add()

【讨论】:

  • 无法将Add元素添加到对象初始化程序中的集合您能否提供任何参考来支持您的主张?这对我来说似乎很好:sharplab.io/…
  • 这太令人惊讶了。在您的示例中,该语法似乎自动转换为List.AddRange(new List<int>() { 1, 2, 3 })。我找不到任何关于此的文档,但它仍然有效,所以我想没有什么能阻止 OP 做类似Controls = { new Control(), new Control(), ... } 的事情。感谢您分享这一点,@PetSerAl。
  • 您可以找到规范here
  • 太棒了。非常感谢你。 C# 从未停止让我惊叹。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-23
  • 2015-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-30
  • 1970-01-01
相关资源
最近更新 更多