随便写写
来源:互联网 发布:mysql有哪些内置的表 编辑:程序博客网 时间:2024/04/28 07:29
前段时间看了c#高级编程这本书(时间问题就走马观花看了一下下,如果以后有机会就看看,学习c#。呵呵),看的时候从中找到了几个问题的答案。
(一次机会有为boss问我的几个问题,自己很模糊的地方。也许这应该是早要清楚的。嘻嘻)
1. 如果系统资源没有了,系统会如何处理?
有个垃圾收集器来做这件事 ---> 当托管堆满的时候 --->检查对存储在托管堆上的对象引用 ---> 没有引用的对象不能再从代码中访问 ---> 因为被删除啦。呵呵
2. struct 和 class的区别?
(一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理;
(二)成员的默认访问权限。class的成员默认是private权限,struct默认是public权限。
(三)在内存中的存储方式 (P73)
A. struct 是存储在堆栈(stack)上的值类型;
B. class 是存储在堆(heap)上的引用类型。
3. heap 和stack (P37)
A. 堆(heap) ---> 程序员分配,eg:new,malloc,string
B. 栈(stack) ---> 系统分配,eg:int
4. 下面为书中的个人认为以后要回读的地方:
A. c#开发人员注意,由于c#本身有一个string类型,所以不需要把字符串表现为char类型的数组。(P36)
B. XML的编写及使用 (P60)
C. 编程风格的重要规则。(P67)
C# 中 Struct 与 Class 的区别,以及两者的适用场合
既然class是引用类型,class可以设为null。但是我们不能将struct设为null,因为它是值类型。
{
int aField;
}
class AClass
{
int aField;
}
class MainClass
{
public static void Main()
{
AClass b = null; // No error.
AStruct s = null; // Error [ Cannot convert null to 'AStruct'
because it is a value type ].
}
}
2,当你实例一个class,它将创建在堆上。而你实例一个struct,它将创建在栈上
3,你使用的是一个对class实例的引用。而你使用的不是对一个struct的引用。(而是直接使用它们)
4,当我们将class作为参数传给一个方法,我们传递的是一个引用。struct传递的是值而非引用。
5,structs 不可以有初始化器,class可以有初始化器。
{
int myVar =10; // no syntax error. public void MyFun( )
{ // statements }
}
struct MyStruct
{
int myVar = 10; // syntax error.
public void MyFun( )
{ // statements }
}
6 Classes 可以有明显的无参数构造器,但是Struct不可以
{
int myVar = 10;
public MyClass( ) // no syntax error.
{
// statements
}
}
struct MyStruct
{
int myVar;
public MyStruct( ) // syntax error.
{
// statements
}
}
7 类使用前必须new关键字实例化,Struct不需要
myVar=100;//NullReferenceException(because aClassObj does not contain a reference to an object of type myClass).
MyStruct aStructObj;
aStructObj.myVar=100; // no exception.
8 class支持继承和多态,Struct不支持. 注意:但是Struct 可以鹤类一样实现接口
9 既然Struct不支持继承,其成员不能以protected 或Protected Internal 修饰
10 Class的构造器不需要初始化全部字段,Struct的构造器必须初始化所有字段
{
int myInt;
string myString;
public MyClass( int aInt )
{ myInt = aInt; }
}
struct MyStruct // Error ( Field ' MyStruct.myString ' must be fully assigned before it leaves the constructor ).
{
int myInt;
string myString;
public MyStruct( int aInt )
{
myInt = aInt;
}
}
12 Class比较适合大的和复杂的数据,Struct适用于作为经常使用的一些数据组合成的新类型。
适用场合:Struct有性能优势,Class有面向对象的扩展优势。
用于底层数据存储的类型设计为Struct类型,将用于定义应用程序行为的类型设计为Class。如果对类型将来的应用情况不能确定,应该使用Class。
上面有写的不对或者朋友们有更深见解的,欢迎评论。
- 随便写写......
- 随便写写
- 随便写写
- 随便写写
- 随便写写
- 随便写写
- 随便写写
- 随便写写
- 随便写写
- 随便写写
- 随便写写
- 随便写写
- 随便写写~
- 随便写写
- 随便写写
- 随便写写
- 随便写写
- 随便写写
- rman maintains
- DX.....请问怎么实现游戏中的攻击事件 急!急!急!
- 双语常识:夏日防晒SPF越高越好吗?
- memset(),memcpy(),strcpy()函数介绍
- JUnit
- 随便写写
- VB无法引用WebBrowser控件的问题 ieframe.dll1
- 送检通过了
- 51单片机控制GSM模块TC35的方法(注意,模块类型不同)
- 存储过程失效原因分析与解决办法
- Delphi实现U盘加密狗
- 第一次上电视
- mysql字符集和校对规则
- 股海拾贝