相关疑难解决方法(0)

扩展方法和动态对象

我将把我的问题总结为以下代码片段.

List<int> list = new List<int>() { 5, 56, 2, 4, 63, 2 };
Console.WriteLine(list.First());
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常.

现在我尝试了以下内容

dynamic dList = list;
 Console.WriteLine(dList.First());
Run Code Online (Sandbox Code Playgroud)

但是我得到了RuntimeBinderException.为什么会这样?

c# dynamic c#-4.0

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

不区分大小写的List.Contains():方法'Contains'的重载没有2个参数

C#不区分大小写的List.Contains():方法'Contains'的重载没有2个参数

如果我们这样做,就会得到编译器错误

list.Contains(stringToSearchDynamic.ToString(), StringComparer.OrdinalIgnoreCase)
Run Code Online (Sandbox Code Playgroud)

但是如果我们把实际字符串编译好

list.Contains(stringToSearch, StringComparer.OrdinalIgnoreCase)
Run Code Online (Sandbox Code Playgroud)

这是编译器错误吗?

码:

List<string> list = new List<string>();
list.Add("one");
list.Add("two");

string stringToSearch = "OnE";
dynamic stringToSearchDynamic = "OnE";

//compiles OK
bool isContained = list.Contains(stringToSearch, StringComparer.OrdinalIgnoreCase);


//Does NOT compile
isContained = list.Contains(stringToSearchDynamic.ToString(), StringComparer.OrdinalIgnoreCase);
Run Code Online (Sandbox Code Playgroud)

c#

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

标签 统计

c# ×2

c#-4.0 ×1

dynamic ×1