C#中static三种用法

1.修饰方法:表示该方法为该类所有,通过类名.方法调用。静态方法不能调用非静态方法,非静态方法可以调用静态方法
2.修饰变量:(静态数据可以直接赋值,如果需要从外面文件获取可以使用静态构造函数。静态变量为所有该类的对象共享)
a.一个类只能有一个静态构造函数
b.只会初始化一次,优先级别高于其它构造函数
c.静态构造函数方法名不能加任何的修饰符,不能有参
3.修饰类:又称为工具类,无需实例化对象,直接通过类名调用(类名.方法)。静态类只能包含静态成员

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StaticMethod
{
    public class People
    {
        //静态方法应用场景:
        //通过Random函数随机产生一个数字,返回该下标对应的字符串
        static Random r = new Random();
        static int GetIndex(short upper)
        {
            return r.Next(upper);
        }
        //静态方法不能调用非静态方法,非静态方法可以调用静态方法
         public static string Complain()
        {
            string[] str = {"I love you","I hate you" ,"I feel good","I feel bad","I like eat furit","I hate raining"};
            return str[GetIndex(6)];
        }
    }
    public class SaveCount
    {
         //静态成员
         //应用场景 银行账户有存款和利率,利率每个账户都会用到,是公共数据
        public double money;
        public static double rate;//可以直接赋值,也可以使用静态构造函数
        public SaveCount(double money)
         {
            this.money = money;
            Console.WriteLine("money constructor");
         }
        static SaveCount()
         {
            rate = 0.04;
            Console.WriteLine("static constructor");
         }
        public double GetRate()
         {
            return rate;
         }
        public void SetNewRate(double newrate)
         {
             rate = newrate;
         }
       }
   static class UtillDate
    { 
       //静态类
       //应用场景 静态日期类经常被别的类调用,返回当前时间和日期
     public  static string GetTodyDate()
       {
           return DateTime.Today.ToLongDateString();
       }
     public   static string GetTodyTime()
       {
           return DateTime.Now.ToLongTimeString();
       }
    }
    class Program
    {
        static void Main(string[] args)
        {
            #region===1.静态方法===
            for (int i = 0; i < 6; i++)
                Console.WriteLine(People.Complain());
            #endregion

            #region===2.静态数据可以直接赋值,也可通过构造函数初始化===
            SaveCount s1 = new SaveCount(100.5);
            Console.WriteLine("s1余额:{0} 利率:{1}",s1.money,s1.GetRate());
            SaveCount s2 = new SaveCount(200.3);
            Console.WriteLine("s2余额:{0} 利率:{1}", s2.money, s2.GetRate());
            s2.SetNewRate(0.06);
            #endregion

            #region===3.静态类 调用方式 类名.方法===
            Console.WriteLine("今天日期:{0} 当前时间:{1}", UtillDate.GetTodyDate(), UtillDate.GetTodyTime());
            #endregion
            Console.ReadKey();
        }
    }
}

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值