相关疑难解决方法(0)

使用'var'会影响性能吗?

之前我问了一个问题,为什么我看到这么多的例子都使用了这个var关键字并得到了答案,虽然它只是匿名类型所必需的,但它仍然被用来使编写代码"更快"/更容易和"只是因为".

在这个链接("C#3.0 - Var不是Objec")之后,我看到它var被编译成IL中的正确类型(你会在中间的文章中看到它).

我的问题是IL代码使用var关键字take 会有多少(如果有的话),如果在任何地方使用它,它是否会接近于对代码性能有可衡量的水平?

c# variables performance var

223
推荐指数
8
解决办法
10万
查看次数

将C#var重构为显式类型的工具

我们的编码标准要求我们尽量减少C#var的使用(建议限制它与Linq一起使用).然而,有时候使用泛型的地方比较方便,例如

Dictionary<DateTime, Dictionary<string, float>> allValues = ...
// ...
foreach (var dateEntry in allValue)
Run Code Online (Sandbox Code Playgroud)

更容易打字

foreach (KeyValue<DateTime, Dictionary<string, float>> dateEntry in allValue) 
Run Code Online (Sandbox Code Playgroud)

(并且比在某些情况下记住显式类型更容易).

任何重构工具都能够将前者转换为后者.我已经看过Resharper,但它似乎并没有(事实上,它的默认建议是向相反的方向发展).

c# refactoring

18
推荐指数
2
解决办法
5196
查看次数

VS2008 - 用推断类型替换var

我的团队刚收到承包商编写的代码,承包商倾向于使用类型推断var.我们的团队更喜欢使用实际类型进行显式输入(如下所示):

Type someName = new Type();
IList<TypeTwo> someOther = someClass.getStuff();
Run Code Online (Sandbox Code Playgroud)

而承包商交付

var someOther = someClass.getStuff();
Run Code Online (Sandbox Code Playgroud)

Visual Studio 2008知道推断类型是什么,正如我可以通过悬停var关键字看到的那样

我的问题是,有没有办法进行全局查找并将var替换为推断类型?

c# visual-studio-2008 visual-studio

7
推荐指数
1
解决办法
991
查看次数

try ... catch中的隐式类型变量

我喜欢使用隐式打字几乎所有东西,因为它干净简单.但是,当我需要在单个语句周围包装try ... catch块时,我必须打破隐式类型以确保变量具有已定义的值.这是一个人为的假设例子:

var s = "abc";

// I want to avoid explicit typing here
IQueryable<ABC> result = null;
try {
    result = GetData();
} catch (Exception ex) { }

if (result != null)
    return result.Single().MyProperty;
else
    return 0;
Run Code Online (Sandbox Code Playgroud)

有没有办法可以调用GetData()异常处理,但不必显式定义结果变量的类型?有点像GetData().NullOnException()?

.net c# try-catch implicit-typing

6
推荐指数
1
解决办法
1045
查看次数