var的一些理解

var 是 variable(变量,可变物)的简写。在多种编程语言中,var 被用作定义变量的关键字,在一些操作系统中也能见到它的身影。类似object,但是效率比object高一点。

var是一个局部变量,也是一种强类型的定义变量,可以代替任何类型。在用var定义一个变量之后,就不允许在下文中修改此值,就像string类型的不可变特性一样。

关于var的使用,在定义非基本类型的时候使用var是一个很好的方法。

从 Visual C# 3.0 开始,在方法范围中声明的变量可以具有隐式类型 var。 隐式类型的本地变量是强类型变量(就好像您已经声明该类型一样),但由编译器确定类型。 下面的两个 i 声明在功能上是等效的:

var i = 10; // implicitly typed
int i = 10; //explicitly typed实例:

下面的示例演示了两个查询表达式。 在第一个表达式中,允许但不需要使用 var,因为可以将查询结果的类型显式声明为IEnumerable<string>。 但是,在第二个表达式中必须使用 var,因为结果是一个匿名类型集合,而该类型的名称只有编译器本身可以访问。 请注意,在第二个示例中,foreach 迭代变量 item 也必须转换为隐式类型。


C#

// Example #1: var is optional because
// the select clause specifies a string
string[] words = { "apple", "strawberry", "grape", "peach", "banana" };
var wordQuery = from word in words
                where word[0] == ‘g‘
                select word;

// Because each element in the sequence is a string,
// not an anonymous type, var is optional here also.
foreach (string s in wordQuery)
{
    Console.WriteLine(s);
}

// Example #2: var is required because
// the select clause specifies an anonymous type
var custQuery = from cust in customers
                where cust.City == "Phoenix"
                select new { cust.Name, cust.Phone };

// var must be used because each item
// in the sequence is an anonymous type
foreach (var item in custQuery)
{
    Console.WriteLine("Name={0}, Phone={1}", item.Name, item.Phone);
}
时间: 2024-10-07 20:58:13

var的一些理解的相关文章

var、let、const与JavaScript变量/常量的定义

早期的JavaScript中,声明变量只能使用var关键字定义变量,并没有定义常量的功能.通过var关键字定义的变量,其作用域只能函数级或是全局作用域,并没有块级作用域.ES6(ECMAScript 2015)对这一问题做了改善,增加了用于定义块级变量的let关键字和用于定义常量的const关键字. var定义变量 1.1 语法及说明 1.2 使用及特点 let定义块级变量 2.1 语法及说明 2.2 与var的异同 const定义常量 1. var定义变量 1.1 语法及说明 var关键字用于

C++学习28 重载&gt;&gt;和&lt;&lt;(输入输出运算符)

在C++中,系统已经对左移运算符“<<”和右移运算符“>>”分别进行了重载,使其能够用于输入输出,但是输入输出的处理对象只能是系统内建的数据类型.系统重载这两个运算符是以系统类成员函数的形式进行的,因此cout<< var语句可以理解为: cout.operator<<( var ) 如果我们自己定义了一种新的数据类型,需要用输入输出运算符去处理,那么就要重载.本节以前面的 complex 类为例说明输入输出运算符的重载. 重载输入运算符>> 下

六天玩转javascript:第一天(1)

说明 本系列属于进阶系列,语常用语法等不在本系列介绍范围之内. 在我刚开始做一个程序员并开发项目的时候,我总是喜欢使用开发语言的各种特性,每次m$发布新版C#的时候我总是会把开发者预览版下好,亲自体验,并期望从中获得快感,每次使用新的语言进行程序设计的时候,我总是喜欢掌控他有趣的地方,尽管很多与软件工程有悖.这似乎让我出过很多风头,别人的问题似乎没有什么能难倒我的,后来在我开始从工程领域思考问题的时候,我发现很多特点给我带来的"编程快感"引发的麻烦超过了快感本身的价值,很多地方难以被同

clojure 常见问题的解释

以下内容都出现在clojure官网的文档中,此文不过是将常见的疑问总结一下而已. 1.namespace,lib以及代码文件的约定.看下面的代码: (ns com.my-company.clojure.examples.my-utils   (:import java.util.Date)   (:use [clojure.contrib.def :only (defvar-)])   (:require [clojure.contrib.shell-out :as shell])) lib表现

第十五讲 循环体for基础

语法结构: for target in sequences: code... code... ... else: code... code... 注: 1,sequences是序列,包含列表(list).元组(tuple).字符串(string).文件(file),但是比如整形数字 80 ,这样的是不可以的 2,条件结尾有冒号 3,循环体无花括号,由同意缩进控制 4,else语句可以省略,当循环体退出的时候,执行else中的语句 5,在for语句中没有体现循环的次数,序列中有多少对象,则for循

正则表达式——火星文

之前在学习到正则表达式的时候,真的看了两秒直接就跳过了,真的看到都怕,来自地球的我表示真的看不懂这个传说中的火星文,但是,要想学习到更多的知识,我深知逃避是解决不了问题的,于是我硬着头皮尝试的去理解它,今天简单记录下来,以供以后来鄙视 正则表达是其实就是规则表达式,就是我们要找的条件翻译成计算机能读懂的语言 创建正则对象有两种方式: js风格--new RegExp("a","i"); perl风格--/a/i; 语法与释义: 基础语法 "^([]{})(

SHELL简单脚本编写

vim /root/7.sh #!/bin/bash X=$[RANDOM%10+1] read -p "[1-10]你猜:" cai if [ $cai -eq $X ];then echo 恭喜你猜对了 exit elif [ $num -gt $X ];then echo 猜大了 else echo 太小了 fi vim /root/6.sh #!/bin/bash read -p "请输入一个软件包:" b b=$(rpm -qa | grep "

前端思考

思考:为什么网页中的定义的任何对象.变量和函数,都是以window作为其Global对象 1.任何对象可以是以window作为其全局变量,是因为我们在创建对象的时候,我们可以给属性赋上window对象 类的定义:对事物的描述 对象的定义:对具有具体属性(变量)和函数(方法)的承载体 定义对象: 例如: 对象名= new 类名() 2.变量如何以window作为其全局 变量对象:相当于给变量赋上window对象 var win = window 理解:添加监听window.addEventList

深入理解Javascript的var变量和闭包

今天无意间看到阮一峰校友写的一个关于ES6新特性let.let的出现,就是为了弥补var的不足.由此,写下这篇博客重新回顾一下Javascript老生常谈的闭包和它的一个作用域的诟病. 闭包的概念我就不说了,很多书上都又说明和解释,就是在一个函数内部可以访问函数外的上下文.今天重点来说以下var变量.因为平时开发的时候,如果不对这个关键字有一个很深刻的认识,很容易产生很多坑和错觉. 本文要阐明的观点是:由var定义的变量,它作用域在一个函数体内,而不是我们其他语言理解的大括号{ }内. 下面又几