MQL5におけるOOPに関する質問 - ページ 32

 
Vladimir Tkach:
最近、いろいろなコンパイラの関数に「ゴミ集め」のようなものが見られるようになった。何ですか?
ガベージコレクションという 意味なら、削除を代わりにやってくれるものですが、変数がスコープから出たときではなく、その気に なったときに削除してくれます。ちなみに、デストラクタを自分で呼んでいいということではなく、言語にもよるでしょうが、Sharpでは、私の理解では、不可能です。
 
Vladimir Simakov:
ここは言語にもよるだろうが、シャープの場合は、私の理解では不可能である。

それは、すべて行うことができますNULLに未使用のオブジェクトを割り当てるには、Microsoftのサイトでは、ごみコレクタを呼び出すために強制する方法のマニュアルが、それは私が期待どおりにこの呼び出しでコレクタが起動されるという事実ではないhubraで読んでいるようです。

つまり、シャープはプログラマーからメモリ管理のほとんどを奪ってしまったのです。

 
Igor Makanu:

それは、あなたができることは、NULLに未使用のオブジェクトを割り当てることです、そこにMicrosoftのサイトでは、ごみコレクタを強制的にマニュアルが、それは私が期待どおりにこの呼び出しでコレクタが起動されるという事実ではないハブラで読むことだと思われます。

つまり、シャープはプログラマーからメモリ管理のほとんどを奪ってしまったのです。

これでよしとする。今、初めてSharpのタスクを書いているのですが、new inメソッドの後、コードにdeleteがないため、恐ろしく感じます)))。
 
Vladimir Simakov:
これでよしとする。現在、初めてシャープの教科書を書いているのですが、new in method))の後のコードにdeleteがないことにゾッとしています。)

delete MyObj; の代わりに write MyObj = null; - これは動作します。

を使い、?- 最初は少しぎこちなかったが、その後、自動的に動作するようになった。

が、C++との大きな違いは、C#ではすべてのオブジェクトが参照であり、MyObj_1=MyObj_2;とすると、コピーではなくポインタを取得することです...。私はあなたを混乱させるところです、ここに簡単なチュートリアルがあります、私は何か忘れている場合は、そこを見ます。

https://metanit.com/sharp/tutorial/2.16.php


Типы значений и ссылочные типы | C#
  • metanit.com
Ранее мы рассматривали следующие элементарные типы данных: int, byte, double, string, object и др. Также есть сложные типы: структуры, перечисления, классы. Все эти типы данных можно разделить на типы значений, еще называемые значимыми типами, (value types) и ссылочные типы (reference types). Важно понимать между ними различия. Ссылочные типы...
 

OOPの必要性、有用性がわかってきたような気がするのですが、なかなか実行に移せないでいます。

私は3つの異なる変数セットで使用するクラスを持っています。しかし、それは一つの仕事をこなしている。簡単に言うと、3つのコンストラクタを挿入し、3つの変数を宣言し、それらを参照することができます。しかし、私の見るところ、それはちょっと正しくないようです。その上、2つのバリエーションで1つの文字列型の変数がありますが、名前が異なり、コードの異なる部分で使用されています。もちろん、変数の並びを変えてもいいのですが、これもちょっと正しくないかなと思います。

新しいオペレータに関する ドキュメントを読みましたが、それがどのように役立つのか理解できません。3つの異なるオブジェクト変数と、同じオブジェクトへの3つのポインタの違いがわかりません。おそらく、一度ポインターを作って、このオブジェクトを使い、不要になったら削除すると儲かるのでしょう。しかし、定期的にそのオブジェクトが必要な場合、その都度ポインタを作成して削除するのは絶対におかしいです。

というわけで、よろしくお願いします。C++のOOPの説明をいくつか読みましたが、そこではmql5のドキュメントよりもひどい表現で説明されています。せっかちな方はご遠慮ください、質問しすぎちゃいますよ。私も説明のない既成のコードには興味がなく、理解したいし、「Do with us, do as we do...」とバカみたいに繰り返すのはやめようと思っているんです。

 
Alexey Viktorov:

OOPの必要性、有用性がわかってきたような気がするのですが、なかなか実行に移せないでいます。

私は3つの異なる変数セットで使用するクラスを持っています。しかし、それは一つの仕事をこなしている。簡単に言うと、3つのコンストラクタを挿入し、3つの変数を宣言し、それらを参照することができます。しかし、私の見るところ、それはちょっと正しくないようです。その上、2つのバリエーションで1つの文字列型の変数がありますが、名前が異なり、コードの異なる部分で使用されています。もちろん、変数の並びを変えてもいいのですが、これもちょっと正しくないかなと思います。

新しいオペレータに関する ドキュメントを読みましたが、それがどのように役立つのか理解できません。3つの異なるオブジェクト変数と、同じオブジェクトへの3つのポインタの違いがわかりません。おそらく、一度ポインターを作って、このオブジェクトを使い、不要になったら削除すると儲かるのでしょう。しかし、定期的にそのオブジェクトが必要な場合、その都度ポインタを作成して削除するのは馬鹿げています。

すべてにおいて、助けてください。C++のOOPの説明をいくつか読みましたが、そこではmql5のドキュメントよりもひどい表現で説明されています。せっかちな人は質問攻めにするので勘弁してください。私も説明のない既成のコードには興味がなく、理解したいし、「Do with us, do as we do...」とバカみたいに繰り返すのはやめたい。

もっと詳しく教えてほしい。クラスはどのようなタスクを行うのでしょうか?

 
Koldun Zloy:

詳細が必要です。クラスはどのようなタスクを行うのでしょうか?

周知のことだが、経済カレンダー イベントのサンプル CalendarValueHistory()。あるときは、時間帯のニュースをすべて。別の国別、別の時間帯で。3作目ではシンボルによるものです。しかし、根本的な違いがあるのでしょうか?プログラミングの講義では、実行するタスクの種類によって解答を分けているのでしょうか?

最近、運転免許試験に落ちた人に会ったのですが、「教習でその交差点を走ったことがないので、単にその交差点の走り方を知らないだけだ」と憤慨していました。

 
でも、本当はポインターを作って、そのオブジェクトを使い、不要になったら削除したほうがいいのかもしれない、と今は思っています。やはり、時間帯は毎回違うでしょう。それとも、セッターを使って既存のオブジェクトに時間を挿入する方が簡単なのでしょうか?
 
Alexey Viktorov:

別の国別、別の時間帯で。

enumに含まれる国々

コンストラクタでは、通常のスイッチ - ケースを通しても、必要に応じて初期化を行う、私は上記のインターフェイスを持つテンプレートを示した、私はまた、パラメータに応じて、コンストラクタ内の戦略のいずれかを初期化し、作業の残りの部分は、特定の戦略を記述するために削減されます。

https://www.mql5.com/ru/forum/85652/page24#comment_13054686

 
Igor Makanu:

enumに含まれる国々

コンストラクタでは、通常のswitch - caseを通しても、必要に応じて初期化を行い、私は上記のインターフェイスを持つテンプレートを示した、私はまた、パラメータに応じてコンストラクタ内の戦略のいずれかを初期化し、残りの作業は、特定の戦略を記述することになる

https://www.mql5.com/ru/forum/85652/page24#comment_13054686

つまらない...。テンプレートやインターフェースも使いこなす必要があるのでは?