C#中需要注意的地方积累

 非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员。

比如下面的例子:

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

namespace ConAttribute
{
    class Program
    {
        //[Obsolete("此方法已经过时了,请使用新的方法")]
        public static void Display()
        {
           //ShowMsg()//报错非静态的字段、方法或属性"ConAttribute.Program.ShowMsg()要求对象引用
            ShowWelcome();//在静态函数中调用静态函数,正确

        }
        public void ShowMsg()
        {
            Display();//在非静态函数中调用静态函数,正确;

        }


        public static  void ShowWelcome()
        {

            Console.WriteLine("上海蒙融技术有限公司欢迎您!");
        }
        public static void Display<T>(T msg)
        {
            Console.WriteLine(msg.ToString());
        }
        static void Main(string[] args)
        {
            Program p = new Program();
            Program.Display<string>("http://www.mronginfo.com");//输出http://www.mronginfo.com
            Program.Display<int>(100);//输出100;
            Program.Display<double>(100.1);//输出100.1
            Display();
            Console.Read();
        }
    }
}

  
C#中初始化参数的时候是按照顺序的。比如下面的代码会出现异常,因为COUNTMEMBERS还没有赋值就
构造mems数组了。应该将其移到private static  int COUNTMEMBERS = 9的下面

       private static int[] mems = new int[COUNTMEMBERS];
 public static void DisplayString(object[] strNames)
        {
            foreach (var item in strNames)
            {
                Console.WriteLine(item.ToString());
            }
        }
    
        static void Main(string[] args)
        {
            string[] conParams = new string[] { "小辣椒", "白色" };
            DisplayString(conParams);//注意传递的conParams类型为string没有问题
              Console.WriteLine("finished");
            Console.Read();
          
        }
    }

相反如果下面的例子就会报错

 public static void DisplayString(string[] strNames)
        {
            foreach (var item in strNames)
            {
                Console.WriteLine(item.ToString());
            }
        }
    
        static void Main(string[] args)
        {
            object[] conParams = new object[] { "小辣椒", "白色" };           
            DisplayString(conParams);//注意此时conParams的类型为object
            Console.WriteLine("finished");
            Console.Read();
          
        }
    }

 

private static int COUNTMEMBERS = 9; private static int MINVALUE = 1; private static int MAXVALUE = 9; private static int VALUE = 45; private static int level = 0;

 

 

posted @ 2013-03-27 17:41  Predator  阅读(150)  评论(0编辑  收藏  举报