Tag: var

在条件范围内声明隐式类型变量并在外部使用它

在下面的简化代码中, if(city == “New York City”) { var MyObject = from x in MyEFTable where x.CostOfLiving == “VERY HIGH” select x.*; } else { var MyObject = from x in MyEFTable where x.CostOfLiving == “MODERATE” select x.*; } foreach (var item in MyObject) { Console.WriteLine(“”); } 在条件块之外无法访问变量MyObject。 我怎样才能在if..else之外迭代?

奇数行为随var,dynamic和linq组合而变化

我(懒惰地)在下面的代码的原始版本中使用了var ,并在代码的完全不同的部分中获得了一个奇怪的运行时exception。 将“var”更改为“int”修复了运行时exception,但我不明白为什么。 我把代码煮到了这个例子; public class Program { private static List Test(string i) { return new List {i}; } private static dynamic GetD() { return 1; } public static void Main() { int value1 = GetD(); // <– int var result1 = Test("Value " + value1); // No problem, prints "Value 1", First() on List […]

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 }; 但 // ano is compiled as an anonymous type var ano = new { x1 = 10, y1 […]

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

似乎越来越多的C#代码我读取使用var类型标识符: foreach (var itemChange in ItemChanges) { //… } 而不是明确说明类型: foreach (ItemChange itemChange in ItemChanges) { //… } 即使这种类型已知。 我仍在使用后一个显式版本,因为我认为稍后阅读它会更快地了解变量的类型,而不是使用var。 但是有任何技术理由使用其中一个吗?

‘var’的目的是什么?

可能重复: var关键字有什么意义? 我不是问它是如何运作的。 我不是在问它是否会影响性能。 我已经知道那些答案了。 我想知道MS C#团队首先将它添加到语言中的原因。 您不会在语言中添加无聊的东西。 一定有一个值得注意的问题。 这是什么问题? 我见过的“它解决的问题”最接近的例子是使用匿名类型时,如下所示: var linqResult = from element in SomeCollection s elect new { element.A, element.B } 具有讽刺意味的是,样式和编码标准指南(如Microsoft提供)建议编码人员避免在结果类型不明显时使用’var’。 换句话说,’var’的(可能)预期目的与编码标准指南相冲突。 如果我正在编写编码标准,并试图防止过度使用’var’,我有点倾向于说“仅使用’var’来响应匿名类型。” 但这带来了问题的全方位:将“var”添加到语言中的目的是什么?

将C#中’var’的值初始化为null

我想将一个变量赋值给初始值null,并在下一个if – else块中分配它的值,但是编译器给出了一个错误, 必须初始化隐式类型的局部变量。 我怎么能实现这个目标?

为什么在foreach for XmlNode中使用的var不推导出实际类型,只推导出对象?

让cls为XmlNode类型 以下语句允许我访问子节点: foreach (XmlNode child in cls.ChildNodes) 现在当我尝试使用var: foreach (var child in cls.ChildNodes) 那么子类型不是XmlNode ,只是对象 。 我不能使用child.NodeType ,编译器说: object’不包含’NodeType的定义 为什么是这样?

将’var’初始化为null

以下变量初始化之间的运行时性能是否有任何差异? var x = null as object; var x = (object)null; object x = null;

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

我使用以下代码将一些Json转换为动态对象。 当我在动态类型的属性上使用DateTime.Parse时,我希望var猜测它的类型是DateTime …而是保持动态。 这不可能是对的,可以吗? 完整的例子如下。 var settings = new JavaScriptSerializer().Deserialize(json); var startDate = DateTime.Parse(settings.startDate); var endDate = DateTime.Parse(settings.endDate); var userId = int.Parse(settings.userId); startDate,endDate和userId都是动态的,这意味着我不能在以后的Lambda表达式中使用它们。 显然,我可以用以下代码修复代码: DateTime startDate = DateTime.Parse(settings.startDate); DateTime endDate = DateTime.Parse(settings.endDate); int userId = int.Parse(settings.userId); ..但似乎编译器正在做出“糟糕的猜测”。 任何人都可以向我解释这个吗? 谢谢

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

可能重复: var关键字有什么意义? 在C#中使用var关键字 我理解数据类型的IEnumerable如何使代码的可读性稍差或者嵌套generics看起来有点令人生畏。 但除了代码可读性之外,使用var而不是显式类型是否有优势? 看起来通过使用显式类型,您最好传达变量的function,因为您知道它是什么。 如果它是工作场所编码标准,我会为了团队合作而使用它。 然而,在我自己的项目中,我更愿意避免使用var。