0

使用vwd express 2010将vb web项目转换为c#。开发系统是64位windows 7。

我有一个在外部 cs 文件中声明的常用函数。文件“clsCommon.cs”的内容 =

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net.Mail;

namespace Project_Website
{
    public class clsCommon
    {
        public void testA()
        {

        }

    } // clsCommon
} // namespace

在后面的代码中,我尝试按如下方式访问函数 testA():

testA();

也试过:

clsCommon.testA();

Project_Website.clsCommon.testA();

我想使用的实际示例更复杂,但这是最简单的示例,它体现了我在下面列举的问题:

  1. As I type, Intellisense 识别 clsCommon,但不认为 testA() 是其中的一种方法。Intellisense 只看到两种方法:Equals() 和 ReferenceEquals()。

  2. 我忽略了 Intellisense 并编译,这会产生以下错误消息:

错误 1 ​​非静态字段、方法或属性“Project_Website.clsCommon.testA()”需要对象引用

这个问题的根本原因是什么?

4

1 回答 1

6

您要么需要创建该方法static,要么创建该类的实例clsCommon来使用它,即:

public class clsCommon
{
    public static void testA()
    {

    }

} // clsCommon

请注意,上面的方法签名会产生“副作用”,因为您没有返回任何内容,也没有传入任何内容。如果您正在修改类的其他成员或属性,则应该创建一个实例并使用成员方法:

var common = new clsCommon();
common.testA();

static仅当您不需要访问该类的任何其他属性或方法时,才应创建该方法clsCommon。如果您的所有方法都是这种情况,并且clsCommon只是持有一堆实用方法,那么您也应该将clsCommon类设为静态。

于 2011-10-14T15:50:31.870 回答