今天早上看一段rss解析的代码,发现竟然可以这样写:
 internal class RssDownloadManager {
        static RssDownloadManager _theManager = new RssDownloadManager();
我晕啊,头一次见到这种写法,为什么要在一个类的内部定义它自己的对象呢?
现在终于搞明白了,静态方法中是不能直接调用类中的任何非静态成员(包括数据和方法),如果想调用,有两种办法:
一是干脆把要调用的转化成静态方法。
二是在静态方法中new一个对象,然后调用方法。或者在静态方法的外部定义一个静态的对象,在静态方法里面
调用该静态对象的方法。
而上面的做法显然就是这样了。只不过调用的是自己的非静态方法,所以就new一个自己了。
举个例子:
    public class Program
    {
        public int count = 0;
        public static Program dkddd = new Program();
        static void Main(string[] args)
        {
            dkddd.GetDatetime();
            //Program aa = new Program();
            //string str = aa.GetDatetime();
            //string str =  Program.GetYear();
            //count = 5;
            Console.WriteLine(str);
        }
        public  string GetDatetime()
        {
            //this.GetYear();
            GetYear();
            return System.DateTime.Now.ToString();
        }
        public static string GetYear()
        {
            return System.DateTime.Now.Year.ToString();
        }
    }
得到的启示:如果一个类中的静态方法想调用某个类的非静态方法,则一个非常常见的方式就是像这样:
 internal class RssDownloadManager {
        static RssDownloadManager _theManager = new RssDownloadManager();
posted on 2007-04-11 11:35  冷火  阅读(628)  评论(0)    收藏  举报