相关疑难解决方法(0)

在C#中使用var关键字

在与同事讨论了在C#3中使用'var'关键字后,我想知道人们对通过var的类型推断的适当用途有什么看法?

例如,我在可疑情况下懒得使用var,例如: -

foreach(var item in someList) { // ... } // Type of 'item' not clear.
var something = someObject.SomeProperty; // Type of 'something' not clear.
var something = someMethod(); // Type of 'something' not clear.
Run Code Online (Sandbox Code Playgroud)

var的更合理用途如下: -

var l = new List<string>(); // Obvious what l will be.
var s = new SomeClass(); // Obvious what s will be.
Run Code Online (Sandbox Code Playgroud)

有趣的是LINQ似乎有点灰色,例如: -

var results = from r in dataContext.SomeTable
              select r; // Not *entirely clear* what results will be …
Run Code Online (Sandbox Code Playgroud)

c# var type-inference

406
推荐指数
32
解决办法
13万
查看次数

使用隐式类型的局部变量

我刚刚安装了ReSharper的试用版,我注意到的第一件事就是它总是建议用隐式类型的替换显式类型的局部变量,例如:

public string SomeMethod(int aParam)
{
    int aNumber = SomeOtherMethod(aParam);
    // should be changed to:
    var aNumber = SomeOtherMethod(aParam);
}
Run Code Online (Sandbox Code Playgroud)

我认为显式类型变量更具可读性(更明确).

您如何看待ReSharper的建议?使用隐式类型变量有什么优势吗?你什么时候使用implicit/explict vars?

c# coding-style implicit-typing

64
推荐指数
5
解决办法
4万
查看次数

C#var关键字用法

可能的重复:
使用什么:var或对象名称类型?
在C#中使用var关键字var关键字
的重点是什么?
我是否应该总是喜欢在C#3.0中隐含类型的局部变量?

我刚刚安装了ReSharper的试用版,以便为我的公司进行评估.我注意到的一件事是建议我更改以下内容(编写示例):

string s = "";
Run Code Online (Sandbox Code Playgroud)

var s = "";
Run Code Online (Sandbox Code Playgroud)

在声明变量时,最好使用var关键字而不是使用Object Type吗?它给了什么优点.对于上下文,我是一名刚刚过渡到.Net工作的Java开发人员.

c# styles

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

C#3.0中var关键字的优点

重复:

什么用var或对象名称类型

我无法理解C#3.0中var关键字的必要性使用它有什么好处.我看到了这个问题但却不明白使用它的真正目的

c# variables

3
推荐指数
1
解决办法
8935
查看次数

c#.Net中"var"关键字的意义是什么?

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

我在使用隐式打字而不是显式打字时有点困惑.

正如MSDN在C#编码标准中引用的那样:

当从变量的右侧明显变量的类型时,或者当精确类型不重要时,对局部变量使用隐式类型.

我的问题是,当我们已经知道底层变量类型时,为什么我们需要在这里使用隐式类型?

有什么好处?

请帮助澄清我的疑问.

c# var

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

如何在C#中为linq选择新命令的结果添加项目?

在C#中使用linq我有一个查询,如:

var result = from p in cart select new { p.Product.Title, p.Product.Price };
Run Code Online (Sandbox Code Playgroud)

现在我想添加一些其他项目结果.例如添加:

int weight;
string message;
Run Code Online (Sandbox Code Playgroud)

所以我可以有类似的东西:

foreach( var r in result)
{
   dosomething(r.weight;)
   dosomething(r.message);
   dosomething(r.title);
   dosomething(r.price);
  }
Run Code Online (Sandbox Code Playgroud)

可能吗?我该怎么办?

c# linq

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