自从c#出var这个匿名生命用法之后感觉写代码快速了不少。
下面我们看看var的介绍及用法
VAR是3.5新出的一个定义变量的类型
其实也就是弱化类型的定义
VAR可代替任何类型
编译器会根据上下文来判断你到底是想用什么类型的
至于什么情况下用到VAR我想就是你无法确定自己将用的是什么类型
就可以使用VAR 类似OBJECT
但是效率比OBJECT高点
使用var定义变量时有以下四个特点:
1. 必须在定义时初始化。也就是必须是var s = “abcd”形式,而不能是如下形式:
var s;
s = “abcd”;
2. 一但初始化完成,就不能再给变量赋与初始化值类型不同的值了。
3. var要求是局部变量。
4. 使用var定义变量和object不同,它在效率上和使用强类型方式定义变量完全一样。
以上感觉var 很吊 不过确实有点屌
下面是本人发现的一个问题 不知道是var坑爹还是DataRow坑爹还是自己太唇笔
下面来个测试例子
怎么回事呢var 不能自动识别DataRow?
这说明 var 并不是能的了然而原因呢。。。。。
他娘的这是什么鬼 DataRowCollection?DataTable.Rows竟然不是 DataRow[]
我们就来研究下这个DataRowCollection
DataRowCollection 类
.NET Framework 2.0
表示DataTable的行的集合。
命名空间:System.Data
程序集:System.Data(在 system.data.dll 中)
publicsealedclassDataRowCollection : InternalDataCollectionBase
public final class DataRowCollection extends InternalDataCollectionBase
publicfinalclassDataRowCollectionextendsInternalDataCollectionBase
DataRowCollection是DataTable的主要组件。当DataColumnCollection定义表的架构时,DataRowCollection中包含表的实际数据,在该表中,DataRowCollection中的每个DataRow表示单行。
您可通过调用Add和Remove方法,从DataRowCollection中插入和删除DataRow对象。您还可通过调用Find方法搜索在主键列中包含特定值的DataRow对象,也可通过调用Contains方法在基于字符的数据中搜索单个单词或词组。
搞了半天这个是我们的错咯? 那我在研究下Collection这个类
array通常表示数组,仅为对象的一组,在内存空间上是连续的,访问比较快
collection通常表示对象集合,本身有一定义的方法等,同时具有array的特性
list通常是对与list类以外的对象更方便操作array的东西,可变长 原来最开始我把数组和集合混淆了?
这个不是今天讨论的重点重点是为什么 foreach 在DataRowCollection 中的 使用var不行 而DataRow 可以呢?
他是唇笔么? 不能识别我foreach的实际上 是DataRow 这到底是var唇笔还是collection唇笔?
今天暂时就到这里 我等会儿研究 但是朋友你要搞清楚 循环DataTable.Rows的时候请记住别用var