阅读和混乱来理解静态类和静态方法,以及它们与非静态方法的区别和它们的用法,我仍然不了解它们的用法,除了主要的方法之外,这个方法不能成为类的实例(对象)。
为什么我试着用:
using static System.ApplicationId;
public class Program
{
static void Main()
{
Copy(SOMETHING)// Copy method doesn't exist
}
}然后尝试使用来自ApplicationId (如Copy(); )的方法。
IDE?找不到方法了?
做同样的事:
using static System.Console;
public class Program
{
static void Main()
{
Writeline("Hello"); // OK
}
}然后尝试从Console中找到一种类似于WriteLine();的方法
它可以找到它,我也可以用它。
为什么会发生这种事?
我的理解是,他们都是静态成员吗?这就是为什么我不能做这两个类的实例的原因吗?但是,我可以在第二个示例中使用这些方法,但不能在第一个示例中使用,因为它似乎不允许我使用(错误: copy()在当前的上下文中不存在.)。
发布于 2016-04-08 04:58:23
答案很简单,ApplicationId中的方法没有标记为static。
让我们看看静态方法和实例方法之间的区别:
静态方法:
Console.WriteLine();
******* *********
^ ^
class method
name name实例方法:
Random aRandomObject = new Random();
aRandomObject.Next();
************* ****
^ ^
name of an method
instance of name
Random正如您在这里看到的,您需要该类的一个实例才能使用非静态方法。但是对于静态方法,您不需要实例。
using static指令允许您在调用静态方法时省略类名。
“但是为什么它不允许我们调用这样的实例方法呢?”是你问的。正如我前面所说的,您需要一个实例来调用实例方法。如果只编写方法名来调用该方法,那么编译器如何知道要调用它的哪个实例?
发布于 2016-04-08 04:55:07
ApplocationId不是一个静态类,因此需要创建它的一个实例。
https://stackoverflow.com/questions/36491747
复制相似问题