CLR Via CSharp读书笔记(6):类型和成员基础

类型成员定义:

类型的可访问性:

internal: 仅对定义程序集中的所有代码可见。类型默认可见性为internal;

public class ThisIsAPublicType { }
internal class ThisIsAnInternalType{ }
class ThisIsAlsoAnInternalType{ }
[assembly: InternalsVisibleTo("Wintellect, Publickey=123456789...90abcdef")]   

[assembly: InternalsVisibleTo("Microsoft, PublicKey=b77a5c56...1934e089")]

将当前程序集中定义的internal类型暴露给Wintellect程序集和Microsoft程序集。

成员的可访问性:

private: 定义类型以或嵌套类型中的方法访问

protected: private + 派生类型

internal: 定义程序集中的方法访问。

protected internal: protected + internal

public: 任意程序集的任意方法访问

成员默认可见性为private.接口类型的成员默认可见性为public.

C#编译器要求原始成员和重写成员具有相同的访问性。CLR允许放宽成员的可访问性限制,但是不允许收紧。

 静态类:

静态类唯一的作用是将一组相关的成员组合到一起。

static只能应用于类,不能应用于结构(值类型)。因为CLR总是允许值类型实例化。

静态类必须直接从System.Object派生,不能实现任何接口,只能定义静态成员(字段,方法,属性和事件),本身不能作为字段,方法参数和局部变量使用。

public static class AStaticClass {
    public static void AStaticMethod() { }

    public static String AStaticProperty {
        get { return _aStaticField; }
        set { _aStaticField = value; }
    }

    private static String _aStaticField;

    public static event EventHandler AStaticEvent;
}
原文地址:https://www.cnblogs.com/thlzhf/p/2790391.html