我在MyFillerClass.cs文件中有一个名为MyFillerClass的类,如下所示:

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

    namespace trial
    {
        public static class MyFillerClass
        {
            public static List<string> returnCategoryNames()
            {
                List<string> catNames = new List<string>();
                catNames.Add("one");
                catNames.Add("two");
                catNames.Add("three");
                catNames.Add("Others");
                return catNames;
            }
        }
    }


现在当我想从其他地方调用它时(例如表单类):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace trial
{
    public partial class Form1 : Form
    {
        static string lastSelectedCategory;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            listBox1.DataSource = returnCategoryNames(); //error : The name 'returnCategoryNames' does not exist in the current context
            lastSelectedCategory = listBox1.SelectedValue.ToString();
        }

        private void listBox1_SelectedValueChanged(object sender, EventArgs e)
        {
            lastSelectedCategory = listBox1.SelectedValue.ToString();

            System.Diagnostics.Debug.Print("### User choosed " + lastSelectedCategory + " category");
        }
    }
}


行“ listBox1.DataSource = returnCategoryNames();”产生错误,如代码中所示,要修复它,我必须将其调整为“ listBox1.DataSource = MyFillerClass.returnCategoryNames();”。

问题是:在一个长程序中,可以添加很多类型的输入,我可以通过这样的方式调整类MyFillerClass,以便我可以像这样调用函数:returnCategoryNames()吗?

最佳答案

不,不是在C#或更高版本的5.0中。您需要在static method name with the class name前面加上前缀。

但是,在C# 6.0 there will be static using statements available中。这项新的语言功能将允许您直接访问静态类方法。

09-28 06:14