A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liucaifu 黑马帝   /  2011-11-4 11:50  /  2414 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在C#中引入static的目的是什么,在开发过程中我很少看到用static,那么什么情况下用static?

8 个回复

倒序浏览
静态:修饰变量的时候表示变量是不可改变的,程序运行结束才收回内存空间;修饰类的时候表示可以不用实例化而直接使用的类。
回复 使用道具 举报
一般staic修饰类的时候 放一些共有的方法,充当工具的作用。还有一些共有的属性等,如在config文件中取得的链接字符串,可以用static修饰,以便其他连接能使用
回复 使用道具 举报
用的不多吗,我怎么感觉用的挺多的

static修饰符可以把变量、方法之类的设置为静态

所谓静态就是不用NEW一个实例出来,就可以直接使用了
  1. //实例类的使用
  2. public class Person
  3. {
  4.     public void SayHello()
  5.     {
  6.         // some code
  7.      }
  8. }
  9. Person person1=new Person();
  10. person1.SayHello();
  11. //静态类的使用
  12. public static class Person

  13.     public static void SayHello()
  14.     {
  15.         // some code
  16.     }

  17. Person.SayHello();
复制代码
最觉的静态方法就是 ,Main(),哈哈,每天见无数次,这个必须静态了,要不然怎么用啊
回复 使用道具 举报
连接数据库的时候 写一些公有的方法 挺好用的
回复 使用道具 举报
C#中有静态类,可以直接调用其中的方法,实现共享机制
回复 使用道具 举报
黄朝辉 黑马帝 2011-11-4 16:26:03
7#
本帖最后由 黄朝辉 于 2011-11-4 16:30 编辑

静态类:里面都是静态属性和方法等都是静态
普通类:静态构造函数优先于普通构造函数、但只用到一次,也就是第一次用到对象的时候,不管你调用的是什么。
注意:静态构造函数必须是无参而且是无修饰符,可以和一般的构造函数共存
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6. using System.Data;
  7. using System.Data.SqlClient;
  8. using System.Text.RegularExpressions;
  9. using System.Collections;
  10. using System.Reflection;

  11. namespace ConsoleApplication
  12. {
  13.     class Program
  14.     {
  15.         static void Main(string[] args)
  16.         {
  17.             PuTongLei.P2();
  18.             PuTongLei p1 = new PuTongLei();
  19.         }
  20.     }
  21.     public static class JingTaiLei
  22.     {
  23.         public static void J1()
  24.         {
  25.             Console.WriteLine("我是静态类里面的静态方法");
  26.         }
  27.         public static int J2
  28.         {
  29.             get;set;
  30.         }
  31.         static JingTaiLei()
  32.         {
  33.             Console.WriteLine("我是静态类的构造函数");
  34.         }
  35.     }

  36.     public class PuTongLei
  37.     {
  38.         public PuTongLei()
  39.         {
  40.             Console.WriteLine("我是普通构造函数");
  41.         }
  42.         static PuTongLei()
  43.         {
  44.             Console.WriteLine("我是静态构造函数");
  45.         }
  46.         public void P1()
  47.         {
  48.             Console.WriteLine("我是普通类里面的方法");
  49.         }
  50.         public static void P2()
  51.         {
  52.             Console.WriteLine("我是普通类里面的静态方法");
  53.         }
  54.     }
  55. }
复制代码
回复 使用道具 举报
夏雪锐 黑马帝 2011-11-4 19:40:00
8#
你知道C#的程序入口点是怎样的吗?-----就是static Main方法!由此可以得出static变量,方法不用new出来就可以用!君不见Math类里有Cos,Sin等像工具一样的方法吗?直接类.方法名,直接类.属性就可以用了。
另个多说一点静态类
无论对象发生什么更改,这些数据和函数都不会随之变化。当类中没有依赖对象标识的数据或行为时,就可以使用静态类。
1仅包含静态成员。

2不能被实例化。

3密封的,也就是说不能被继承

4不能包含实例构造函数

写个小例子:

    class StaticTest
    {
        public static int i = 0;//静态的i
    }
    class StaticClassTest
    {
        public void AddI()
        {
            StaticTest.i++;
        }

        static void Main(string[] args)
        {
            new StaticClassTest().AddI();
            new StaticClassTest().AddI();
            new StaticClassTest().AddI();

            Console.WriteLine(StaticTest.i);//这时i就变成3了
        }
    }
回复 使用道具 举报
宋天琪 黑马帝 2011-11-5 09:32:32
9#
第一当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。
static的第二个作用是保持变量内容的持久。
static的第三个作用是默认初始化为0。

评分

参与人数 1技术分 +1 收起 理由
杨恩锋 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马