问题标签 [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.
c# - 为什么我不能将数组初始值设定项与隐式类型变量一起使用?
为什么我不能将数组初始值设定项与隐式类型变量一起使用?
这种限制有技术原因吗?为什么它不能像它那样推断类型:
编译器清楚地知道我要做什么,它只是不允许这样做:
CS0820:无法将数组初始值设定项分配给隐式类型的本地
更新:我使用四种合法的数组声明方法编译了一个程序,它生成了相同的 IL: http: //pastebin.com/28JDAFbL
这只会增加我的困惑。并且“它是这样的,因为规范是这样说的”并没有什么帮助。为什么规格是这样的?这里的理由是什么?
c# - 在条件范围内声明一个隐式类型变量并在外部使用它
在下面的简化代码中,
在条件块之外无法访问变量 MyObject。如何在 if..else 之外进行迭代?
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?
c# - VS2010 显示隐式变量的类型为 'var' 而不是实际类型
我不确定这是一个错误还是其他什么。
我在 VS2010 中创建了一个新的 Web 应用程序项目。在项目中,我新建了一个类(Class1),内容如下:
当我将鼠标悬停s
在 Console.WriteLine(s) 行上时,会出现一个显示 (local variable) string s
. 太好了,正如我所料。
现在,我将一个App_Code
文件夹添加到项目中。在其中,我再次创建了一个新类(Class2),其内容完全相同(类名除外)。现在,当我悬停时s
,它会显示(local variable) var s
。
为什么它显示var
而不是string
?这是一个错误吗?你能重现这种行为吗?
情况更糟。如果我将 Class2.cs 从 App_Code 文件夹移动到项目的根目录,VS2010 仍然不显示类型。即使重新启动 VS2010 并重新打开项目,VS2010 也会在 Class1 中显示正确的类型,但在 Class2 中不会。我也试过删除.suo
和.csproj.user
文件,但仍然没有区别。显然 VS2010 在某处缓存了这些信息。
c# - 为什么我应该在可能的情况下使用隐式类型 (var)?
可能重复:
C# 3.0 中 var 关键字的优势
昨天我偶然发现了 MS 的建议,我应该尽可能使用 var:
http://msdn.microsoft.com/en-us/library/ff926074.aspx
我一直认为使用正确的类型将有助于记录代码,也有助于在编译时发现错误。
这个推荐背后的原因是什么?
最佳托马斯
c# - 使用 C# var 隐式键入 System.Data.Datarow
假设我正在使用一个标准System.Data.DataTable
(它有一个System.Data.DataRow
对象集合),上面的变量 'row' 解析为一个object
类型,而不是一个System.Data.DataRow
.
按我的预期工作。这有什么特别的原因吗?
谢谢。
scala - 隐式使用 Ordered
我正在尝试为我的程序中使用的某些类型创建一个包装器。我还希望所有这些类型都通过实现特征 Ordered[T] 来具有比较方法。我在制作一个比较方法时遇到问题,该方法确定被比较的类型隐式实现了 Ordred[T]。
当前尝试:
这是我想要的结构,但我不断收到错误:
是否有一些我缺少的语法?
c# - try...catch 中的隐式类型变量
我喜欢对几乎所有东西都使用隐式类型,因为它简洁明了。但是,当我需要在单个语句周围包装 try...catch 块时,我必须打破隐式类型以确保变量具有定义的值。这是一个人为的假设示例:
有没有一种方法可以调用GetData()
异常处理,但不必显式定义结果变量的类型?像GetData().NullOnException()
什么?
c# - 隐式输入参数
与这个问题类似,我决定看看是否可以将out
参数从方法中提取到隐式类型变量中,而无需定义类型。我理想的解决方案如下所示:
在这种情况下,CallMyMethod
有 2 个普通输入变量、3 个out
参数和一个返回值。我希望编译器根据传入的委托的语义自动确定o1
、o2
、o3
和的类型。所以我为输出参数的每个组合创建了一些辅助委托和方法。以下是 3 个参数的示例:returnValue
LiftOutParam
out
理论上,编译器应该能够根据委托的语义来确定类型T1
、、、T2
和。但是,除非我在委托中指定每个参数的类型,否则上述代码不会编译。T3
TReturn
(out p1, out p2, out p3) => { return CallMyMethod(i1, i2, out p1, out p2, out p3); }
out
有没有办法做我想要完成的事情?编写一个通用的辅助方法,可以将out
参数的值拉入隐式类型的局部变量,而无需在任何地方显式定义类型?
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
变量时没有遇到任何问题。