似乎越来越多我读过的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.
但是否有任何技术理由使用其中一种?
可能的重复:
var关键字的重点是什么?
在C#中使用var关键字
我理解IEnumerable<...>数据类型如何使代码的可读性降低或嵌套泛型看起来有点令人生畏.但除了代码可读性之外,使用var而不是显式类型是否有优势?看起来通过使用显式类型,您最好传达变量的功能,因为您知道它是什么.
如果它是工作场所编码标准,我会为了团队合作而使用它.然而,在我自己的项目中,我更愿意避免使用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.为什么编译器看不到这个?
// 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) 我在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和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来声明每个变量 …
关于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的局部变量.在其他语言中,这甚至是一个错误.那有什么用呢?
我过去常常检查是否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,没有任何的地方,如果有什么东西被像我可以定义我可以看看var从window对象?
更普遍的:
是var myvar='a'相当于window.myvar='a'?
我听到人们说在全球范围内,let并且var/表现相同,但这不是我所看到的.
根据我的知识,我们在javascript中使用var和let用于变量声明,唯一的区别是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列的意外标记变量("
有人能告诉我为什么会这样吗?
var ×10
c# ×5
javascript ×4
let ×2
angular ×1
conventions ×1
default ×1
mongodb ×1
node.js ×1
typeerror ×1