После того, как я увидел этот сеанс PDC, я хотел попробовать узнать немного F #. Поэтому я думал, что лучший способ - переписать в F # то, что я уже сделал на С#, но мой мозг просто отказывается думать в функциональном режиме. У меня есть этот абстрактный класс, который имеет некоторые абстрактные методы и некоторые виртуальные методы. Я также хотел бы переопределить некоторые из виртуальных методов. Этот класс написан на С# и скомпилирован, и я не собираюсь переписывать его я F #. Поэтому мой вопрос:
- У кого-нибудь есть короткий пример того, как реализовать абстрактный класс, абстрактный метод и виртуальный метод.
- Можно ли перегружать конструкторы?
- Есть ли какие-либо ограничения, если я хочу скомпилировать его в dll и сделать его доступным для моих программ на С#.
Любая помощь будет оценена по достоинству.
Обновление: Я действительно очень оценил ответ Брайана, но мне все еще не ясно, поэтому я хочу уточнить. Предположим, что это мой абстрактный класс, написанный на С# и скомпилированный в 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 # заинтересован получить какую-то документацию, которую я нашел в блоге Don Syme (создатель F #) свободных главах своей книги F # Expert. Вы можете загрузить их в формате doc.
- Функциональное программирование в реальном мире Томасом Петричеком свободная глава здесь
Некоторые другие ресурсы, которые могут вас заинтересовать:
- блог Scott Hanselman сообщение
- Блог Dustin Campbell
- Блог Томаша Петричека
- Место для F # - hubFS
- F # WIKI
- Microsoft Research