C# 在哪里使用私有类?

C# 在哪里使用私有类?,c#,asp.net,C#,Asp.net,从我的理解来看,如果我们有一个私有类,那么这个类只有在这个私有类位于其他非私有类中时才能被访问。 那么,为什么我们需要如此多的迂回,我们可以通过使用它解决什么样的业务问题呢? 请给我一个真实的案例来使用它 如果这是一个重复的问题,真的很抱歉。有时候问题就那么复杂。您需要类来抽象出解决方案的一部分。然而,在极少数情况下,部分(以类或少数类表示)并非独立于外部世界消费,它只是为特定的精确需求服务。在这种情况下,将这样一个类设置为私有是理想的:它可以保持名称空间干净整洁,防止混淆,并且可以很好地传达这

从我的理解来看,如果我们有一个私有类,那么这个类只有在这个私有类位于其他非私有类中时才能被访问。 那么,为什么我们需要如此多的迂回,我们可以通过使用它解决什么样的业务问题呢? 请给我一个真实的案例来使用它


如果这是一个重复的问题,真的很抱歉。

有时候问题就那么复杂。您需要类来抽象出解决方案的一部分。然而,在极少数情况下,部分(以类或少数类表示)并非独立于外部世界消费,它只是为特定的精确需求服务。在这种情况下,将这样一个类设置为私有是理想的:它可以保持名称空间干净整洁,防止混淆,并且可以很好地传达这个想法,这个特殊的代码只不过是某个问题的辅助机制。

在需要一个只作为其父类一部分存在的对象,并且需要将其范围限制在其父类的情况下,私有类很有帮助

例如,假设您有一个带有SecurityInfo对象的事务对象,您需要确保该对象只能由该事务访问

 public class Transaction 
 {
     public int ID;

     public bool ValidateSecurityInfo()
     {
           //Securityinfo can only be used within the Transaction class
           var info = new SecurityInfo();
      }

      private class SecurityInfo 
      {
      }
 }

我认为这是最受欢迎的情况。

嵌套类可以访问父类的私有成员。因此,对于私有类,您有一种机制使子类也是私有的,因此没有外部访问它们

class Program
{
    static void Main(string[] args)
    {
        var pub = new PublicClass();

        // If PrivateClass was public we could do this
        //var priv = new PublicClass.PrivateClass(pub);
        //priv.ChangeX(3);
    }
}

public class PublicClass
{
    private int _x;
    private readonly PrivateClass _privateClass;

    public PublicClass() => _privateClass = new PrivateClass(this);

    private class PrivateClass
    {
        private readonly PublicClass _publicClass;
        public PrivateClass(PublicClass publicClass)
        {
            _publicClass = publicClass;
            ChangeX(2);
        }

        // We can access our parents class's private members
        public void ChangeX(int newX) => _publicClass._x = newX;
    }
}

如果你看不到它的用途,就忽略它,不要使用它。我永远不明白为什么人们希望为他们看不到立即使用的特性找到理由。把它归档,继续前进。