相关疑难解决方法(0)

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

var与具体类型的使用

我已经在stackoverflow中检查了5个或更多关于var使用的帖子,但我仍然在寻找关于var用法的答案.我习惯使用Concrete类型而不是var,但我的Resharper抱怨改为var.var是类型的选择 - 即使已知具体类型?

c# var

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

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

如何创建自定义MessageBox?

我正在尝试使用我的控件制作自定义消息框.

public static partial class Msg : Form
{
    public static void show(string content, string description)
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

实际上我需要在这个窗体中放置一些控件(gridview),我必须在这个窗口中应用我自己的主题,所以我不想使用MessageBox.我想从我的其他形式这样称呼它

Msg.show(parameters);
Run Code Online (Sandbox Code Playgroud)

我不想为这个表单创建一个对象.

我知道我不能继承Form课,因为它不是静态的.但我想知道如何MessageBox实现,因为它是静态的.它被称为MessageBox.show("Some message!");

现在我收到错误,因为不允许继承:

静态类'MyFormName'不能从类型'System.Windows.Forms.Form'派生.静态类必须从对象派生

我的表格截图

MessageBox那么如何实施?

c# forms messagebox winforms

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

当类型已知时,是否有任何技术原因使用或不使用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之外还使用"var"吗?

只是好奇.我大约99.999%肯定没有...但是什么?

编辑:这些是好的答案(节省打字时间或使代码更简洁"可读性").我想我应该澄清"使用"的意思 - 一些没有"var"就无法完成的构造/设计.

c# linq

10
推荐指数
3
解决办法
565
查看次数

隐式类型如何使代码更清晰?

在我正在阅读的一本书中,它指出隐式类型使得以下代码比不使用var关键字时更清晰:

var words = new[] { "a", "b", null, "d" };

foreach (var item in words)
{
    Console.WriteLine(item);
}
Run Code Online (Sandbox Code Playgroud)

在我看来,情况正好相反:如果您使用了string,那么代码的读者会立即知道它是foreach循环中的字符串,而不必查找定义变量的代码.

隐式类型如何使上面的代码更清晰?

附录

这本书是C#3.0 - Die Neuerungen.schnell + kompakt是德语,实际文本是:

Das Schluesselwort var kann auch beim Durchlaufen von foreach-Schleifen verwendet werden,um somit den Code uebersichtlicher und einfacher zu gestalten.Besonders bei komplexen Typen kann man auf diese Art und Weise Programmierfehler verhindern.

这是我的翻译:

在遍历foreach循环时也可以使用var关键字,从而使代码更容易和更简单地创建.特别是在使用复杂类型时,这可以防止编程错误.

好吧,现在更仔细地阅读它,他实际上声明var在foreach循环中使代码更容易创建但不一定更容易阅读.

c# implicit-typing

10
推荐指数
4
解决办法
1387
查看次数

在C#中使用var和default进行声明

最近我看到一个人大量使用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来声明每个变量 …

c# default var

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

C#中'var'的邪恶?

可能重复:
C#'var'关键字与明确定义的变量

编辑:

对于仍在观看此事的人,我完全改变了对var的看法.我认为这主要是由于我对这个主题的回应.我现在是一个狂热的'var'用户,我认为它的支持者评论在几乎所有情况下都是绝对正确的.我认为我最喜欢var的是它真的可以减少重复(符合DRY),并使你的代码更加清晰.它支持重构(当你需要更改某些东西的返回类型时,你需要更少的代码清理来处理,并且不,不是每个人都有一个花哨的重构工具!),并且有趣的是,人们似乎并没有真正的问题不知道前面变量的具体类型(它很容易"发现"按需类型的功能,这通常是必要的,即使你知道类型的名称.)

所以这里有一个大的鼓掌"变种"的关键字!


这是一个相对简单的问题......更多的是民意调查.我是C#的巨大粉丝,自从.NET首次发布之前已经使用了8年多.我喜欢对语言所做的所有改进,包括lambda表达式,扩展方法,LINQ和匿名类型.但是,C#3.0有一个功能我觉得被SORELY误用了......'var'关键字.

自从C#3.0发布以来,在博客,论坛和是,甚至Stackoverflow上,我已经看到var替换了几乎所有已编写的变量!对我来说,这是对该功能的严重滥用,并导致非常随意的代码,由于缺乏变量实际类型的清晰度,因此可能存在许多混淆的错误.

'var'只有一个真正有效的用途(至少在我看来).你问,这有效用途是什么?唯一有效的用途是当您无法知道类型时,以及可能发生这种情况的唯一实例:

访问匿名类型时

匿名类型没有编译时标识,因此var是唯一的选项.这是添加var的唯一原因......支持匿名类型.

那么......你的意见是什么?鉴于var在博客,论坛上的大量使用,由ReSharper等工具建议/强制执行,许多新兴开发人员将其视为完全有效的东西.

  • 你认为var应该如此丰富地使用吗?
  • 你认为var应该用于匿名类型以外的任何东西吗?
  • 是否可以在发布到博客的代码中使用以保持简洁......简洁?(不确定这个问题的答案......也许是免责声明)
  • 作为一个社区,我们是否应该鼓励更好地使用强类型变量来提高代码清晰度,或者让C#变得更模糊,更少描述?

我想知道社区的意见.我看到var使用了很多,但我很少知道为什么,并且有一个很好的理由(即简洁/简洁).

anonymous-types c#-3.0

9
推荐指数
4
解决办法
9633
查看次数