我是否误解了C#中的变量访问?

时间:2015-08-13 19:03:49

标签: c# mono

我有一个Utils.dll来源,看起来像这样:

using System;

namespace Utils
{
    public static class A
    {
        public static string B()
        {
            string foo = "Lorem ipsum dolor sit amet...";
            return "abc";
        }
    }
}

和包含源代码的可执行文件:

using System;
using Utils;

public class Program
{
    public static void Main(string[] args)
    {
        Console.WriteLine(A.B());
        Console.WriteLine(A.B.foo);
    }
}

我希望能够从使用foo编译的任何C#可执行文件中访问Utils.dll,但显然不是;编译器(我使用Mono)说error CS0119: Expression denotes a 'method group', where a 'variable', 'value' or 'type' was expected。我已经尝试将publicstaticconst以各种排列方式添加到string foo,但没有成功。

我是否误解了C#中的变量访问是如何工作的?有没有办法完成我想要做的事情?

1 个答案:

答案 0 :(得分:4)

是的,你是误会。

您的foo字符串被声明为局部变量,因此只有方法B可以访问它。顺便说一句,我也不知道你的B对象是否是一个方法(在这种情况下它应该是B()而不是B)或属性(但是B没有得到或设置为......) 。

如果B返回“abc”而不是foo,为什么你需要从B访问foo?