标签: var

当类型已知时,是否有任何技术原因使用或不使用C#中的var?

似乎越来越多我读过的C#代码使用var类型标识符:

foreach (var itemChange in ItemChanges)
{
   //... 
}
Run Code Online (Sandbox Code Playgroud)

而不是明确说明类型:

foreach (ItemChange itemChange in ItemChanges)
{
   //... 
}
Run Code Online (Sandbox Code Playgroud)

即使知道类型.

我仍在使用后一个显式版本,因为我认为稍后阅读它会更快地了解变量的类型,而不是使用var.

但是否有任何技术理由使用其中一种?

c# var conventions

11
推荐指数
2
解决办法
763
查看次数

使用var比C#中的显式类型有什么优势?

可能的重复:
var关键字的重点是什么?
在C#中使用var关键字

我理解IEnumerable<...>数据类型如何使代码的可读性降低或嵌套泛型看起来有点令人生畏.但除了代码可读性之外,使用var而不是显式类型是否有优势?看起来通过使用显式类型,您最好传达变量的功能,因为您知道它是什么.

如果它是工作场所编码标准,我会为了团队合作而使用它.然而,在我自己的项目中,我更愿意避免使用var.

c# var

11
推荐指数
3
解决办法
2万
查看次数

我什么时候使用var?

可能重复:
JavaScript变量范围

我理解它在函数中如果我使用var然后我有一个局部变量.如果我不delcare var我现在有一个全局变量.

但是功能的oustide,var有什么影响呢?

javascript var

11
推荐指数
2
解决办法
978
查看次数

var关键字并不总是有效?

C#,VS 2010.有人,请解释为什么我不能var在下面的代码中使用!

var props = TypeDescriptor.GetProperties(adapter);

// error CS1061: 'object' does not contain a definition for 'DisplayName'
foreach (var prop in props)
{
    string name = prop.DisplayName;
}

// No error
foreach (PropertyDescriptor prop in props)
{
    string name = prop.DisplayName;
}
Run Code Online (Sandbox Code Playgroud)

TypeDescriptor.GetProperties返回PropertyDescriptorCollection带有实例的PropertyDescriptor.为什么编译器看不到这个?

c# var propertydescriptor

11
推荐指数
3
解决办法
1489
查看次数

C#中的匿名类型

// x is compiled as an int 
var x = 10;

// y is compiled as a string 
var y = "Hello";

// z is compiled as int[] 
var z = new[] { 0, 1, 2 };
Run Code Online (Sandbox Code Playgroud)

// ano is compiled as an anonymous type 
var ano = new { x1 = 10, y1 = "Hello" };
Run Code Online (Sandbox Code Playgroud)

ano创建的对象属性是只读的.我想弄清楚为什么这些属性是只读的.建议表示赞赏?

编辑:

var ano1 = new { x1 = 10, y1 = "Hello" };

var ano2 = new { x1 = …
Run Code Online (Sandbox Code Playgroud)

c# var anonymous-types

11
推荐指数
1
解决办法
9856
查看次数

TypeError:无法解析'undefined'或'null'的属性`db`

我在mongodb连接的变量赋值中得到一个TypeError.这有解决方法吗?

//server.js
var mongoose = require('mongoose');
var config = require('./config');

var { db: {user,pass,host,port,name } } = config;

var connectionString = `mongodb://${user}:${pass}@${host}:${port}/${name}`;

mongoose.connect(connectionString, { useMongoClient: true });
Run Code Online (Sandbox Code Playgroud)

错误

C:\mean\webguidv1\server.js:65
  db: {
  ^

TypeError: Cannot destructure property `db` of 'undefined' or 'null'.
Run Code Online (Sandbox Code Playgroud)

这是我的config.js文件

// config.js
var env = process.env.NODE_ENV; // 'dev' or 'test'

var dev = { app: { port: 3000 }, db: {user: '', pass: '', host: '', port: , name: '' }};

var test = { app: { port: …
Run Code Online (Sandbox Code Playgroud)

var destructuring typeerror mongodb node.js

11
推荐指数
1
解决办法
2万
查看次数

在C#中使用var和default进行声明

最近我看到一个人大量使用var和default关键字来声明变量(以及每个声明),如下所示:

var employee = default(Employee);   //Employee is a class
var errorInfo = default(ErrorInfo); //ErrorInfo is struct; Blank is default value
var salary = default(Double);
var isManager = default(Boolean?); 
Run Code Online (Sandbox Code Playgroud)

而不是使用:

Employee employee = null;           //Employee is a class
ErrorInfo errorInfo = Blank;        //ErrorInfo is struct; Blank is default value
Double salary = 0.0;
Boolean? isManager = null;
Run Code Online (Sandbox Code Playgroud)

或者,而不是使用偶数:

Employee employee;                  //Employee is a class
ErrorInfo errorInfo;                //ErrorInfo is struct; Blank is default value
Double salary;
Boolean? isManager;
Run Code Online (Sandbox Code Playgroud)

现在使用var和default来声明每个变量 …

c# default var

10
推荐指数
1
解决办法
8549
查看次数

在JavaScript中使用var重新定义局部变量

关于JavaScript和局部变量,我有一个相当普遍的问题.我的问题是以下内容之间有什么区别,如果有的话:

function bla
{
    var a = 2;   // local variable
    a = 3;       // the local variable a gets a new value

    // Would do the following line anything different 
    // (than simply asigning this value?)
    var a = 4;
}
Run Code Online (Sandbox Code Playgroud)

我想我不会得到两个名为a的局部变量.在其他语言中,这甚至是一个错误.那有什么用呢?

javascript var

10
推荐指数
1
解决办法
6557
查看次数

与全局'var'不同,javascript'let'全局变量不是'window'的属性

我过去常常检查是否var定义了全局:

if (window['myvar']==null) ...
Run Code Online (Sandbox Code Playgroud)

要么

if (window.myvar==null) ...
Run Code Online (Sandbox Code Playgroud)

它适用于 var myvar

现在我正在尝试切换到let,这不再起作用了.

var myvar='a';
console.log(window.myvar); // gives me a
let mylet='b';
console.log(window.mylet); // gives me undefined
Run Code Online (Sandbox Code Playgroud)

问题:一个全球性的let,没有任何的地方,如果有什么东西被像我可以定义我可以看看varwindow对象?

更普遍的:
var myvar='a'相当于window.myvar='a'
我听到人们说在全球范围内,let并且var/表现相同,但这不是我所看到的.

javascript var let

10
推荐指数
1
解决办法
7570
查看次数

为什么不能使用var而不是在ngFor中使用

根据我的知识,我们在javascript中使用varlet用于变量声明,唯一的区别是var得到了当前函数的let作用域,同时将作用域限定为当前块.所以如果我使用它var而不是let任何地方它应该工作.但是在下面的代码中......

<li *ngFor="let fruit of fruits">
   {{ fruit}}
</li>
Run Code Online (Sandbox Code Playgroud)

...如果我使用var它会给出错误.

<li *ngFor="var fruit of fruits">
   {{ fruit}}
</li>
Run Code Online (Sandbox Code Playgroud)

错误:未捕获(在承诺中):错误:模板分析错误:分析程序错误:ng:///AppModule/AppComponent.html@4:4中的[var fruit of fruits]中第1列的意外标记变量("

有人能告诉我为什么会这样吗?

javascript var let angular

10
推荐指数
1
解决办法
1278
查看次数