为什么我能够在使用动态时访问静态上下文中的非静态方法
本文关键字:上下文 静态 访问 静态方法 动态 为什么 | 更新日期: 2023-09-27 18:04:47
以下代码:
class Program
{
static void Main(string[] args)
{
dynamic d = 0;
int x = Test.TestDynamic(d);
int y = Test.TestInt(0);
}
}
public class Test
{
public int TestDynamic(dynamic data)
{
return 0;
}
public int TestInt(int data)
{
return 0;
}
}
在Visual Studio 2013 (Update 5)中运行时,在Test行上引发编译时错误。TestInt
"非静态字段、方法或财产。"
,但不会在Test上引发相同的错误。TestDynamic线。它确实会失败,并出现运行时错误。
相同的代码会在visualstudio2015的两行上引发编译时错误。
为什么在Visual Studio 2013中没有提出相同的编译时错误?
如果不创建对象的实例,就不能访问属性/方法。
class Program
{
static void Main(string[] args)
{
dynamic d = 0;
Test test = new Test();
int x = test.TestDynamic(d);
int y = test.TestInt(0);
}
}
public class Test
{
public int TestDynamic(dynamic data)
{
return 0;
}
public int TestInt(int data)
{
return 0;
}
}