在哪里使用私人课程?

时间:2019-03-10 17:04:42

标签: c# asp.net

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

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

4 个答案:

答案 0 :(得分:6)

有时候问题是如此复杂。您需要类来抽象解决方案的一部分。但是,在极少数情况下,一部分(表示为一类或其中的一部分)不会被外界消耗掉,它只是满足特定的精确需求。在这种情况下,将这样的类设为私有是理想的:它使您的命名空间保持整洁,防止混淆并很好地传达了这样的想法:该专用代码不过是解决特定问题的辅助机制。

答案 1 :(得分: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 
      {
      }
 }

答案 2 :(得分:0)

我认为Anonymous classes/types是他们中最受欢迎的情况。

答案 3 :(得分: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;
    }
}