Задать вопрос
@Levingstoun

Существует ли в C# | — или между типами?

Подскажите пожалуйста. Работает ли в C# битовый оператор | для типов, как в тайпскрипте.
То есть могу ли я каким-либо способом указать, что в метод может прийти два разных типа, например??
public static void Main(string[] | number[] args)
        {
            //Your code goes here
            Console.WriteLine("Hello, world!");
        }
  • Вопрос задан
  • 288 просмотров
Подписаться 3 Простой 2 комментария
Решения вопроса 1
sarapinit
@sarapinit Куратор тега C#
Точу водой камень
Нет, пока нельзя. В будущем возможно появится. В случае с Main вам нужно принимать массив строк и парсить их в нужный тип. В других случаях можно использовать object[] или ArrayList и приводить каждый элемент к нужному типу
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Перегрузка методов вам не подходит?
public static void Main(string[]  args)
        {
            //Your code goes here
            W(0);//передаём int
             W("string");//передаём string
        }
void W(string t){
Console.WriteLine(t);
}
void W(int t){
Console.WriteLine(t.ToString());
}
Ответ написан
Комментировать
В будущем, скорее всего, появятся Discriminated unions, но сейчас такого нет.
Как альтернативы:
1. Перегрузка методов
2. Полиморфизм (в данном случае принимать object[] и в цикле делать switch(x) { case string s: ...; case object o: ...}
Ответ написан
@MaksSmag
В самоучителях целую главу умудрились написать про перегрузку. А Вас почему это не устраивает?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы