![]() |
1
10
我想我看到了问题。DataRowCollection是非泛型的,因此编译器只知道它包含Object类型的对象。如果它是一个通用的数据结构,那么就可以工作了。 |
![]() |
2
3
这是:
如预期的那样工作,它给了我在Visual Studio 2008中同时显示Bleh和Blah的IntelliSense。 你有什么东西吗 喜欢 或者,或者 确切地 那?可能还有其他事情比您显示的代码更让IntelliSense感到困惑。
回答实际问题。拼写出类型和使用
没有其他区别,编译器将在左侧选择与在右侧相同的类型。 编辑 谢谢 @Telos 为了指出一个区别,当使用var时,当然必须在声明时给变量一个值,因为右侧表达式的类型用于指示左侧变量的类型。拼写出类型时,当然可以选择不给它赋值。 |
![]() |
3
2
我猜是这样的
规则
如果你认为
|
![]() |
4
1
我尝试在一个控制台应用程序中用以下代码重现这个过程。
这按预期工作,IntelliSense是正确的,并且
Reflector
表明
我也在使用Visual Studio 2008 RTM。 |
![]() |
5
1
DataTable.Rows返回实现InternalDataCollectionBase的DataRowCollection,后者反过来实现ICollection和IEnumerable。代码
将DataRowCollection中的每个项强制转换为DataRow。您可以通过将其更改为
它编译但抛出一个无效的castexception。
如果实现了DataRowCollection
|
![]() |
6
0
我相信您在示例代码中没有提供足够的信息。我做了一个小程序来模仿你描述的行为:
但是输出清楚地表明var正在解析y类型,而不是x。 您确定您的函数返回一个y作为y引用,而不是x引用吗? |
![]() |
7
0
它能正常工作。当编译器无法确定正确的数据类型时,它将对象类型设置为“对象”。 |
![]() |
8
0
使用foreach关键字时,将通过IEnumerable接口访问DateRowCollection。用于访问数据行的特定方法称为current,并返回一个对象。所以var关键字查看当前方法的返回值来推断类型。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 4 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 4 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 4 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 5 月前 |