C# 内部类的作用

作用一:限制对类的可访问性

有时候会遇到这样的需求,希望一个类仅能被另一个类(以及其派生类)访问。

代码

class BaseClass
{
    public class PublicNestedClass { }

    protected class ProtectedNestedClass { }

    private class PrivateNestedClass { }
}

class DerivedClass : BaseClass
{
    PublicNestedClass a;
    ProtectedNestedClass b;
    PrivateNestedClass c;

    PublicDerivedNestedClass a2;
    ProtectedDerivedNestedClass b2;
    PrivateDerivedNestedClass c2;

    public class PublicDerivedNestedClass { }

    protected class ProtectedDerivedNestedClass { }

    private class PrivateDerivedNestedClass { }
}

class OtherClass
{
    PublicNestedClass a;
    ProtectedNestedClass b;
    PrivateNestedClass c;
}

class DerivedDerivedClass : DerivedClass
{
    PublicNestedClass a;
    ProtectedNestedClass b;
    PrivateNestedClass c;

    PublicDerivedNestedClass a2;
    ProtectedDerivedNestedClass b2;
    PrivateDerivedNestedClass c2;
}

编译器提示报错的地方

在这里插入图片描述

分析

  • BaseClass类内部用 public protected 关键字声明的内部类,外部的类和这个类都可见。
  • 用 private 关键字声明的内部类,仅对这个类可见。
  • 派生类也适用以上规则。

作用二:为多个类提供公共的属性

public abstract class BaseMainSwitch
{
    public static bool IsActive = false;

	public void Init()
	{
		SetActive(true);
	}

    public static void SetActive(bool value)
    {
        IsActive = value;
    }
    
    public abstract class BaseSubSwitch
	{
	    private bool _isOpen = true;
	
	    public static void SetActive(bool value)
	    {
	        _isOpen = value;
	    }
	}
	
    public class DerivedSubSwitch : BaseSubSwitch
	{
		public void DoSomething()
		{
			if (IsActive && this._isOpen)
			{
				// code
			}
		}
	}
}

用例

public class DerivedMainSwitch : BaseMainSwitch
{
    DerivedSubSwitch _switch1;
    DerivedSubSwitch _switch2;
}

每个SubSwitch各自有开关状态,且有公共的IsActive控制总开关。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值