Не получается вызвать процедуру из другого класса

Автор Тема: Не получается вызвать процедуру из другого класса  (Прочитано 7921 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн art_rrcАвтор темы

  • ADN Club
  • **
  • Сообщений: 70
  • Карма: 1
  • Skype: art_sapranovich
Доброго времени суток. Не получается вызвать процедуру из другого класса. Отладчик пишет, что процедура не объявлена. Во всех источниках про уровни доступа и модификаторы процедур написано: "При модификаторе Public — процедура может вызываться из любого класса и модуля в приложении". Видимо не из любого. Подскажите пожалуйста, как побороть? Спасибо.

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
У тебя процедура находится в другом классе. Чтобы ее использовать ты должен создать экземпляр класса.
Но есть вариант проще - сделай класс artRibbonClass с модификатором static (соответственно и процеду в нем) и будет тебе счастье))
А потом открой справку и прочитай про это ;)

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Дополнение - в VB.Net (и снова - фууууууууу!) модификатор вроде не static называется, а как-то по-другому...
Нашел - Shared называется

Оффлайн art_rrcАвтор темы

  • ADN Club
  • **
  • Сообщений: 70
  • Карма: 1
  • Skype: art_sapranovich
А потом открой справку и прочитай про это
Чессно-слово читал, для доказательства невиновности даже в 1м посте цитатку привел:
может вызываться из любого класса
Видимо читал, читал... да недочитал... Спасибо, постараюсь разобраться для чего где и зачем нужно создавать экземпляры класса.
Пока сделал так:
Заменил:
Код - vb.net [Выбрать]
  1. Call artSub()
На:
Код - vb.net [Выбрать]
  1. Dim arc As artRibbonClass = New artRibbonClass
  2. arc.artSub()  
Вроде бы работает нормально. Спасибо тебе Александр Пекшев aka Modis, !

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Пока сделал так:
Я тебе про то и писал - это лишнее и ненужное действие в твоем случае! Сделай свой класс artRibbonClass с модификатором Shared и пользуйся как положено!

Что, зачем, почему и куда - лучше всех объясняют Андрей Бушман и Александр Ривилис. У меня с этим туговато... но нужно делать как я сказал! ))

Оффлайн art_rrcАвтор темы

  • ADN Club
  • **
  • Сообщений: 70
  • Карма: 1
  • Skype: art_sapranovich
VB.Net (и снова - фууууууууу!)
Вот только сделаю первый небольшой, но полноценный проектик на VB.net и сразу возьмусь за изучение азов C#. Ну очень не хочется на пол пути все бросать и переключаться на что-то другое. А так уже будет в голове сформированный базовый кусок по VB. Да и учитывая, что все примеры на C#, то даже изучая VB, пока читаешь коды на C#, постепенно вникаешь. Потом будет проще.

Оффлайн art_rrcАвтор темы

  • ADN Club
  • **
  • Сообщений: 70
  • Карма: 1
  • Skype: art_sapranovich
Сделай свой класс artRibbonClass с модификатором Shared и пользуйся как положено!
Забыл об этом написать в посте №1. Я так пробовал, но модификатор Shared никак не переваривается с Class.

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Забыл об этом написать в посте №1. Я так пробовал, но модификатор Shared никак не переваривается с Class.
Для VB.Net нужно делать какие-то там модули (Module) или использовать модификатор NotInheritable. Однако принцип работы отличается от C#. Но как я понял - в нашем случае это не критично. Вот комментарий с одного из обсуждений:
Цитировать
Module == static class

If you just want a class that you can't inherit, use a NotInheritable class. But it won't be static/Shared. You could mark all the methods, properties, and members as Shared, but that's not strictly the same thing as a static class in C# since it's not enforced by the compiler.

If you really want the vb.net equivalent to a C# static class, use a Module. It can't be inherited and all members, properties, and methods are static/shared.

Оффлайн Пашин Евгений

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Вот только сделаю первый небольшой, но полноценный проектик на VB.net и сразу возьмусь за изучение азов C#.

Делай на том, что нравится и что умеешь хорошо! Я тут прыгаю то на C#, то на VB.NET, а в итоге какой глюк и снова на VB.NET переписываю... Пока не изучишь полностью C#, делай на VB.NET - очень хороший язык!!! Это я так - в поддержку!