1,字段和属性的区别?
答:首先,在C#中,我们可以非常自由的、毫无限制的访问公有字段,但在一些场合中,我们可能希望限制只能给字段赋于某个范围的值、或是要求字段只能读或只能写,或是在改变字段时能改变对象的其他一些状态,这些单靠字段是无法做到的,于是就有了属性,属性中包含两个块:set和get,set块负责属性的写入工作,get块负责属性的读取工作。在两个块中都可以做一些其他操作,如在set中验证赋的值是否符合要求并决定是否进行赋值。当缺少其中一块时属性就只能读或只能写,set和get块中属性必需有一个,因为即不能读又不能写的属性是没有意义的。
另外,属性可以保证安全,当不在本类中使用时可以保证使用属性名可以避免使用字段名。属性的get和set可以限制字段的一些功能,以达到某些要求;
最后,属性没有存储数据的功能,数据都存储在字段中,所以只有修改字段数据才有用,修改属性值没用;
《************************************************************************************************************************》
以上内容摘自http://www.cnblogs.com/yichengbo
《************************************************************************************************************************》
2,结构(struct)和类的区别?
答:
结构示例:
public struct Person
{
string Name;
int height;
int weight
public bool overWeight()
{
//implement something
}
}
类示例:
public class TestTime
{
int hours;
int minutes;
int seconds;
public void passtime()
{
//implementation of behavior
}
}
调用过程:
public class Test
{
public static ovid Main
{
Person Myperson=new Person //声明结构
TestTime Mytime=New TestTime //声明类
}
}
类的声明和结构的声明非常类似,只是限定符后面是 struct 还是 class 的区别,而且使用时,定义新的结构和定义新的类的方法也非常类似;
区别:
结构是值类型,值类型在堆栈上分配地址,所有的基类型都是结构类型(例如:int 对应System.int32 结构,string 对应 system.string 结构 ,通过使用结构可以创建更多的值类型);
类是引用类型:引用类型在堆上分配地址,堆栈的执行效率要比堆的执行效率高,可是堆栈的资源有限,不适合处理大的逻辑复杂的对象。所以结构处理作为基类型对待的小对象,而类处理某个商业逻辑。
因为结构是值类型所以结构之间的赋值可以创建新的结构,而类是引用类型,类之间的赋值只是复制引用
注:(1)虽然结构与类的类型不一样,可是他们的基类型都是对象(object),c#中所有类型的基类型都是object。(2)虽然结构的初始化也使用了New 操作符可是结构对象依然分配在堆栈上而不是堆上,如果不使用“新建”(new),那么在初始化所有字段之前,字段将保持未赋值状态,且对象不可用。
结构不能从另外一个结构或者类继承,本身也不能被继承,虽然结构没有明确的用sealed声明,可是结构是隐式的sealed
结构没有默认的构造函数,但是可以添加构造函数,没有析构函数,没有 abstract 和 sealed(因为不能继承),不能有protected 修饰符,可以不使用new 初始化,在结构中初始化实例字段是错误的;类有默认的构造函数,有析构函数,可以使用 abstract 和 sealed,有protected 修饰符,必须使用new 初始化
讨论了结构与类的相同之处和差别之后,下面讨论如何选择使用结构还是类:
1、堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些
2、 结构表示如点、矩形和颜色这样的轻量对象,例如,如果声明一个含有 1000 个点对象的数组,则将为引用每个对象分配附加的内存。在此情况下,结构的成本较低。
3、在表现抽象和多级别的对象层次时,类是最好的选择
4、大多数情况下该类型只是一些数据时,结构时最佳的选择
《************************************************************************************************************************》
以上内容全是摘抄,原文地址http://cjzhy0668.blog.163.com/blog/static/
值类型:值类型存于栈,引用类型存于堆。(直的就要站着,隐的就要蹲着)
《************************************************************************************************************************》
3,为什么使用存储过程?优势是什么?
答:存储过程的优势:
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2.当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query,Delete 时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
这些操作,如果用程序来完成,就变成了一条条的 SQL
语句,可能要多次连接数据库。而换成存储,只需要连接一次数据库就可以了。
3.存储过程可以重复使用,可减少数据库开发人员的工作量。
4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权。
《************************************************************************************************************************》
以上内容摘自http://blog.csdn.net/defonds/archive/2009/07/15/4349922.aspx
《************************************************************************************************************************》