在哪里使用私人课程? [关闭]

问题描述 投票:2回答:4

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

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

c# asp.net
4个回答
6
投票

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


1
投票

私有类在需要一个只作为其父类的一部分的对象并且您需要将其范围限制为其父级的情况下很有用。

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

 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 
      {
      }
 }

0
投票

我认为Anonymous classes/types是他们最受欢迎的案例。


0
投票

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

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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.