C# 内部类

偶然在C#中看到内部类,即在类的内部定义类,

例如:System.Windows.Forms.Control类中又有ControlCollection,ControlAccessibleObject类的定义,

内部类的定义是为了供给该类自身使用,外部类无法进行使用,作用是:使内部类的可见性更小

可参考如下实例:

namespace DesignPattern.InnerClass
{
    /// <summary>
    /// 外部类
    /// </summary>
    public class OuterClass
    {
        /// <summary>
        /// 类名
        /// </summary>
        public string Name { get; set; }

        public string InnerClassName
        {
            get
            {
                InnerClass inner = new InnerClass();
                return inner.Name;
            }
        }

        public OuterClass.InnerClass myInnerClass
        {
            get;
            set;
        }

        /// <summary>
        /// 内部类(其访问修饰符决定其对外的可见性)
        /// </summary>
        public class InnerClass
        {
            /// <summary>
            /// 类名
            /// </summary>
            public string Name
            {
                get
                {
                    return "My Name is InnerClass";
                }
            }
        }

    }

    /// <summary>
    /// 内部类
    /// </summary>
    public class InnerClass
    {
        /// <summary>
        /// 类名
        /// </summary>
        public string Name
        {
            get
            {
                return "My Name is InnerClass";
            }
        }

        /// <summary>
        /// 时间
        /// </summary>
        public string Date
        {
            get
            {
                return "2013-1-1";
            }
        }
    }

    public class Test
    {
        public void TestMethod()
        {
            OuterClass outClass = new OuterClass();
            string result = outClass.InnerClassName;

            //1.内部类只能通过(外部类.内部类)的方式使用,
            //2.另外内部类如果不声明为public时,则外部程序无法使用它
            OuterClass.InnerClass inner = new OuterClass.InnerClass();
            string name = inner.Name;

            //非内部类测试,在编译时两者(InnerClass与OutClass.InnerClass)不相冲突
            InnerClass inner2 = new InnerClass();
            string name2 = inner2.Name;
            string date = inner2.Date;

            //总之,内部类是主要是为了提供给其外部类自身使用,
            //使内部类的可见性更小一些,提高封装性
        }
    }

}


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值