静态类中的函数需要调用类的名称
本文关键字:调用 函数 静态类 | 更新日期: 2023-09-27 18:17:41
我在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() ?
不,在5.0之前的c#中不允许。您需要在静态方法名前面加上类名。
然而,在c# 6.0中,将会有静态的using语句可用。这个新的语言特性将允许您直接访问静态类方法。你还不能用c#来做。要做到这一点,你需要做一个非静态类和非静态方法。
你可以做一个扩展方法
要从一个类中调用一个函数,你需要为这个类创建一个对象,然后只有你才能调用这个类中定义的方法。
在静态类的情况下,不需要创建任何对象。你必须直接调用方法,后跟类名。在你的情况下MyFillerClass.returnCategoryNames ();