繁体   English   中英

C#类:通过实例访问方法

[英]C# Classes: Accesing methods through instances

我可以从类的实例访问方法吗? 例:

class myClass
{
       private static int n = 0;

       public static myClass()
       { n = 5;}

       public static void Afis()
       { 
              Console.WriteLine(n);
       }

}

在虚空中主要:

static void Main()
{
          myClass m = new myClass();
          m.Afis();
}

这给了我: cannon be accessed with an instance referece 是因为我声明函数是静态的吗? 如果是这样的话我什么时候应该使用static而不是什么时候因为在c ++中如果我用static声明一些东西它只是初始化一次。 这是c#的情况吗?

您需要使用类名而不是变量名来访问static方法。

myClass.Afis();

我已经附加了一个指向静态类和静态类成员编程指南的链接,因为您已经询问何时应该使用它们而不使用它们。

编程指南中的一点点:

静态类可以用作方法集的方便容器,这些方法只对输入参数进行操作,而不必获取或设置任何内部实例字段。 例如,在.NET Framework类库中,静态System.Math类包含执行数学运算的方法,而不需要存储或检索Math类的特定实例所特有的数据。

是 - 正如您所怀疑的那样 - 您无法通过对象的实例访问静态方法,只能通过类型本身访问。

换一种说法:

myClass.Afis();

当然 - 反过来也是如此; 您也无法通过类型访问实例方法。

你可以找到更多关于何时,后无来者,使用static的,如其他问题这一个 ,但我要说的是static限制某些可取之类的可测试性和多态性(仅举几),因此不应成为你的“默认职位”。

静态方法是通过类本身调用的,而不是类的实例。

static void Main()
{
    myClass m = new myClass();
    myClass.Afis();
}

这是对的 - 它是一个静态函数,因此被称为:

myClass.Afis();

是因为我声明函数是静态的吗?

究竟。

如果是这样,我何时应该使用静态

猜猜是什么 - 从错误中:当你不需要访问实例变量时。

因为在c ++中如果我用static声明一些东西它只是初始化一次。 这是c#的情况吗?

如果你的意思是静态构造函数 - 是的。

基本上你所拥有的不是“类”,而是一个根本无法实例化的静态类。

静态方法是连接到类ad而不是实例的方法。 如果您希望每个实例都可以使用相同的方法,则使用此方法。 例如,如果我想计算类的实例,则使用静态属性。 要访问静态方法和属性,必须使用类的名称而不是实例的名称。

您将方法标记为静态。 因此,您必须通过类型访问它。

当方法引用类型并且不使用实例信息时,将使用静态方法。 String.IsNullOrEmpty(string s)是一种静态方法。 它属于字符串类,但不需要实例环境。 而每个对象从对象继承的ToString()方法需要一个实例上下文来定义表示为字符串的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM