【问题标题】:Can I have a class within a class in C#我可以在 C# 的一个类中创建一个类吗
【发布时间】:2011-07-27 17:00:08
【问题描述】:

我有以下课程:

public class NoteLink
{

    public IList<NoteLinkDetail> NoteLinkDetails
    {
        get { return _noteLinkDetails; }
    }
    private List<NoteLinkDetail> _noteLinkDetails = new List<NoteLinkDetail>();

    public NoteLink()
    {
        _noteLinkDetails = new List<NoteLinkDetail>();
    }

}

然后是在第一个类中使用的另一个类。

public class NoteLinkDetail
{
    public string L { get; set; }
    public string R { get; set; }
}

我可以做些什么来优化它。我确实需要第二个类,因为我使用 JSON 将 NoteLinkDetail 的内容存储在字符串中。但是,C# 中是否存在内部类?关于如何优化此代码的任何建议?谢谢。

【问题讨论】:

标签: c#


【解决方案1】:

是的,你可以。只需嵌套即可。

public class NoteLink
{
    // ...

    public NoteLink()
    {
        _noteLinkDetails = new List<NoteLinkDetail>();
    }

    public class NoteLinkDetail
    {
        public string L { get; set; }
        public string R { get; set; }
    }
}

此外,如果它不暴露在外部类之外,你的内部类甚至可以是private 并且对外部类用户保持不可见

【讨论】:

    【解决方案2】:

    是的,C# 允许嵌套类。

    C# 嵌套类更像 C++ 中的嵌套类,而不是 Java 中的“内部类”。此链接说明:

    http://blogs.msdn.com/b/oldnewthing/archive/2006/08/01/685248.aspx

    【讨论】:

      【解决方案3】:

      当然;只需从外部类中声明内部类

      class NoteLink
      {
          class NoteLinkDetail
          {
      
          }
      }
      

      【讨论】:

      • 但是我如何在外部调用那个类,因为我需要对内部类做一些 JSON 工作来序列化它?
      • NoteLink.NoteLinkDetail detail = new NoteLink.NoteLinkDetail
      【解决方案4】:

      是的,您可以在 C# 中拥有嵌套类

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-20
        • 2014-09-09
        相关资源
        最近更新 更多