C#中 var 与 DataTable DataRow循环

自从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坑爹还是自己太唇笔


下面来个测试例子

用DataRow 显示申明



怎么回事呢var 不能自动识别DataRow?
这说明 var 并不是能的了然而原因呢。。。。。


他娘的这是什么鬼  DataRowCollection?DataTable.Rows竟然不是 DataRow[]
我们就来研究下这个DataRowCollection 


DataRowCollection 类

.NET Framework 2.0

其他版本

表示DataTable的行的集合。

命名空间:System.Data

程序集:System.Data(在 system.data.dll 中)

语法

C#

C++

VB

publicsealedclassDataRowCollection : InternalDataCollectionBase

J#

public final class DataRowCollection extends InternalDataCollectionBase

JScript

publicfinalclassDataRowCollectionextendsInternalDataCollectionBase

备注

DataRowCollectionDataTable的主要组件。当DataColumnCollection定义表的架构时,DataRowCollection中包含表的实际数据,在该表中,DataRowCollection中的每个DataRow表示单行。

您可通过调用AddRemove方法,从DataRowCollection中插入和删除DataRow对象。您还可通过调用Find方法搜索在主键列中包含特定值的DataRow对象,也可通过调用Contains方法在基于字符的数据中搜索单个单词或词组。


搞了半天这个是我们的错咯? 那我在研究下Collection这个类


array通常表示数组,仅为对象的一组,在内存空间上是连续的,访问比较快

collection通常表示对象集合,本身有一定义的方法等,同时具有array的特性

list通常是对与list类以外的对象更方便操作array的东西,可变长 原来最开始我把数组和集合混淆了?


这个不是今天讨论的重点重点是为什么 foreach  在DataRowCollection 中的 使用var不行 而DataRow 可以呢?
他是唇笔么? 不能识别我foreach的实际上 是DataRow  这到底是var唇笔还是collection唇笔?

今天暂时就到这里 我等会儿研究  但是朋友你要搞清楚 循环DataTable.Rows的时候请记住别用var

推荐阅读更多精彩内容