C#常见问题
时间:2010-12-14 来源:涂圣飞
两者之间可以说是一种等价的关系,只是两者的返回值不一样。is是测试左边的部分是不是可以转换成右边的类型,如果可以则返回true,否则返回的是false,对于as也是做这种测试,如果可以转换,返回值是这个类型,如果不能转换,则返回值是null。
2。for 和 foreach 的区别。
一般地:for 可以代替 foreach,但效率上讲后者高些,特别是集合对象
当遍历对象本身的元素需要改变时,不能用foreach,可以用for,while等
如:
*/
ArrayList arr = new ArrayList();
arr.Add(1);arr.Add(2);arr.Add(3);
foreach(int i in arr)
{
if(i == 2) arr.Remove(i);//错误
}
for(int i=0; i<arr.Count; i++)
{
if(arr[i] == 2) arr.RemoveAt(i);//正确
}
==============================================
如果能用foreach 就别用for,因为foreach用起来蛮好蛮简单的
假如有个集合里面的{1,2,3,4,5,6,7,8,9}
用foreach就是先声明一个相应的变量把集合里面的每个元素一个一个的赋给这个变量来做一些处理,你不用知道他执行了多少次.
for 就不用就了.
foreach用来简单,但没for功能强大,有时候还比较麻烦,比如你想循环一定次数或循环到一定条件就行了,还不如for呢
如:(还要一个变量k做标记)
public class MSILMethods
{
static void Main()
{
int[] arr=new int []{1,2,3,4,5,6,5};
int k = 0;
foreach (int i in arr)
{
k++;
if (k == 3) break;
Console.WriteLine(i);
}
}
}
一句话,看情况而定!
============================================
foreach常用在数组遍历上
用foreach的对象需要实现枚举接口,for就不用了;
foreach一般用来读的,For一般用来操作
foreach一次处理一个对象,for可以同时处理多个
for通常用于已知次数的循环;比如:循环输出10次Hello World
foreach通常用于遍历集合;比如:遍历List <object>
foreach性能并不差:)
====================================================================
如果可以用for遍历的,一般来说for语句效率高,但是前提是for语句内部的索引器的实现
向来效率是在于“某某[i]”的实现方式,如果是间接寻址,效率自然没的说
foreach只能算一种简写而已,实际内容是
while (枚举器.Next())
对象 o = 枚举器.Current;
这算是语句的简写,其实根本不算循环语句,是一种方法的调用而以,与间接寻址,效率根本没法比的
与很多索引器相比,一般还是会快一些的,因为很多集合中使用的结构是类似链表,要查个“某某[i]”需要遍历很多次
3.pan和div的区别。
SPAN 和 DIV 的区别在于,DIV(division)是一个块级元素,可以包含段落、标题、表格,乃至诸如章节、摘要和备注等。而SPAN 是行内元素,SPAN 的前后是不会换行的,它没有结构的意义,纯粹是应用样式,当其他行内元素都不合适时,可以使用SPAN。 下面以一个实例来说明这两个属性的区别。 代码: <span>SPAN标记有一个重要而实用的特性,即它什么事也不会做,它的唯一目的就是围绕你的HTML代码中的其它元素,这样你就可以为它们指定样式了。在此例中,<span>标识符允许你将一个段落分成不同的部分。 还有一个标识符具有类似的功能,<div>DIV也被用来在HTML文件中建立逻辑部分。但与<div>SPAN不同,<div>工作于文本块一级,它在它所包含的HTML元素的前面及后面都引入了行分隔。 效果: SPAN标记有一个重要而实用的特性,即它什么事也不会做,它的唯一目的就是围绕你的HTML代码中的其它元素,这样你就可以为它们指定样式了。在此例中,标识符允许你将一个段落分成不同的部分。 还有一个标识符具有类似的功能,DIV也被用来在HTML文件中建立逻辑部分。但与SPAN不同,工作于文本块一级,它在它所包含的HTML元素的前面及后面都引入了行分隔。