【LINQ技术】扩展特性和LINQ操作符

LINQ特有的编程结构

LINQ就像是嵌入到C#中的强类型查询语言,尽管和SQL查询很像,但语法却并不相同,甚至还有截然相反的一面。

LINQ是在.NET发展到3.5版的时候被引进的,C#和VB语言都为此做了许多工作,扩展了大量新的编程结构。

一、隐式类型本地变量

var——一个如此小巧的关键字却有着强大的力量。

var varInt=1;
var varBool=True;
var varString="String, String, String";

Console.WriteLine("varInt is a: {0}",varInt.GetType().Name);
Console.WriteLine("varBool is a: {0}",varBool.GetType().Name);
Console.WriteLine("varString is a: {0}",varString.GetType().Name);

上面的代码会很神奇的自动显示出它们各自的类型。

var的限制:

1.var不能用于字段数据
2.var不能用于返回值或参数类型
3.必须在声明时分配值,且值不为NULL

但var可以这样:

var alarmClock=new AlarmClock();
alarmClock=null;
var varInt=1;
var varInt2=varInt;

bool varBool=True;
var varBool2=varBool;
static int Alarm()
{
    var alarm="09:20";
    return alarm;
}

隐式类型数据是强类型数据。类型推断延续了C#语言的强类型特性,并且只会在编译时影响变量的声明。之后,该数据点被视为它声明的类型。为该变量分配不同的类型将导致编译时错误。

// 编译器知道“s”是一个string类型
var s="This is a string.";
s="Funny...";

// 因此可以调用string的所有成员
string bigS=s.ToUpper();

// 但不能将非string类型的数据分配给s
s=True; 

var为LINQ而生

LINQ技术使用的是查询表达式,它可以根据表达式本身的格式产生动态创建的结果集。但有时在某些情况下根本无法显示定义查询的访问类型,这时隐式类型就会发挥作用了。

二、对象和集合初始化语法

在扩展这个新的特性之前,我们要创建一个对象并给其属性初始化会是这样:

var rect = new Rect();
rect.Height=100;
rect.Width=200;

但是支持C# 3.0加入了这个新特性,代码就成了这样:

var rect = new Rect(){Height=100,Width=200};

如果有构造函数的话还可以在括号内传入参数呢,就像这样:

var rect = new Rect("bigRect"){Height=100,Width=200};

如果对于集合,那就优势就更加明显了。

List<Alarm> alarmList = new List&
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值