После того как я увидел эту сессию PDC, я захотел немного изучить F #. Поэтому я подумал, что лучшим способом было бы переписать в F # то, что я уже сделал в C #, но мой мозг просто отказывается думать в функциональном режиме.
У меня есть этот абстрактный класс, который имеет некоторые абстрактные методы и некоторые виртуальные методы. Я также хотел бы переопределить некоторые виртуальные методы. Этот класс написан на C # и скомпилирован, и я не собираюсь переписывать его в F #.
Итак, мой вопрос:
- есть ли у кого-нибудь короткий пример того, как реализовать абстрактный класс, абстрактный метод и виртуальный метод
- можно ли перегружать конструкторы?
- существуют ли какие-либо ограничения, если я хочу скомпилировать его в dll и сделать его доступным для моих программ на C #.
Любая помощь будет оценена.
Обновление:
Я действительно очень ценю ответ Брайана, но он все еще неясен для меня, поэтому я хочу уточнить. Давайте представим, что это мой абстрактный класс, написанный на C # и скомпилированный в dll. Как мне реализовать это в F #?
public abstract class MyAbstractClass
{
public abstract Person GetFullName(string firstName, string lastName);
public abstract bool TryParse(string fullName, out Person person);
public virtual IEnumerable<Person> GetChildren(Person parent)
{
List<Person> kids = new List<Person>();
foreach(Child person in GroupOfPeople)
{
if(person.Parent == parent)
kids.Add(child as Person);
}
return kids;
}
public virtual IEnumerable<Child> GroupOfPeople { get; set; }
}
Некоторая документация для тех, кто ищет ресурсы F #:
- если любой другой F # заинтересован в получении какой-либо документации, которую я нашел в блоге Дона Сайма (создателя F #) бесплатных глав его книги F # Expert . Вы можете скачать их в формате doc.
Некоторые другие ресурсы, которые могут представлять интерес: