Swathi R Ответов: 2

Внутренний в C# против друга в VB


Я пытаюсь преобразовать некоторый код из VB в C#. Я сделал функцию" друг "в VB как" внутреннюю " В C#. Однако функции друзей могут вызываться без объекта, в отличие от внутренних функций. Поэтому я сделал внутреннюю функцию статичной, чтобы я мог вызвать ее, используя имя класса (аналогично тому, как работает функция friend). Мне это не очень нравится. Есть ли лучший способ сделать это ? Классы А и в, конечно, находятся в одной и той же сборке.

Что я уже пробовал:

class A{
internal void function(){//do something}
}
class B{
void CallFunction(){A.function(); //not possible !
}
}

2 Ответов

Рейтинг:
2

OriginalGriff

В. Б. Friend является эквивалентом C# ' s internal - он не позволяет вам получить доступ к методу без экземпляра, просто используя имя класса на любом языке. Чтобы сделать это в VB, вы указываете Shared - для C# это static.

Я подозреваю, что ваши методы VB помечены как Friend Shared а не просто Friend - что позволило бы им получить свободный доступ к экземплярам, как и C# internal static метод.


Swathi R

Нет. Это просто друг.

Рейтинг:
0

Graeme_Grant

Взгляните на эту диаграмму. Он ответит вам на этот и многие другие вопросы... VB.NET и сравнение C# [^] ... это помогло мне с переходом на C#.


Swathi R

Спасибо за Карту. Но я уже сделал то, что указано в таблице (преобразование "друга" в "внутреннего"). Мой вопрос выходит за рамки этого.

Graeme_Grant

Ваш вопрос указывает на то, что вы все еще боретесь с ним. Диаграмма проясняет путаницу, выраженную в вашем вопросе. Если вы не смущены, то, возможно, вам нужно более четко выразить это в заданном вопросе. Тогда мы сможем дать более информированный ответ.