您的位置:程序门 -> .net技术 -> c#



为什么这个方法必须加上static修饰符?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


为什么这个方法必须加上static修饰符?[已结贴,结贴人:yb1856]
发表于:2007-02-01 22:03:08 楼主
class   program
        {
                struct   dimentions
                {
                        public   double   length;
                        public   double   width;
                }

                static   void   main(string[]   args)
                {

                        dimentions   dimention;
                        dimention.length   =   100;
                        dimention.width=50;
                        double   square;

                        square   =   makesquare(dimention.length,   dimention.width);
                        console.writeline(square);
                        console.readline();

                }
                public     double   makesquare(double   x,   double   y)
                {
                        double   z;
                        z   =   x   *   y;
                        return   z;
                }

        }
如果不在定义makesquare前定义static,编译会报错:
非静态的字段、方法或属性“consoleapplication1.program.makesquare(double,   double)”要求对象引用
怎么回事啊?
发表于:2007-02-01 22:18:001楼 得分:20
类program并没有建立对象,所以只能调用它的静态成员函数

如果不想将函数定义成static的,解决的方法是再单独定义一个新的类,把struct   dimentions和makesquare(double   x,   double   y)定义成这个新类的成员。

在类program声明新类的对象,然后用这个对象调用makesquare就可以了。
发表于:2007-02-01 22:18:372楼 得分:0
static   void   main(string[]   args)
因为   这个前面有个static  
所以。。。
发表于:2007-02-01 23:06:533楼 得分:0
icd(骆驼)   正解

楼主应该看静态方法和实例方法的差别~
发表于:2007-02-01 23:16:154楼 得分:0
makesquare(double   ,   double   )是一个类方法也叫static方法
所以要加static字段

我个人认为     望大家指出。
发表于:2007-03-28 21:55:405楼 得分:0
刚学1个月对于方法调用的理解:
在main方法中,存在多个方法,方法之间的相互调用,要在方法前加static。
在其它类的定义的多个方法,之间的相互调用就按类成员的要求来。不用加static等。

如果方法存在于另一个类中,有static的话,可以在入口处用[类.方法名]调用,没有static的话,要用这个类的实例来调用。
还有,在另一个类中存在多个方法,不能直接在这个类中用方法调用。如
class   myclass
{
method();//出错,类,结构,结口的方法必须有返回值。
public   void   method()
{
console.writeline(“method()”);
}
}
这时在入口处出初始化这个类的成员时,不会调用这个method()方法。可以这样写;
class   program
{
      myclass   myclass   =   new   myclass();
      myclass.method();
      class   myclass
{
            public   void   method()
{
console.writeline();
method2();//这样可以直接调用.
}
            void   method2()
                    {
                      console.writeline(“method2()”);
}
}
}
不能在另一个类中调用入口中的方法。

有什么不对的,帮忙指一下......


快速检索

最新资讯
热门点击