Функции C # в общем классе не распознаются в коде - PullRequest
0 голосов
/ 14 октября 2011

Преобразование веб-проекта vb в c # с использованием vwd express 2010. Система разработки представляет собой 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. Тип I, как Intellisense, распознает clsCommon, но не считает, что testA () - это метод в нем.Intellisense видит только два метода: Equals () и ReferenceEquals ().

  2. Я игнорирую Intellisense и все равно компилирую, которая выдает следующее сообщение об ошибке:

Ошибка 1 Ссылка на объект требуется для нестатического поля, метода или свойства 'Project_Website.clsCommon.testA ()'

В чем основная причина этой проблемы?

1 Ответ

6 голосов
/ 14 октября 2011

Вам нужно либо сделать этот метод static, либо создать экземпляр класса clsCommon, чтобы использовать его, т. Е .:

public class clsCommon
{
    public static void testA()
    {

    }

} // clsCommon

Обратите внимание, что вышеупомянутая сигнатура метода кричит "побочные эффекты", так как вы ничего не возвращаете и ничего не передаете. Если вы изменяете другие члены или свойства класса, вы должны вместо этого создать экземпляр и использовать метод члена :

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

Вы должны использовать метод static, только если вам не нужен доступ к каким-либо другим свойствам или методам с классом clsCommon. Если это относится ко всем вашим методам, а clsCommon просто содержит кучу служебных методов, вы должны также сделать класс clsCommon статическим.

...