C#空类分析

链接:https://docs.microsoft.com/zh-cn/dotnet/csharp/tutorials/inheritance

public class SimpleClass
{ }

这是一个空类,但是包含的却不空,当前类隐式继承于Object类,或者说是Object的派生类。该类包含九个成员,其中一个为默认的无参构造函数,和八个Object类的成员。

复制代码
using System;
using System.Reflection;

public class Example
{
    public static void Main()
    {
        Type t = typeof(SimpleClass);
        BindingFlags flags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public |
                             BindingFlags.NonPublic | BindingFlags.FlattenHierarchy;
        MemberInfo[] members = t.GetMembers(flags);
        Console.WriteLine($"Type {t.Name} has {members.Length} members: ");
        foreach (var member in members)
       {
            string access = "";
            string stat = "";
            var method = member as MethodBase;
            if (method != null)
            {
                if (method.IsPublic)
                    access = " Public";
                else if (method.IsPrivate)
                    access = " Private";
                else if (method.IsFamily)
                    access = " Protected";
                else if (method.IsAssembly)
                    access = " Internal";
                else if (method.IsFamilyOrAssembly)
                    access = " Protected Internal ";
                if (method.IsStatic)
                    stat = " Static";
            }
            var output = $"{member.Name} ({member.MemberType}): {access}{stat}, Declared by {member.DeclaringType}";
            Console.WriteLine(output);
        }
    }
}
复制代码

由于隐式继承自 Object 类,因此 SimpleClass 类可以使用下面这些方法:
1.公共 ToString 方法将 SimpleClass 对象转换为字符串表示形式,返回完全限定的类型名称。 在这种情况下,ToString 方法返回字符串“SimpleClass”。
2,3,4..三个用于测试两个对象是否相等的方法:公共实例 Equals(Object) 方法、公共静态 Equals(Object, Object) 方法和公共静态 ReferenceEquals(Object, Object) 方法。 默认情况下,这三个方法测试的是引用相等性;也就是说,两个对象变量必须引用同一个对象,才算相等。
5.公共 GetHashCode 方法:计算允许在经哈希处理的集合中使用类型实例的值。
6.公共 GetType 方法:返回表示 SimpleClass 类型的 Type 对象。
7.受保护 Finalize 方法:用于在垃圾回收器回收对象的内存之前释放非托管资源。
8.受保护 MemberwiseClone 方法:创建当前对象的浅表复制。

posted @   过往云烟吧  阅读(63)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示