【发布时间】:2016-06-30 17:00:49
【问题描述】:
我是 C# 编程的初学者,具有 Python 背景。
我对关键字 public 和 static 感到困惑。有人可以为我澄清一下区别吗?
(顺便说一句,我已经知道私有变量/方法永远不能在函数之外访问,而公共可以)
这只是我随机尝试理解的静态方法和非静态方法之间的区别。
using System;
public class MainClass
{
public static void Main ()
{
int[] anArray = getAnArray();
foreach (int x in anArray)
{
Console.WriteLine (x);
}
MainClass m = new MainClass ();
foreach (int x in anArray)
{
m.Print(x);
}
}
public static int[] getAnArray()
{
int[] myArray = { 1, 2, 3, 4 };
return myArray;
}
public void Print(int x)
{
Console.WriteLine(x);
}
}
我知道要使用非静态方法Print,我首先需要创建一个MainClass的实例,然后通过m.Print()访问该方法
但是我不明白什么时候该使用哪个。据我所知,如果 Print 是静态的,会容易得多,因为我不需要创建自己的函数的新实例。
例如,这会更简单
private static void Print(int x)
{
Console.WriteLine (x);
}
然后用 Print(x) 调用 Print 函数,而不是先创建 Main 的实例。
那么基本上什么时候用什么?何时不仅针对方法,而且针对变量甚至类使用静态或非静态? (例如我什么时候应该使用公共静态类 MainClass)
【问题讨论】:
-
你的问题有点笼统。一般来说,
staticvsnon-static真的可以独立于每个开发者,没有基本规则。通常,当创建一个类的实例以使用该方法没有意义时,人们倾向于使用static方法。这通常用于许多“实用程序”类中。有些人通常根本不喜欢使用static,因为它的可测试性较差。
标签: c# oop static private public