方法在哪些条件下是必须要声明为static

allen1981813 2003-10-18 06:20:05
以下代码为何要将function设置为static
如果不,那回有这样提示:

e:\c_sharp_master\hellocsharp\hellocsharp.cs\class1.cs(19,4): error CS0120: 非静态的字段、方法或属性“HelloCSharp.cs.HelloClass.function(int)”要求对象引用

本来以为引用对象调方法时候要用static,后来我用int ,她也这样提示.

不知道static声明条件........................

using System;

namespace HelloCSharp.cs
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class HelloClass
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
int x = 0;
System.Console.WriteLine( "Before entering function,it is {0}.", x );

function( x );

System.Console.WriteLine( "After entering function,it is {0}.", x );
}

public void function( int x )
{
x++;
}
}
}
...全文
109 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
eyoexply 2003-10-18
  • 打赏
  • 举报
回复
因为Main方法是static的,static方法中调用的方法外的方法或者变量都必须是static的。
allen1981813 2003-10-18
  • 打赏
  • 举报
回复
是不是,Main()应该从类里独立出来看,就当C++里的main()来想...是不是!!!!!!!!!!!!!!!!!!!!!1
splark 2003-10-18
  • 打赏
  • 举报
回复
在Main函数中调用的时候找不到function方法的对象啊,只有声明为static才能使程序明白是在HelloClass类中调用。
allen1981813 2003-10-18
  • 打赏
  • 举报
回复
我想问的是,为何这里一定要static?
splark 2003-10-18
  • 打赏
  • 举报
回复
主函数里调用function函数的时候需要指明对象,而用了static以后就可以直接使用类名.方法名来调用,由于此例中function与Main方法在同一类中,因此调用中function可以省略类名。

比如一般情况下计数器类的变量可以声明为static,用了static以后只能使用类名.方法名来调用方法。比如math类里面就有很多static方法。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧