我在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中。这项新的语言功能将允许您直接访问静态类方法。