【www.myl5520.com--蒙学】
类方法和实例方法的区别
篇一:实例方法
我们已经知道类体中的方法分为实例方法和类方法两种,用static修饰的是类方法。二者有什么区别呢?下面小编跟大家讲讲类方法和实例方法的区别。
类方法和实例方法的区别
当一个类创建了一个对象后,这个对象就可以调用该类的方法。当类的字节码文件被加载到内存时,类的实例方法不会被分配入口地址,当该类创建对象后,类中的实例方法才分配入口地址,从而实例方法可以被类创建的任何对象调用执行。
需要注意的是,当我们创建第一个对象时,类中的实例方法就分配了入口地址,当再创建对象时,不再分配入口地址,也就是说,方法的入口地址被所有的对象共享,当所有的对象都不存在时,方法的入口地址才被取消。
对于类中的类方法,在该类被加载到内存时,就分配了相应的入口地址。从而类方法不仅可以被类创建的任何对象调用执行,也可以直接通过类名调用。类方法的入口地址直到程序退出才被取消。
类方法在类的字节码加载到内存时就分配了入口地址,因此,Java语言允许通过类名直接调用类方法,而实例方法不能通过类名调用。
在讲述类的时候我们强调过,在Java语言中,类中的类方法不可以操作实例变量,也不可以调用实例方法,这是因为在类创建对象之前,实例成员变量还没有分配内存,而且实例方法也没有入口地址。
下面小编给大家举个例子说明一下两种方法的区别
class A
{ int x,y;
static float f(int a){}
float g(int x1,int x2){}
}
class B
{ public static void main(String args[])
{ A a1=new A();
A.f(2,3); //合法。
a1.f(2,4); //合法。
a1.g(2,5); //合法。
A.g(3,2); //非法。
}
}
小编推荐:Java中string类的方法
一、构造函数
String(byte[ ] bytes):通过byte数组构造字符串对象。
String(char[ ] value):通过char数组构造字符串对象。
String(Sting original):构造一个original的副本。即:拷贝一个original。
String(StringBuffer buffer):通过StringBuffer数组构造字符串对象。
例如:
byte[] b = {'a','b','c','d','e','f','g','h','i','j'};
char[] c = {'0','1','2','3','4','5','6','7','8','9'};
String sb = new String(b); //abcdefghij
String sb_sub = new String(b,3,2); //de
String sc = new String(c); //0123456789
String sc_sub = new String(c,3,2); //34
String sb_copy = new String(sb); //abcdefghij
System.out.println("sb:"+sb);
System.out.println("sb_sub:"+sb_sub);
System.out.println("sc:"+sc);
System.out.println("sc_sub:"+sc_sub);
System.out.println("sb_copy:"+sb_copy);
输出结果:sb:abcdefghij
sb_sub:de
sc:0123456789
sc_sub:34
sb_copy:abcdefghij
.Net知识点
篇二:实例方法
分享如何系统学习.Net/DotNet知识点。从编程语言C#开始,到面向过程,面向对象、 C#高级编程知识、数据库及Ado.Net,网页请求响应原理,学习开发Asp.Net。
需要整理的知识点有:.NET、SQL、JS、CSS、AJAX
----------------------------------------------------.NET框架基础-----------------------------------------------
什么是CLR? 它包括哪2个部分?
通用语言运行库。包含.NET程序的引擎和符合CLI的类库。
什么是.NET框架? 就是CLR。
什么是CLI?
通用语言基础结构,是一份语言和数据格式的规范。
什么是CTS?
通用类型系统,定义了能够在CLR上运行的语言规范。
什么是CLS?
通用语言规范,定义了所有.NET程序需要符合的最小规范集。
.NET程序开发所需的最基本环境?
一个文字编辑器和针对编码语言的编译器。
运行.NET程序需要什么? .NET Framework组件。
什么是程序集、应用程序域? 程序集:模块与资源文件的集合。 应用程序域:类似于OS的进程,提供代码运行范围、错误隔离和安全设置隔离的逻辑单元,其创建和开销较进程小。
.NET的运行机制是什么? (1)编译C#代码
(2)把代码编译成中间语言,并包装成装配件 (3)通过JIT将装配件编译成机器码
什么是程序集强签名?它有哪四个元素来唯一区别。 是一个带有公钥和数字签名的程序集。
四个元素是:文件名、版本号、语言文化和公钥。
-------------------------------------------------C# .NET语法基础--------------------------------------------- 什么是虚方法?
子类可以用override关键字来覆盖父类方法,实现该方法的另一种功能实现。
new关键字的作用?
显示隐藏从父类继承的成员,目的是将一个方法替换成另一个方法。
如何使得一个类不被继承? 用sealed关键字修饰此类
什么是装箱和拆箱?装箱的作用?
装箱就是将值类型转换为引用类型Object,使得值类型可以存储在垃圾回收堆中 拆箱就是将引用类型转换为值类型
常用的值类型有哪些?
结构 枚举 整型 浮点型 布尔型
关键字ref的作用? 无
泛型ArrayList的好处是什么?(不全)
·定义了针对某个类型的容器类ArrayList的泛型集合,就能避免数据进出容器引发的大规模的装箱和拆箱操作,从而提高系统运行性能。
.net中所有内建类型的基类是什么?此基类中有哪些方法?其中哪些是虚方法?
System.Object 其主要方法有Equals() ToString() GetHashCode(),前两个是虚方法,需要被重写。
所有值类型的基类是什么?
System.ValueType,但也是继承自System.Object
值类型和引用类型的区别?有3点 1、内存分配上
值类型在堆栈上分配内存空间,引用类型在堆上分配内存空间。 2、赋值时的区别 对于值类型,变量直接获得值类型的数据副本,对于引用类型,变量获得的是其对象的引用。 3、类型比较
对于值类型,直接内容比较,对于引用类型,是引用比较。
C#中是否有全局变量
没有传统意义的全局变量,c#程序中任何对象数据必须属于某个类型,但是通过公共静态变量可以实现全局变量的功能。
结构和类的区别是什么,结构适用于那些场合?
结构是值类型,不具备继承特性,不能定义虚方法和抽象方法,不能有无参构造函数,不能为成员变量设初值。
当一个类型仅仅是原始数据集合且不需要复杂操作时,定义为结构,因为结构作为值类型,对象内存分配和回收效率相对较高。
什么是类型的初始化器?Q
类型的初始化器是指具有和类型相同名字、无参数无返回的一个static方法。
C#中方法的参数可以有哪几种传递方式?Q
有三个关键字可以修饰方法的参数:ref、out、params。
ref和out是引用传递,区别是ref要求参数传递前必须初始化,而out则不需要; params实现了参数数目可变的方法,可以直接传入变量集合而无需声明数组。
C#中string和String以及object和Object有什么区别?
是同一个类型的两个名字,没有太多区别,string是String的别名,object是Object的别名。 但就编码规范来说,系统中最好使用一种,要么全用string,要么全用String。
.NET支持哪几种访问性级别,C#实现了其中的哪几种?
.NET支持的访问性级别有6种,分别是Public, Private, Family,Assembly,Family&Assembly, Family or Assembly,C#除了Family&Assembly没有实现,其他都实现,相对应的关键字是public,private,protected,internal,protect internal
什么是属性?它有什么优点?它和方法有什么区别? 属性是指有返回值无参数的特殊方法; 优点就是属性具有很好的扩展性。(尝试举例p64)
和方法区别就是代替了早期的GetXXX/SetXXX方法,方便使用以及使代码可读性提高。
简述C#中的浅复制和深复制。
foreach循环语句和其他循环语句相比有何优点?有何局限?
foreach循环语句适合遍历实现了IEnumberable接口的容器类,但不允许直接修改遍历项目的值,但可调用其方法来修改,其执行效率较高,在开发中应优先考虑使用。
C#中的using语句有什么作用?
using语句为实现IDisposable的类对象在using块结束后,自动调用Dispose()方法释放资源,相当于一个try/catch块,相当于一个异常处理块,所有对象应该在using语句开始后创建对象。
System.String是值类型还是引用类型?
是引用类型,其对象初始化后不能再做修改,一旦修改表示一个新字符串的生成。
StringBuilder类型有何作用?
当一个字符串被修改、连接等操作,最终生成需经过组装过程,期间会产生很多不需要的临时字符串对象,大大影响了程序性能,所以用StringBuilder类解决这个问题,一旦此类的ToString()方法被调用时,生成最终字符串对象。
String和Byte[]之间的互相转换?(用到哪个类和哪2个方法) Encoding.UTF8.GetBytes(字符串对象);
Encoding.UTF8.GetString(字节数组对象);
什么是字符串池机制?
CLR会保留程序中出现过的字符串对象集合,在需要新字符串时在其中查找,找到则返回已有对象引用,致力于改善程序性能。(当然也可以使用StringBuilder类代替String类)
Int[]是值类型还是引用类型?
数组类型是一个类型族,都继承自System.Array,而System.Array又继承自System.Object,所以是引用类型。
C#中类可以有多个父类吗?可以实现多个接口吗?
不能实现多继承,但可以实现多接口。.NET接口指一系列方法、属性、索引和事件的签名。类方法和实例方法的区别
简述C#中重写、重载和隐藏的概念。 重写(override):是指子类用Override关键字重新实现定义在父类中的虚方法,并在实际运行时根据对象类型来调用相应的方法。
隐藏:是指子类用new关键字重新实现定义在父类中的方法,但在实际运行时只能根据引用来调用相应的方法。 重载(overload):拥有相同名字和返回值的方法拥有不同的参数列表。
为什么不能在构造函数中调用虚方法?
一个类的构造顺序是:先初始化成员变量,然后执行父类构造函数,然后执行自己的构造函数。也就是说当子类被创建时,现调用父类构造函数,其中含有虚方法,即子类构造函数中将重写此虚方法,然而此时子类构造还未完成,则对于为构造的子类成员访问是错误的。
如何声明一个类不能被继承? 用sealed关键字
进行类型判断时或者类型转换时如何更高效和避免异常? 用is和as关键字。
什么是泛型?泛型有什么好处?
泛型允许程序员定义更通用的类型和算法,并且在具体使用时再生成具体类型。 能够避免容器类的装箱和拆箱问题。
什么是泛型的主要和次要约束?
主要约束指泛型的参数必须是引用类型,次要约束是指泛型的参数必须实现的接口。
什么是STL模板库?
是一种通用的、高效的算法、容器和迭代器的集合,有助于程序员更加高效的开发和节省时间。
--------------------------------------------------委托和事件-----------------------------------------------------
什么是委托?委托有什么优点?你什么时候会用到委托。
委托是一个继承自System.Delegate的类,每个委托变量都至少绑定了一个方法,当调用委托方法时,就会调用绑定到委托对象上的方法。
委托使程序更具有扩展性和灵活性,减少类与类之间的耦合度。
一个叫做stop()的方法要关闭多种电器,当需要添加新电器时不得不修改stop()方法;而用委托只需声明一个委托变量,将控制某种电器关闭方法绑定到此委托就可以了。
委托绑定实例方法和静态方法有什么区别?
委托内部有两个成员变量,_target和_methodPtr,当绑定实例方法时,_target的值为该方法所在类的实例对象,_methodPtr为该方法;当绑定静态方法时,_target则为null。
什么时链式委托?请举个简单例子。 就是多点委托。
public delegate void stopDelegate(); public static void stopTV() {
Console.WriteLine("关闭电视机"); }
public static void stopLight() {
Console.WriteLine("关灯"); }
public static void stopFan() {
Console.WriteLine("关电扇"); }
static void Main(string[] args) {
stopDelegate stop = stopTV; stopDelegate stop2 = stopLight; stopDelegate stop3 = stopFan;
stopDelegate stopHead = stop + stop2 + stop3; //链表头 stopHead(); }
链式委托执行顺序是怎样的?
委托结构里有个_prev变量指定链表中最后一个委托对象。 用Combine()方法来规定调用顺序。
链式委托的返回值是怎么样的?
委托多个有返回值的方法,只返回最后一个方法的返回值。
什么是事件?举一个简单例子。 事件是一种特殊的委托。
线程:进程中的可以被调度的单元。
每个进程之间是相互隔离的,而线程之间可以相互访问。
什么是纤程?
是一种轻量级线程。
在.NET中如何控制线程?
提供了System.Threading.Thread类型封装了线程操作。
什么是线程池?
相当于一个缓存,以前创建的县城,当需要一个新线程时,先在里面找是否有相同的,找不到再重新创建,这样使为了降低系统开销。
lock关键字作用?
锁定某个对象来实现线程同步。
---------------------------------------------------文件操作------------------------------------------------- 如何创建一个文件夹?
System.IO.Directory.CreateDirectory("c:\\新建文件夹"); 或
DirectoryInfo f = new DirectoryInfo("c:\\3"); f.Create();
如何创建文件,并写入内容? File.Create("C:\\1.txt");
File.Create("C:\\1.txt","内容"); 或
StreamWriter sw=new StreamWriter("c:\\1.txt"); sw.Write("内容"); sw.WriteLine("内容");
----------------------------------------------------asp.net-------------------------------------------------------- get和post请求有什么区别?
get是向服务器申请资源的请求,post是向服务器发送数据的请求。 get将数据放在url地址后面
get请求对长度和编码有限制,post没有长度限制
session有哪几种存储方式?有何区别? IIS进程(默认)、状态服务器、SqlServer数据库、自定义保存程序 除了默认,其他都需要能够可序列化的类型数据且不易丢失。
列举页面跳转方式?
Response.Redirect()、Server.Transfer()、JS脚本
笔记整理
AJAX的核心对象是什么?根据不同浏览器写出创建其对象的代码? XMLHttpRequest 创建代码:
如何强制使程序线程阻塞5秒钟? System.Threading.Thread.Sleep(5000);
请描述ADO.NET组成结构? 由数据提供程序和数据集组成。
数据提供程序包括Connection,Command,DataAdapter,DataReader 数据集包括DataSet等。
如何将查询结果放入DataSet虚拟表中?
DataAdapter da=new DataAdapter(“sql语句”,con); DataSet ds=new DataSet(); da.Fill(ds,”虚拟表名”);
请写一个分页存储过程?
create proc usp_tablePaged @pageSize int, @pageIndex int as
with t as ( select row_number() over(order by forumId desc) as RowNo,* from forums
)
select * from t
where RowNo between @pageSize*(@pageIndex-1)+1 and @pageSize*@pageIndex go
如何将一个数组参数添加到SqlCommand参数集合中? AddRange()方法
Sql语言中有哪三种分类?(?) TCL:事务控制语言 DDL: DML:
如何创建表索引?
Create index index_name on 表(字段)
set nocount on/off的作用是什么?
on不返回数据操作语句影响的行数,off相反
如何使实体类能够被序列化? 使用[Serializable]标记
请简述Sql Server中锁的作用?有哪些类型的锁? 为了解决多事务并发所带来的问题;
解决丢失更新(一个人更新数据后另一个人又更新)、脏读、不可复读 锁的分类有:共享锁、排他锁、更新锁、意向锁 锁的管理:乐观锁(不用管理)、悲观锁(程序员管理、设置事务的隔离级别)
什么是OOD/OOA?
如何用sql语句判断数据库中某个存储过程是否存在?
If exsits (select type,name from sys.all_objects where type=’p’ and name=’存储过程名’) 其中sys.all_objects为数据字典
查询上一个插入语句的自动增长列号? Select @@identity
什么是DNS?
域名解析服务器,用于将域名转换成其ip地址。
TCP/IP包括哪些层?每个层的作用有哪些? 应用层:HTTP,FTP,SMTP (端口号) 传输层:TCP UDP(指定传输协议) 网络层:IP(找到IP地址)
物理层:电气规范(定位到物理元件)
ASP.NET中虚路径转实际路径的方法? Server.MapPath(“images/xx.jpg”)
如何在页面上打印html源代码?(2种) Literal控件,mode属性值改为Encode。(此控件本身不再页面产生任何代码) Server.HtmlEncode(str);
泛型的原理是什么?泛型有什么作用?写一个简单的泛型例子。
允许程序员定义更通用的类型和算法,并且在具体使用时再生成具体的类型。 泛型可以避免容器类操作中装箱和拆箱的问题。
页面跳转的2种方式
Server.Transfer("b.aspx"); --服务器端转发(1次请求)
Response.Redirect("b.aspx"); --客户端重定向(2次请求)
全局应用程序中有哪些方法? Session_Start() 和 Session_End()
什么是HttpHandler?和aspx页面有什么区别?
http处理程序是负责处理请求的aps,net组件,aspx页面是处理程序的一个实例。
什么是ORM?简述其原理。ORM:对象关系映射,是一种为了解决面向对象和关系型数据库存在互不匹配现象的技术,将程序中的对象自动持久化到数据库中。简单说,就是通过对对象的操作,就可以实现对数据访问的功能。 框架有N
ORM有哪些框架(持久化框架)?
NHibernate、Active Record和Linq(MS推出的OR技术)。
什么是持久化?持久层?
把数据保存在可掉电的存储设备上。 持久层类似于DAL。
什么是解耦合?
降低关联的紧密程度,分离业务逻辑和数据逻辑,分离逻辑结构和物理结构,避免因底层结构变动对上层产生较大影响。
Question
string[] str = new string[3]; str[0] = "0"; str[1] = "1"; str[2] = "2";
ArrayList list = new ArrayList(); list.AddRange(str); foreach (string s in list) {
Console.WriteLine(s); }
string[] str1 = (string[])(list.ToArray());
//解决方法:string[] str1 = list.ToArray() as String[] Console.WriteLine(); foreach (string s in str) {
Console.WriteLine(s.ToString()); }
C#面试题大全
篇三:实例方法
C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。
今天小编要与大家分享的是:C#面试题大全;内容仅供阅读参考,希望对大家有所帮助;
C#面试题
1.维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么?
答:尽可能用约束(包括CHECK、主键、唯一键、外键、非空字段)实现,这种方式的效率最好;其次用触发器,这种方式可以保证无论何种业务系统访问数据库都能维持数据库的完整性、一致性;最后再考虑用自写业务逻辑实现,但这种方式效率最低、编程最复杂,当为下下之策。
2.什么是事务?什么是锁?
答:事务是指一个工作单元,它包含了一组数据操作命令,并且所有的命令作为一个整体一起向系统提交或撤消请求操作,即这组命令要么都执行,要么都不执行。
锁是在多用户环境中对数据的访问的限制。SqlServer自动锁定特定记录、字段或文件,防止用户访问,以维护数据安全或防止并发数据操作问题,锁可以保证事务的完整性和并发性。
3.什么是索引,有什么优点?
答:索引象书的目录类似,索引使数据库程序无需扫描整个表,就可以在其中找到所需要的数据,索引包含了一个表中包含值的列表,其中包含了各个值的行所存储的位置,索引可以是单个或一组列,索引提供的表中数据的逻辑位置,合理划分索引能够大大提高数据库性能。
4.视图是什么?游标是什么?
答:视图是一种虚拟表,虚拟表具有和物理表相同的功能,可以对虚拟表进行增该查操作;
视图通常是一个或多个表的行或列的子集;
视图的结果更容易理解(修改视图对基表不影响),获取数据更容易(相比多表查询更方便),限制数据检索(比如需要隐藏某些行或列),维护更方便。
游标对查询出来的结果集作为一个单元来有效的处理,游标可以定位在结果集的特定行、从结果集的当前位置检索一行或多行、可以对结果集中当前位置进行修改、
5.什么是存储过程?有什么优点?
答:存储过程是一组予编译的SQL语句
它的优点:1.允许模块化程序设计,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次。
2.允许更快执行,如果某操作需要执行大量SQL语句或重复执行,存储过程比SQL语句执行的要快。
3.减少网络流量,例如一个需要数百行的SQL代码的操作有一条执行语句完成,不需要在网络中发送数百行代码。
4.更好的安全机制,对于没有权限执行存储过程的用户,也可授权他们执行存储过程。
6.什么是触发器?
答:触发器是一种特殊类型的存储过程,出发器主要通过事件触发而被执行的,
触发器的优点:1.强化约束,触发器能够提供比CHECK约束;
2.跟踪变化,触发器可以跟踪数据库内的操作,从而不允许未经允许许可的更新和变化;
3.联级运算,比如某个表上的触发器中包含对另一个表的数据操作,而该操作又导致该表上的触发器被触发
7.简单介绍下ADO.NET和ADO主要有什么改进?
答:ADO以Recordset存储,而ADO.NET则以DataSet表示,ADO.NET提供了数据集和数据适配器,有利于实现分布式处理,降低了对数据库服务器资源的消耗。
7.1 ASP.NET与ASP相比,主要有哪些进步?
答:ASP.NET实现了面向对象编程,预编译的服务器端代码而不像ASP那样解释执行提高了性能,代码分离易于管理,可订制和扩展性,功能强大的开发工作,更好的安全机制。
7.2 C#中的委托是什么?事件是不是一种委托?
答:委托本质上是一种“方法接口”,它相当于C/C++中的函数指针,当然它比函数指针安全,在C#中通常用于事件处理。事件不是委托,不过由于事件的性质决定了处理它的程序逻辑能访问的参数,因此,在C#中处理事件的逻辑都包装为委托。
8.如何把一个array复制到arrayist里
答:foreach( object arr in array)arrayist.Add(arr);
8.1 列举ADO.NET中的五个主要对象,并简单描述
答:Connection连接对象,Command执行命令和存储过程,DataReader向前只读的数据流,DataAdapter适配器,支持增删查询,DataSet数据级对象,相当与内存里的一张或多张表。
9.概述三层结构体系
答:表示层(UI),业务逻辑层(BLL),数据访问层(DAL)
10.什么是装箱和拆箱?什么是重载?
答:装箱就是把值类型转成引用类型,拆箱相反把引用转换成值类型。
重载就是指一个方法名相同,参数个数不相同,返回值可以相同的方法。
11.简述WebService
答:WebService服务可以描述为可以在web上部署并可以被任何应用程序或其他服务调用的功能。所谓服务就是系统提供一组接口,并通过接口使用系统提供的功能,WebService服务可以提供任何企业到客户,企业到企业,点对点或部门对部门通讯所需的服务,比如一个公司可以通过网络连接到另一个公司的服务,从而直接传递订购单。
12.面向对象的思想主要包括什么?
答:继承、封装、多态
13.列举一下你所了解的XM技术及其应用
答:xml可以用来做网页(xslt)、可以当作数据库、可以用来保存对象的系列化(web服务好象是基于这个的)。
14.C#中的接口和类有什么异同。
答:接口,是可以多继承,类只有单继承.接口强调了你必须实现,而没有具本实现的方法和虚类有点相似。
15.new 关键字用法
答:(1)new 运算符 用于创建对象和调用构造函数。
(2)new 修饰符 用于向基类成员隐藏继承成员。
(3)new 约束 用于在泛型声明中约束可能用作类型参数的参数的类型。
14.DataGrid的Datasouse可以连接什么数据源
答:DataTabe,DataView,DataSet,DataViewManager,任何实现IListSource接口的组件,任何实现IList接口的组件
15.概述反射和序列化
答:反射:公共语言运行库加载器管理应用程序域。这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局。程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。
序列化:序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。
16.概述O/R Mapping 的原理
答:利用反射,配置将对象和数据库表映射。
17.可访问性级别有哪几种
答:pubic 访问不受限制。
protected 访问仅限于包含类或从包含类派生的类型。
internal 访问仅限于当前程序集。
protected internal 访问仅限于从包含类派生的当前程序集或类型。
private 访问仅限于包含类型。
18.sealed修饰符有什么特点
答:sealed 修饰符可以应用于类、实例方法和属性。
密封类不能被继承;
密封方法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。当应用于方法或属性时,sealed 修饰符必须始终与 override一起使用。
19.列举ADO.NET中的共享类和数据库特定类
答:共享类:DataSet,DataTable,DataRow,DataColumn,DataRealtion,Constraint,DataColumnMapping,DataTableMapping
特定类:(x)Connection,(x)Command,(x)CommandBuilder,(x)DataAdapter,(x)DataReader,(x)Parameter,(x)Transaction
20.C#中,string str = null 与 string str ="",请尽量用文字说明区别
答:string str=""初始化对象分配空间,而stringstr=null初始化对象
21.详述.NET里class和struct的异同
答:结构与类共享几乎所有相同的语法,但结构比类受到的限制更多:尽管结构的静态字段可以初始化,结构实例字段声明还是不能使用初始值设定项。
结构不能声明默认构造函数(没有参数的构造函数)或析构函数。
结构的副本由编译器自动创建和销毁,因此不需要使用默认构造函数和析构函数。实际上,编译器通过为所有字段赋予默认值(参见默认值表)来实现默认构造函数。
结构不能从类或其他结构继承。
结构是值类型 -- 如果从结构创建一个对象并将该对象赋给某个变量,变量则包含结构的全部值。复制包含结构的变量时,将复制所有数据,对新副本所做的任何修改都不会改变旧副本的数据。
由于结构不使用引用,因此结构没有标识 -- 具有相同数据的两个值类型实例是无法区分的。C# 中的所有值类型本质上都继承自ValueType,后者继承自 Object。编译器可以在一个称为装箱的过程中将值类型转换为引用类型。
结构具有以下特点:
结构是值类型,而类是引用类型。
向方法传递结构时,结构是通过传值方式传递的,而不是作为引用传递的。
与类不同,结构的实例化可以不使用 new 运算符。
结构可以声明构造函数,但它们必须带参数。
一个结构不能从另一个结构或类继承,而且不能作为一个类的基。所有结构都直接继承自 System.ValueType,后者继承自 System.Object。
结构可以实现接口。
在结构中初始化实例字段是错误的。
22.什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载? CTS、CLS和CLR分别作何解释?
答:应用程序域:应用程序域为安全性、可靠性、版本控制以及卸载程序集提供了隔离边界。应用程序域通常由运行库宿主创建,运行库宿主负责在运行应用程序之前引导公共语言运行库。应用程序域提供了一个更安全、用途更广的处理单元,公共语言运行库可使用该单元提供应用程序之间的隔离。
托管代码:使用基于公共语言运行库的语言编译器开发的代码称为托管代码;托管代码具有许多优点,例如:跨语言集成、跨语言异常处理、增强的安全性、版本控制和部署支持、简化的组件交互模型、调试和分析服务等。
强类型:C# 是强类型语言;因此每个变量和对象都必须具有声明类型。
装箱和拆箱:装箱和拆箱使值类型能够被视为对象。对值类型装箱将把该值类型打包到 Object 引用类型的一个实例中。这使得值类型可以存储于垃圾回收堆中。拆箱将从对象中提取值类型。
重载:每个类型成员都有一个唯一的签名。方法签名由方法名称和一个参数列表(方法的参数的顺序和类型)组成。只要签名不同,就可以在一种类型内定义具有相同名称的多种方法。当定义两种或多种具有相同名称的方法时,就称作重载。
CTS通用类型系统 (common type system) :一种确定公共语言运行库如何定义、使用和管理类型的规范。
CLR公共语言运行库:.NET Framework 提供了一个称为公共语言运行库的运行时环境,它运行代码并提供使开发过程更轻松的服务。
CLS公共语言规范:要和其他对象完全交互,而不管这些对象是以何种语言实现的,对象必须只向调用方公开那些它们必须与之互用的所有语言的通用功能。为此定义了公共语言规范 (CLS),它是许多应用程序所需的一套基本语言功能。
23.值类型和引用类型的区别?
答:基于值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。这与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。
所有的值类型均隐式派生自 System.ValueType。与引用类型不同,从值类型不可能派生出新的类型。但与引用类型相同的是,结构也可以实现接口。
与引用类型不同,值类型不可能包含 null 值。然而,可空类型功能允许将null 赋给值类型。 每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。
值类型主要由两类组成:结构、枚举; 结构分为以下几类:Numeric(数值)类型、整型、浮点型、decimal、bool、用户定义的结构。
引用类型的变量又称为对象,可存储对实际数据的引用。声明引用类型的关键字:class、interface、delegate、内置引用类型: object、string
24.如何理解委托
答:委托类似于 C++ 函数指针,但它是类型安全的。委托允许将方法作为参数进行传递。委托可用于定义回调方法。委托可以链接在一起;例如,可以对一个事件调用多个方法。方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。
25.C#中的接口和类有什么异同?
答:异:不能直接实例化接口。
接口不包含方法的实现。
接口、类和结构可从多个接口继承。但是C#类只支持单继承:类只能从一个基类继承实现。类定义可在不同的源文件之间进行拆分。
同:接口、类和结构可从多个接口继承。
接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。
接口可以包含事件、索引器、方法和属性。
26.ASP.net的身份验证方式有哪些?
答:Windows 身份验证提供程序:提供有关如何将Windows 身份验证与Microsoft Internet 信息服务 (IIS) 身份验证结合使用来确保 ASP.NET 应用程序安全的信息。
Forms 身份验证提供程序:提供有关如何使用您自己的代码创建应用程序特定的登录窗体并执行身份验证的信息。使用 Forms 身份验证的一种简便方法是使用 ASP.NET 成员资格和 ASP.NET 登录控件,它们一起提供了一种只需少量或无需代码就可以收集、验证和管理用户凭据的方法。
Passport 身份验证提供程序:提供有关由Microsoft 提供的集中身份验证服务的信息,该服务为成员站点提供单一登录和核心配置
27.活动目录的作用
答:Active Directory存储了有关网络对象的信息,并且让管理员和用户能够轻松地查找和使用这些信息。
Active Directory使用了一种结构化的数据存储方式,并以此作为基础对目录信息进行合乎逻辑的分层组织。
28.解释一下UDDI、WSDL的意义及其作用
答:UDDI:统一描述、发现和集成协议(UDDI, Universa Description, Discovery and Integration)是一套基于Web的、分布式的、为Web服务提供的信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web服务注册以使得别的企业能够发现的访问协议的实现标准。UDDI 提供了一组基于标准的规范用于描述和发现服务,还提供了一组基于因特网的实现。
WSDL:WSDL描述Web服务的公共接口。这是一个基于XML的关于如何与Web服务通讯和使用的服务描述;
作用: 服务 URL 和命名空间 :网络服务的类型(可能还包括SOAP 的函数调用,正像我所说过的,WSDL足够自如地去描述网络服务的广泛内容)。有效函数列表,每个函数的参数,每个参数的类型 ,每个函数的返回值及其数据类型。
29.什么是SOAP?
答:SOAP(Simpe Object Access Protoco )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一直语言相互通信。
SOAP 是一种轻量级协议,用于在分散型、分布式环境中交换结构化信息。 SOAP 利用 XML 技术定义一种可扩展的消息处理框架,它提供了一种可通过多种底层协议进行交换的消息结构。这种框架的设计思想是要独立于任何一种特定的编程模型和其他特定实现的语义。
SOAP 定义了一种方法以便将 XML 消息从 A 点传送到 B 点。为此,它提供了一种基于 XML且具有以下特性的消息处理框架:1) 可扩展,2) 可通过多种底层网络协议使用,3) 独立于编程模型。
30.如何部署一个ASP.net页面?
答:VS 2005和VS 2003都有发布机制。2003可以发布然后再复制部署。VS2005基本上可以直接部署到对应位置。
31.如何理解.net中的垃圾回收机制?
答:.NETFramework 的垃圾回收器管理应用程序的内存分配和释放。每次您使用 new 运算符创建对象时,运行库都从托管堆为该对象分配内存。只要托管堆中有地址空间可用,运行库就会继续为新对象分配空间。但是,内存不是无限大的。最终,垃圾回收器必须执行回收以释放一些内存。垃圾回收器优化引擎根据正在进行的分配情况确定执行回收的最佳时间。当垃圾回收器执行回收时,它检查托管堆中不再被应用程序使用的对象并执行必要的操作来回收它们占用的内存。
32.概述.NET中的GC机制。
答:GC的全称是garbage collection,中文名称垃圾回收,是.NET中对内存管理的一种功能。垃圾回收器跟踪并回收托管内存中分配的对象,定期执行垃圾回收以回收分配给没有有效引用的对象的内存。当使用可用内存不能满足内存请求时,GC会自动进行。
在进行垃圾回收时,垃圾回收器会首先搜索内存中的托管对象,然后从托管代码中搜索被引用的对象并标记为有效,接着释放没有被标记为有效的对象并收回内存,最后整理内存将有效对象挪动到一起
33.ASP.NET中常见内置对象?
答:Response、Request、Server、Session、Application、Cookie
34.死锁的必要条件?怎么克服?
答:系统的资源不足,进程的推进的顺序不合适,资源分配不当,一个资源每次只能被一个进程使用,一个资源请求资源时,而此时这个资源已阻塞,对已获得资源不放,进程获得资源时,未使用完前,不能强行剥夺。
35.接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?
答:接口是可以继承接口的,抽象类是可以实现接口的,抽象类可以继承实体类,但是有个条件,条件是,实体类必须要有明确的构造函数。
36.构造器Constructor是否可以被继承?是否可以被Override?
答:Constructor不可以被继承,因此不能被重写(Overriding),但可以被重载(Overloading).
37.是否可以继承String类?
答:因为String类是final类所以不可以继承string类。
38.当一个线程进入一个对象的方法后,其它线程是否可以进入该对象的方法?
答:不可以,一个对象的方法只能由一个线程访问。类方法和实例方法的区别
39.用最有效的方法算出2乘以8等于几?
答:2<<3.
40.C#是否可以对内存直接进行操作?
答:C#是可以对内存进行直接操作的,虽然很少用到指针,但是C#是可以使用指针的,在用的时候需要在前边加unsafe,,在.net中使用了垃圾回收机制(GC)功能,它替代了程序员,不过在C#中不可以直接使用finalize方法,而是在析构函数中调用基类的finalize()方法。
41.数组有没有Length()这和方法?string有没有这个方法?
答:数组中没有这个方法,但有这个属性,string中有这个方法。
42.Error和Exception有是区别?
答:error表示恢复不是不可能,但是很困难,exception表示一种实际或实现问题,它表示程序运行正常不可以发生的。
43.HashMap和Hashtable区别?
答:HashMap是Hashtable的轻量级实现,非线程安全的实现他们都实现了map接口,主要区别是HashMap键值可以为空null,效率可以高于Hashtable。
44.Collection和Collections的区别?
答:Collection是集合类的上级接口,Collections是针对集合类的一个帮助类,它提供一系列静态方法来实现对各种集合的搜索,排序,线程安全化操作。
45.Override, Overload,的区别?
答:Override是重写的意思,它表示重写基类的方法,而且方法的名称,返回类型,参数类型,参数个数要与基类相同。
Overload是重载是意思,它也表示重写基类的方法,但是只要方法名相同,别的可以不同。
46.在一个BS结构中需要传递变量值时,不能使用session,cookie,application,你有几中方法?
答:this.server.Transfer,Querystring.
47.C#种索引器实现过程,是否只能根据数字索引?
答:不是的,可以是任意类型。
48.Const和ReadOnly?
答:Const用来申明编程时申明常量,ReadOnly用来申明运行时常量。
49.UDP和TCP连接有和异同?
答:TCP是传输控制协议,提供的是面向连接的,是可靠的,字节流服务,当用户和服务器彼此进行数据交互的时候,必须在他们数据交互前要进行TCP连接之后才能传输数据。TCP提供超时重拨,检验数据功能。
UDP是用户数据报协议,是一个简单的面向数据报的传输协议,是不可靠的连接。
50.进程和线程分别该怎么理解?
答:进程是比线程大的程序运行单元,都是由操作系统所体会的系统运行单元
一个程序中至少要有一个进程,有一个进程中,至少要有一个线程,线程的划分尺度要比进程要小,进程拥有独立的内存单元,线程是共享内存,从而极大的提高了程序的运行效率同一个进程中的多个线程可以并发执行。
51.在.NET中所有类的基类是?
答:object。
52.能用foreach遍历访问的对象需要实现?
答:需要实现IEnumerable接口和GetEnumerator()方法。
53.Heap与stack的差别?
答:Heap是堆,空间是由手动操作分配和释放的,它的存储区很大的自由存储区。
Stack是栈,是由是操作系统自动分配和释放的,栈上的空间是有限的。程序在编译期间变量和函数分配内存都是在栈上进行的,且在运行时函数调用时的参数的传递也是在栈上进行的。
54.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
答:foreach(System.Windows.Forms.Control control in this.Controls)
{
if (control isSystem.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBox tb =(System.Windows.Forms.TextBox)control ;
tb.Text = String.Empty ;
}
}
55.请编程实现一个冒泡排序算法?
答:int [] array= new int [*] ;
int temp = 0 ;
for (int i = 0 ; i < array.Length - 1 ;i++)
{
for (int j = i + 1 ; j < array.Length ;j++)
{
if (array[j] < array[i])
{
temp = array[i] ;
array[i] = array[j] ;
array[j] = temp ;
}
}
}
56.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m
答:int Num =this.TextBox1.Text.ToString() ;
int Sum = 0 ;
for (int i = 0 ; i < Num + 1 ; i++)
{
if((i%2) == 1)
{
Sum += i ;
}
else
{
Sum = Sum - i ;
}
}
Console.WriteLine(Sum.ToString());
Console.ReadLine() ;
57.什么叫应用程序域?
答:应用程序域可以理解为一种轻量级进程。起到安全的作用。占用资源小。
58.什么是受管制的代码?
答:unsafe:非托管代码。不经过CLR运行。
59.在.net中,配件的意思是?
答:程序集。(中间语言,源数据,资源,装配清单)
60.常用的调用WebService的方法有哪些?
答:1.使用WSDL.exe命令行工具。
2.使用VS.NET中的Add Web Reference菜单选项
61. .net Remoting 的工作原理是什么?
答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。
62.根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。
public void test(int i)
{
lock(this)
{
if (i>10)
{
类方法和实例方法的区别 i--;
test(i);
}
}
}
答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)
python中类方法、类实例方法、静态方法的使用与区别
篇四:实例方法
使用方法:
Python代码
1.class A(object):
2. def foo(self,x):
3. #类实例方法
4. print "executing foo(%s,%s)"%(self,x)
5.
6. @classmethod #声明类方法
7. def class_foo(cls,x):
8. #类方法
9. print "executing class_foo(%s,%s)"%(cls,x)
10.
11. @staticmethod #声明静态方法
12. def static_foo(x):
13. #静态方法
14. print "executing static_foo(%s)"%x
调用方法:
Python代码
1.a = A()
2.a.foo(1) //print : executing foo
(<__main__.A object at 0xb77d67ec>,1)
3.
4.a.class_foo(1) //executing class_foo(<class '__main__.A'>,1)
5.A.class_foo(1) //executing class_foo(<class '__main__.A'>,1)
6.
7.a.static_foo(1) //executing static_foo(1)
8.A.static_foo(1) //executing static_foo(1)
区别:
类方法和静态方法都可以被类和类实例调用,类实例方法仅可以被类实例调用
类方法的隐含调用参数是类,而类实例方法的隐含调用参数是类的实例,静态方法没有隐含调用参
数
按照惯例,类方法的第一个形参被命名为 cls.任何时候定义类方法都不是必须的(类方法能实现的功