我误解了c#中的变量访问吗?

本文关键字:变量 访问 误解 | 更新日期: 2023-09-27 18:07:45

我有一个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);
    }
}

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

我是否误解了c#中的变量访问方式?有什么方法可以完成我想做的事吗?

我误解了c#中的变量访问吗?

是的,你误解了。

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

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