标签: var

'var'的目的是什么?

可能重复:
var关键字有什么意义?

不是在问它是如何运作的.我不是在问它是否会影响性能.我已经知道那些答案了.

我想知道MS C#团队首先将它添加到语言中的原因.你不会在语言中加入无聊的东西.一定有一个值得注意的问题.这是什么问题?

我见过的"它解决的问题"最接近的例子是使用匿名类型时,如下所示:

var linqResult = from element in SomeCollection s
                 elect new { element.A, element.B } 
Run Code Online (Sandbox Code Playgroud)

具有讽刺意味的是,样式和编码标准指南(例如Microsoft提供的)建议编码人员避免在结果类型不明显时使用'var'.换句话说,'var'的(推测)预期目的与编码标准指南相冲突.

如果我正在编写编码标准,并试图防止过度使用'var',我有点倾向于说"仅使用'var'来回应匿名类型." 但这带来了问题的全方位:将"var"添加到语言中的目的是什么?

c# linq coding-style var

14
推荐指数
2
解决办法
3644
查看次数

Java 11:Lambda参数的本地变量语法 - 应用程序

我一般对Java-11感到好奇,但特别是JEP:323计划将var声明添加到Lambda操作变量.

这个功能背后的动机在这里很好地讨论.请考虑以下文章中的引用:

// #1 - Legal
ITest divide = (@ATest var x, final var y) ->  x / y;
/* #2 Modifiers on Old-Style implicit paramaters => Illegal */
ITest divide = (@ATest x, final y) ->  x / y;
Run Code Online (Sandbox Code Playgroud)

最终修饰符的使用对我来说很清楚,并且符合不变性最佳实践.

但是,我不确定注释.能够注释lambda隐式参数有什么好处?

你能提供一个在lambda操作变量上使用注释的事实上的有益例子吗?这不是一个意见问题,而是作为使用此功能时更具可读性或效率的代码的实际示例.

java lambda annotations var java-11

14
推荐指数
1
解决办法
1855
查看次数

JavaScript变量如何工作?

我知道JavaScript变量指向一个值:

var foo = true;
//... later 
foo = false;
Run Code Online (Sandbox Code Playgroud)

所以在那个例子中我改变了foo指向true- > foo指向false,但如果我这样做:

for (var i=0; i<100; i++){
    var someVar = i;
}
Run Code Online (Sandbox Code Playgroud)

我是否为每次迭代创建了一个新的var?

以下两种方法有什么不同吗?

var myvar;
for (var i=0; i<100; i++){
    myvar = i;
}
Run Code Online (Sandbox Code Playgroud)

for (var i=0; i<100; i++){
    var myvar = i;
}
Run Code Online (Sandbox Code Playgroud)

如果是这样,为什么?

javascript variables scope var

13
推荐指数
2
解决办法
1694
查看次数

在解析动态对象时,C#是否为var选择了错误的类型?

我使用以下代码将一些Json转换为动态对象.当我在动态类型的属性上使用DateTime.Parse时,我希望var猜测它的类型是DateTime ......相反,它保持动态.这不可能是对的,可以吗?

完整的例子如下.

var settings = new JavaScriptSerializer().Deserialize<dynamic>(json);

var startDate = DateTime.Parse(settings.startDate);
var endDate = DateTime.Parse(settings.endDate);
var userId = int.Parse(settings.userId);
Run Code Online (Sandbox Code Playgroud)

startDate,endDate和userId都是动态的,这意味着我不能在以后的Lambda表达式中使用它们.显然,我可以用以下代码修复代码:

DateTime startDate = DateTime.Parse(settings.startDate);
DateTime endDate = DateTime.Parse(settings.endDate);
int userId = int.Parse(settings.userId);
Run Code Online (Sandbox Code Playgroud)

..但似乎编译器正在做出"糟糕的猜测".任何人都可以向我解释这个吗?

谢谢

c# var dynamic c#-4.0

13
推荐指数
1
解决办法
1155
查看次数

带有"var"且没有"var"的javascript全局变量

可能重复:
使用var和不使用JavaScript中的var之间的区别

我知道我应该总是使用'​​var'来定义函数中的局部变量.

当我定义一个全局函数时,使用'var'之间有什么区别?

我在互联网上看到的一些代码示例使用

var globalVar = something;
globalVar = something;
Run Code Online (Sandbox Code Playgroud)

有什么不同?

javascript var global

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

无法从Objective-C View控制器 - iOS访问Swift var

我有一个带有Objective-C和基于Swift的视图控制器的应用程序.我以编程方式从我的一个基于Objective-C的视图控制器打开一个基于Swift的视图控制器.我遇到的问题是我无法从Objective-C代码访问Swift变量.

我的Swift代码:

@IBOutlet weak var profPicture: UIImageView!
@IBOutlet weak var profVerified: UIImageView!
@IBOutlet weak var profName: UILabel!
var passedUser:PFUser!
Run Code Online (Sandbox Code Playgroud)

我的Objective-C代码:

MyProfileViewController *screen = [[MyProfileViewController alloc] initWithNibName:@"Main" bundle:nil];
self.dataPass = screen;
dataPass.profName.text = @"";
screen.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:screen animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

我能够访问像IBOutlets这样的@属性,但是我无法访问和编辑var对象.

我这样做,因为当我呈现基于Swift的视图控制器时,我想从基于Objective-C的视图控制器将数据传递到基于Swift的视图控制器.

为什么我不能访问var对象?

这是我得到的错误:

在此输入图像描述

错误如下:

在'MyProfileViewController*'类型的对象上找不到属性'passUser'

谢谢你的时间,丹.

var properties objective-c ios swift

12
推荐指数
3
解决办法
5655
查看次数

当类型已知时,是否有任何技术原因使用或不使用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万
查看次数

如何从字符串创建LINQ查询?

我是LINQ的新手,需要一些编码方面的帮助.

目前,我有一个字符串和一个var变量.

string temp = "from product in myEntities.Products where product.Name.Contains(_Name) select product";
var _Products = temp;
LvProducts.DataSource = _Products;
LvProducts.DataBind();
Run Code Online (Sandbox Code Playgroud)

基本上,我想要做的是能够通过预先将其分配到字符串中来创建自定义/复杂的LINQ查询.完成编写后,我将字符串分配给var变量.但是,这显然是行不通的.因此,任何人都可以帮助我吗?

c# linq string var

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

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
查看次数