静态类中的函数需要要调用的类的名称

时间:2014-08-13 06:32:16

标签: c# static

我在文件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");
        }
    }
}

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

问题是:在一个可以添加大量输入的长程序中,我可以调整类MyFillerClass,以便我可以像这样调用函数:returnCategoryNames()?

3 个答案:

答案 0 :(得分:4)

不,不是在C#中达到5.0。您需要在static method name with the class name前加上前缀。

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

答案 1 :(得分:2)

哟不能在C#中做到这一点。为此,您需要执行无静态类和无静态方法。

你可以extension method

答案 2 :(得分:0)

要从类中调用函数,您需要为该类创建一个对象,然后只能调用该类中定义的方法。

如果是静态类,则无需创建任何对象。你必须直接调用方法后跟类名。

在你的情况下 MyFillerClass.returnCategoryNames();