C#3.0新特性――隐含类型局部变量和匿名类型

C#3.0引进新关键字var,它是一个类型,可以用来声明局部变量。

Code
var I = 1; //int类型
var j = ”reallypride”; //string类型
var k = new[] { 1, 2, 3, 4 }; //int[]类型
var x; //错误,必须初始化
var y = null; //错误,不可以为空

使用var变量要点:

1.使用var声明局部变量,编译器会根据后面的初始化表达式自动推断变量的类型,这个类型是强类型。

2.var变量在声明时必须初始化,不可以为空,且编译时可以推断其类型。初始化后变量只能保存这种类型。

3.数组也可以作为var类型。

匿名类型

匿名类型允许定义行内类型,不须显示声明类型。常和var一起使用。如

Code
var p1 = new { name = ”reallypride”, age = 23 };
var p2 = new { name = “jingxuan”, age = 23 };

编译器会自动定义一个包含name和age属性的类。p1和p2结构相同,是同一个类的实例。我们再定义一个变量:

Code
var p3 = new { age = 23, name = “reallypride” };

编译器会新建一个新的类,也就是p3和p1,p2不是同一个类的实例,因为p3声明属性的位置不相同。

{ }是匿名初始化器。

如果要定义数组,可以这样定义:

Code
var intArray = new[] { 1, 2, 3, 4 };
var strArray = new[] { “a”, “b”, “c” };
var someTypeArray = new[] { new { name = “reallypride”, age = 23 }, new { name = “jingxuan”, age = 23 } };

匿名类型要点:

1.可以使用new关键字调用匿名初始化器创建一个匿名类型。

2.匿名类型直接继承自System.Object。

3.匿名类型的属性是编译器根据初始化器自动推断。

或许有人会觉得,有了var这个关键字后,其它的类型关键字都变成多余的了。

其实var是简化了我们的编程,让我们不用再因为定义一个变量而需要写两次它的类型。

如定义一个User类的实例,以前的方法我们要这样定义:

Code
User user=new User();

而现在我们可以这样定义:

Code
var user=new User();

我们可以把更多的时间用在软件功能的实现上而不是敲代码上。

时间: 2024-10-27 04:13:06

C#3.0新特性――隐含类型局部变量和匿名类型的相关文章

C#3.0新特性(一)-隐式类型的局部变量和数组

写在前边: 用了aspdotnet一段时间了,对csharp还知之甚少,今天就从csharp的基本语法开始学习.内容多为前辈同仁们blog中已写过,加上自己得理解,只求能加深自己的印象,若能在cnblog中凑个数,那真是受宠若惊! 一.C# 3.0语言主要增强点 • 隐含类型局部变量 • 扩展方法 • 对象与集合初始化器 • 匿名类型 • Lambda表达式 • 查询表达式( LINQ ) • 表达式树 二.隐式类型的局部变量和数组 先来看看例句: var i = 5; var h = 23.5

C# 3.0新特性初步研究 Part4:使用集合类型初始化器

集合 集合类型初始化器(Collection Initializers) 想看一段"奇怪"的代码: 1class Program 2    { 3        static void Main(string[] args) 4        { 5            var a = new Point { x = 10, y = 13 }; 6            var b = new Point { x = 33, y = 66 }; 7 8            var

MySQL5.0新特性教程 存储过程:第三讲

The New SQL Statements 新SQL语句 Variables 变量 在复合语句中声明变量的指令是DECLARE. (1) Example with two DECLARE statements 两个DECLARE语句的例子 WHILE ... END WHILE CREATE PROCEDURE p8 () BEGIN DECLARE a INT; DECLARE b INT; SET a = 5; SET b = 5; INSERT INTO t VALUES (a); SE

PHP 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性

前言    今天突然想到PHP官方网站上一转,一眼就看到PHP5推出的通告.虽然以前看到过PHP5的预告,但还是仔细看了PHP 5/Zend Engine 2.0新特性一文,一股JAVA气息扑面而来...   特将该文试译出来,首发于CSDN网站,以飨读者. PHP 5/Zend Engine 2.0新特性徐唤春 译 sfwebsite@hotmail.comhttp://www.php.net/zend-engine-2.php 全新的对象模型PHP中的对象处理部分已完全重写,具有更佳的性能和

MySQL 5.0新特性教程 存储过程:第一讲

mysql|存储过程|教程 作者:mysql AB;翻译:陈朋奕 Introduction 简介 MySQL 5.0 新特性教程是为需要了解5.0版本新特性的MySQL老用户而写的.简单的来说是介绍了"存储过程.触发器.视图.信息架构视图",在此感谢译者陈朋奕的努力. 希望这本书能像内行专家那样与您进行对话,用简单的问题.例子让你学到需要的知识.为了达到这样的目的,我会从每一个细节开始慢慢的为大家建立概念,最后会给大家展示较大的实用例,在学习之前也许大家会认为这个用例很难,但是只要跟着

MySQL 5.0新特性教程 存储过程:第一讲

Introduction 简介 MySQL 5.0 新特性教程是为需要了解5.0版本新特性的MySQL老用户而写的.简单的来说是介绍了"存储过程.触发器.视图.信息架构视图",在此感谢译者陈朋奕的努力. 希望这本书能像内行专家那样与您进行对话,用简单的问题.例子让你学到需要的知识.为了达到这样的目的,我会从每一个细节开始慢慢的为大家建立概念,最后会给大家展示较大的实用例,在学习之前也许大家会认为这个用例很难,但是只要跟着课程去学,相信很快就能掌握. Conventions and St

Visual C# 3.0新特性概览

在发布Visual Studio 2005和C#2.0之后,微软公司又马不停蹄的展示了人们所期望的C#的下一代版本:C# 3.0.尽管C# 3.0并没有标准化,微软还是在PDC(专业程序员会议)发布了一个预览版本,因此心急的程序员可以看到一些所期望的特性,这也是本文所讨论的主要内容: ·隐式类型本地变量 ·匿名变量 ·扩展方法 ·对象和Collection初始化符 ·Lambda表达式 ·查询表达式 ·表达式树 隐式类型本地变量 C# 3.0引进了一个新的关键字叫做"Var".Var允

c# 6.0新特性(一)

写在前面 接近年底了,基本上没什么活了,就学点新东西,就想着了解下c# 6.0的新特性.在code project上看到了一篇不错的文章,就准备翻译一下,顺便照着学习学习.废话不多说,直奔主题. 原文地址:http://www.codeproject.com/Articles/1070659/All-About-Csharp-New-Features 简介 众所周知,c# 6.0 是在visual studio 2015中引入的.在其他的几个版本中同样引入一些特性,比如在c# 3.0中引入了li

背水一战 Windows 10 (43) - C# 7.0 新特性

原文:背水一战 Windows 10 (43) - C# 7.0 新特性 [源码下载] 背水一战 Windows 10 (43) - C# 7.0 新特性 作者:webabcd 介绍背水一战 Windows 10 之 C# 7.0 新特性 介绍 C# 7.0 的新特性 示例1.C# 7.0 示例 1: out 变量, 数字语法改进, 值类型的异步返回CSharp7/Demo1.xaml.cs /* * C# 7 示例 1 * out 变量, 数字语法改进, 值类型的异步返回 */ using S