问题标签 [implicit-typing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
11256 浏览

c# - 为什么我不能将数组初始值设定项与隐式类型变量一起使用?

为什么我不能将数组初始值设定项与隐式类型变量一起使用?

这种限制有技术原因吗?为什么它不能像它那样推断类型:

编译器清楚地知道我要做什么,它只是不允许这样做:

CS0820:无法将数组初始值设定项分配给隐式类型的本地


更新:我使用四种合法的数组声明方法编译了一个程序,它生成了相同的 IL: http: //pastebin.com/28JDAFbL

这只会增加我的困惑。并且“它是这样的,因为规范是这样说的”并没有什么帮助。为什么规格是这样的?这里的理由是什么?

0 投票
7 回答
15245 浏览

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

在下面的简化代码中,

在条件块之外无法访问变量 MyObject。如何在 if..else 之外进行迭代?

0 投票
2 回答
775 浏览

c# - Can anonymous types be used in text templates?

I am writing a text template and have the following line of code:

I would like to convert this to an array of anonymous types:

The text template, however, though it appears to be a single contiguous function, does not allow the use of implicitly typed local variables.

Is there a simple way to bypass this limitation and use anonymous types within a text template?

0 投票
2 回答
256 浏览

c# - VS2010 显示隐式变量的类型为 'var' 而不是实际类型

我不确定这是一个错误还是其他什么。

我在 VS2010 中创建了一个新的 Web 应用程序项目。在项目中,我新建了一个类(Class1),内容如下:

当我将鼠标悬停s在 Console.WriteLine(s) 行上时,会出现一个显示 (local variable) string s. 太好了,正如我所料。

正确显示 s 为字符串类型

现在,我将一个App_Code文件夹添加到项目中。在其中,我再次创建了一个新类(Class2),其内容完全相同(类名除外)。现在,当我悬停时s,它会显示(local variable) var s

错误地将 s 显示为 var 类型

为什么它显示var而不是string?这是一个错误吗?你能重现这种行为吗?

情况更糟。如果我将 Class2.cs 从 App_Code 文件夹移动到项目的根目录,VS2010 仍然不显示类型。即使重新启动 VS2010 并重新打开项目,VS2010 也会在 Class1 中显示正确的类型,但在 Class2 中不会。我也试过删除.suo.csproj.user文件,但仍然没有区别。显然 VS2010 在某处缓存了这些信息。

0 投票
5 回答
2328 浏览

c# - 为什么我应该在可能的情况下使用隐式类型 (var)?

可能重复:
C# 3.0 中 var 关键字的优势

昨天我偶然发现了 MS 的建议,我应该尽可能使用 var:

http://msdn.microsoft.com/en-us/library/ff926074.aspx

我一直认为使用正确的类型将有助于记录代码,也有助于在编译时发现错误。

这个推荐背后的原因是什么?

最佳托马斯

0 投票
4 回答
2310 浏览

c# - 使用 C# var 隐式键入 System.Data.Datarow

假设我正在使用一个标准System.Data.DataTable(它有一个System.Data.DataRow对象集合),上面的变量 'row' 解析为一个object类型,而不是一个System.Data.DataRow.

按我的预期工作。这有什么特别的原因吗?

谢谢。

0 投票
1 回答
415 浏览

scala - 隐式使用 Ordered

我正在尝试为我的程序中使用的某些类型创建一个包装器。我还希望所有这些类型都通过实现特征 Ordered[T] 来具有比较方法。我在制作一个比较方法时遇到问题,该方法确定被比较的类型隐式实现了 Ordred[T]。

当前尝试:

这是我想要的结构,但我不断收到错误:

是否有一些我缺少的语法?

0 投票
3 回答
1146 浏览

c# - try...catch 中的隐式类型变量

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

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

0 投票
2 回答
1354 浏览

c# - 隐式输入参数

与这个问题类似,我决定看看是否可以将out参数从方法中提取到隐式类型变量中,而无需定义类型。我理想的解决方案如下所示:

在这种情况下,CallMyMethod有 2 个普通输入变量、3 个out参数和一个返回值。我希望编译器根据传入的委托的语义自动确定o1o2o3和的类型。所以我为输出参数的每个组合创建了一些辅助委托和方法。以下是 3 个参数的示例:returnValueLiftOutParamout

理论上,编译器应该能够根据委托的语义来确定类型T1、、、T2和。但是,除非我在委托中指定每个参数的类型,否则上述代码不会编译。T3TReturn(out p1, out p2, out p3) => { return CallMyMethod(i1, i2, out p1, out p2, out p3); }out

有没有办法做我想要完成的事情?编写一个通用的辅助方法,可以将out参数的值拉入隐式类型的局部变量,而无需在任何地方显式定义类型?

0 投票
2 回答
366 浏览

c# - 将 lambda 转换为自定义委托

在程序集中,MyLibrary.Common我定义了一个通用委托类型:

然后我通过链接到相应的 DLL 在另一个 VS2010 项目中引用这个程序集。

当我想使用以下方法创建这种类型的实例时,我收到以下错误:

我上instruction = ...线的错误是

无法将源类型“lambda 表达式”转换为目标类型“MyLibrary.Common.Instruction”


当我尝试将应用程序编写SomeOperation(argument)为 aprivate static bool SomeOperationWrapped(string argument)并将该SomeOperationWrapped标识符分配给我的instruction变量时,我得到的错误是

期望一个带有 '??? 的方法 SomeOperationWrapped()' 签名


奇怪的是,在另一个 VS2010 项目中,将 lambda 表达式分配给我的Instruction<TArgument, TResult变量时没有遇到任何问题。