- C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里
- 定义:Attribute 类将预定义的系统信息或用户定义的自定义信息与目标元素相关联。公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型、字段、方法和属性等。Attributes和Microsoft .NET Framework文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为。
Property是类中存取数据的一个统一模式
- C#中的Field就是C++中指的成员变量Member Variable
- 什么是metadata?
是记录类信息(成员,方法,继承……)的数据,它会被存储在PE文件或内存里。常用到的Intellisense就是其应用之一。 - C++,Java和C#之间的对比?
- C#借鉴了Java虚拟机的概念,代码理论上可以跨平台执行,对内存的管理加以简化
- C#对于C++来讲,保存了其语法习惯,使用起来更易上手
- C#里是否可以直接对内存操作?
- C#中可以用unsafe{}来标明所谓不安全的代码段。
- 所谓不安全,是因为指针可对内存数据操作,但如果进行操作不当,则有可能使程序出错,甚至系统瘫痪,这被视为一个不安全的因素。
- Struct和class?
- struct是值类型,内存分配在栈上,class是引用类型,内存分配在堆上。值类型不能设为null
- struct implicitly derived from System.ValueType
- 对struct中变量赋值会产生赋值的一个拷贝
- struct没有继承,其成员不能用protected修饰,class可以继承和多态
- struct多用来存储数据,而class则作为类的抽象
- struct不能有初始化成员
- this的意义和class的this不同??
- struct不能有显式无参构造器,因为其中的成员自动被初始化为默认值,其中的引用类型被设置为null。但可有静态无参构造器
- class可以定义析构器,但struct不能
- class用于对象建模,而struct更倾向于数据的整合
- struct的构造器必须初始化所有成员,而class不需要
- class使用实例时,必须使用new关键字,而struct不用
- class作为参数时,是引用传递,而struct则为值传递
- C#中的数据类型
- 基原类型,编译器直接支持的类型
- 值类型,变量内存分配在栈,不需要内存回收
- 引用类型,变量内存分配在堆,并有对象引用到堆中内存地址
- Abstract class是什么?
- 不能实例化
- 可有成员函数的实现
- 类似于C++中的纯虚函数
- 继承于它的类需要override其定义的方法
|