黑马程序员技术交流社区

标题: 在方法中,分为静态方法和非静态方法这时如何区分的? [打印本页]

作者: 庞海瑞    时间: 2013-8-6 19:38
标题: 在方法中,分为静态方法和非静态方法这时如何区分的?
在方法中,分为静态方法和非静态方法这时如何区分的?
作者: 小天    时间: 2013-8-6 19:46
静态方法由static修饰,可以直接通过 类名.方法名() 调用,如
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 静态成员
{
    class Program
    {
        static void Main(string[] args)
        {
            Person.age = 5;//静态成员的赋值
            Console.WriteLine(Person.age);
            Do();//由static修饰的方法不用new一个对象就可以使用
            ConsoleHelp.ReadInt();//静态方法的调用
            Console.ReadKey();
        }
        public static void Do()
        {
            Console.WriteLine("使用全局变量"+Person.age);
        }
    }
    class Person
    {
        public static int age;//声明了一个全局变量(由static修饰)
        public string name = "蜡笔小新";
        //在非static方法中可以调用static成员
        public void SayHello()
        {
            Console.WriteLine("我的名字叫{0},我今年{1}岁",name,age);
        }
        //在static方法中不能直接调用非static成员
        public static void Speak()
        {
          //  Console.WriteLine("我叫{0},今年{1}",name,age);
        }

    }
    static class ConsoleHelp //声明了一个静态类,静态类不能被实例化
    {
        public static int ReadInt()
        {
            string str = Console.ReadLine();
            return Convert.ToInt32(str);
        }
    }
}
作者: 范国伟    时间: 2013-8-6 19:51
静态方法就是写方法的时候用static 关键字标记的方法,如,访问修饰付 static 返回值 方法名这种格式,使用的时候也不用实例化类,而是直接用类名.方法名就可以了。
作者: 马晓凤    时间: 2013-8-6 20:06
定义的时候的区别
1静态方法定义时需要加关键static,不加就是实例方法


用的时候的区别
1.static方法是类中的一个成员方法,属于整个类,即不用创建任何对象也可以直接调用!也就是 类名.静态方法名  就可以直接用
2实例方法,必须 new出类的实例,通过  实例名.方法名   才能使用

至于为什么要有静态成员??个人理解就是节约内存,可以重用了
解释:
静态方法在内存中有一块单独的存储区,等整个应用程序结束时才被释放

C#静态成员:
①静态成员属于类所有,非静态成员属于类的实例所有。
②每创建一个类的实例,都会在内存中为非静态成员新分配一块存储;


作者: 落叶秋风    时间: 2013-8-7 21:28
静态方法始终在内存中,调用时用类名.方法(),动态方法是实例化时调入内存,调用时应该先实例化,对象.方法()
作者: brucel50    时间: 2013-8-8 09:00
静态方法一般是类通用的时候的特征才会使用静态方法,比如人类的    说话() ,非静态方法一般是有对象限制才会用,比如不是所有的人都会     武术()




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2