C# 中的静态列表

Static List in C#

我正在尝试做这样的事情:

public static class A
{
    public static readonly List<string> alist = new List<string>()
    {
        //some big data about 70 rows
    };
    public struct astruct
    {
        public const string adata = "a data";
    }
}

public class B
{
    string s1 = A.astruct.adata;     //OK
    string s2 = A.alist.Find("sth")  //No such list! Even Intellisense can't find it after pressing A.
}

你能告诉我如何将列表用作静态吗?

提前致谢...

编辑:问题不是我传入的 Find 方法或参数。问题是我无法从 B class 中访问列表。对不起我的英语

你应该这样做

public static class A
{
    public static readonly List<string> alist = new List<string>()
    {
        //some big data about 70 rows
    }
    public struct astruct
    {
        public const string adata = "a data";
    }
}

public class B
{
    string s1 = A.astruct.adata;
    string s2 = A.alist.FirstOrDefault(s=>s==A.astruct.adata);
    string s3 = A.alist.FirstOrDefault(s=>s==s1);
}

您遇到无法将 string 转换为 System.Predicate<string> 的错误。

这意味着,您需要对 Find() 使用以下语法:

string s2 = A.alist.Find(x => x == adata);

.Where() or .FirstOrDefault() or .SingleOrDefault()

请尝试以下代码。 它可能对你有用。

使用谓词从列表中查找元素。

public static class A
{
    public static readonly List<string> alist = new List<string>
    {
        //some big data about 70 rows
    };

    public struct astruct
    {
        public const string adata = "a data";
    }
}

public class B
{
    string s1 = A.astruct.adata;
    string s2 = A.alist.Find(m => m.Equals(A.astruct.adata));
}