#c# #f# #base-class
#c# #f# #базовый класс
Вопрос:
Я новичок в F #, и я хотел создать приложение F # Forms. Но проблема, с которой я сталкиваюсь на данный момент, заключается в том, что я не знаю, как реализовать базовый класс. В C # я бы сделал это так
namespace Test_Form
{
public class Form1 : Form
{
public Form1()
{
}
}
}
Но как мне сделать это в F #, чтобы мои формы были модулем, а не типом
Я уже пробовал
open System
open System.Windows.Forms
type Form1() =
inherit Form()
но это привело бы к
public class Form1 : Form
{
public Form1() : this()
{
}
}
Комментарии:
1. Ваш последний фрагмент в точности эквивалентен вашему первому фрагменту. В чем проблема?
2. Что я не могу получить к этому доступ. Элементы управления или что-то подобное в F #, в нем говорится, что «Пространство имен или модуль «это» не определено».
3. Вопрос (оффтопик): почему не WPF?
4. @Silent3241 вы должны были упомянуть проблему в вопросе. Мы не можем читать мысли, вы знаете.
Ответ №1:
Где вы могли бы использовать метод конструктора в C#
public class Form1 : Form
{
public Form1()
{
// Do stuff
}
}
В F #, цитируя документы,
Раздел do-bindings включает код, который будет выполняться при построении объекта.
вы бы
type Form1() =
inherit Form()
do // stuff
Например:
type Form1() as this =
inherit Form()
do this.Click.Add(fun args -> printfn "%s" <| args.ToString())
Комментарии:
1. Но как мне получить к этому доступ. * потому что, когда я пробую это, как ваш код, я все еще получаю сообщение об ошибке «Пространство имен или модуль «это» не определено»
2. @Silent3241 Вам нужно изменить
type Form1() =
наtype Form1() as this =
.