2 u010904771 u010904771 于 2014.05.07 15:22 提问

在Main函数中访问不到Analyze方法 把private改为static就可以哪位大神解释一下
c#

class Program
{
static StringBuilder sb = new StringBuilder();
static void Main(string[] args)
{
Type t4 = typeof(double);
Analyze(t4);
MessageBox.Show(sb.ToString(), "Analyze of type is " + t4.Name);
}
private void Analyze(Type t5)
{
AddToSb("TypeName:" + t5.Name);
AddToSb("MemberType" + t5.MemberType);
AddToSb("ReflectType:" + t5.ReflectedType);
}

    static void AddToSb(string Text)
    {
        sb.Append("\n"+Text);
    }
}

2个回答

zhou85xin
zhou85xin   2014.05.07 18:55

因为main函数需要设置成静态方法,静态方法不能直接调用类中的非静态方法,除非先实例化这个类

u201011221
u201011221   2014.05.11 21:07

1.静态方法只能用来调用静态函数和变量的,这是语言规则。Main方法是静态方法。
2.你把Anasyze设置为静态方法,会发现提示错误,不能调用非静态方法AddToSb,原因同1。
3.非静态方法的调用需要实例化类。
Analyze(t4);修改如下:

        Program program = new Program();
        program.Analyze(t4);
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!