問題タブ [managed-code]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
490 参照

c# - キーワードと Managed\UnManaged コードの使用

C# キーワード Using は、アンマネージ リソースを解放するメカニズムを提供する Idisposable を実装します。

今、私はこのコードを実行していました

なぜこのコードでキーワードUsingが使用されているのに、 StreamReaderはマネージ リソースであり、ガベージ コレクターはそのスコープを超えた後にオブジェクト メモリを解放する責任があるのでしょうか。

だから私の質問は、

  1. 上記のコードは、単にリソースを解放するための明示的な処理方法ですか?
  2. 私の理解によると、.net フレームワークで使用するメソッドまたはクラスはマネージド コードであり、StreamReader もマネージド コードに分類されません。
  3. Managed\Unmanaged コードに何か不足していますか?
0 投票する
1 に答える
411 参照

c# - マネージド コードとアンマネージド コードの間の境界として BSTR 文字列を渡す (COM 相互運用)

com interop に取り組んでいる間、このリンクのチュートリアルに従いました。要件に応じていくつかの変更を行ったため、コードは正常に動作しますが、文字列の処理中に問題が発生します。ここでは境界として BSTR 文字列を使用しています。ここに私がC++から呼び出しているC#の関数があります

ここに、呼び出しが行われているコードの C++ メイン関数セクションがあります

ここに出力があります ここに画像の説明を入力

私が直面している問題は次のとおりです。

  • C# で戻り関数を使用しているにもかかわらず、C++ コードから渡された後、BSTR 文字列がコンソールに返されない
  • ここでSysAllocString("")を使用しているため、コンソールに動的に入力を挿入することは可能ですか?
0 投票する
1 に答える
95 参照

c# - C++ アプリケーションを使用して C# DLL を使用するためのラッパー クラスを設計するにはどうすればよいですか?

次のチュートリアルhttps://www.red-gate.com/simple-talk/dotnet/net-development/creating-ccli-wrapper/に従って、C# .NET フレームワーク コンソールから C++ スタティック ライブラリのインスタンスを作成しました。ラッパー クラスを使用するアプリケーション。このチュートリアルでは、ManagedObject.h ファイルは、アンマネージドからマネージドへのラッパー クラスのテンプレートを作成します。マネージドからアンマネージドに移行するテンプレートを作成するにはどうすればよいですか? これが不可能な場合は、C# DLL から C++ アプリケーションで使用されるラッパー クラスを作成するためのリンクを教えてください。

0 投票する
0 に答える
32 参照

c# - マネージ コードはコンパイル後に生成されますか?

注: 別のMSDNドキュメントと矛盾しているように見えるMSDNドキュメントに出くわした後、私の現在の理解が正しいかどうかを明確にしたいだけです。また、私はすでに次のリンクを通過しています-

  1. C# アンセーフ コードは管理されていますか?
  2. C# のアンセーフ コードとアンマネージ コードの違いは何ですか?

私は次のことを理解していました(このリンクを通過した後に開発しました):

マネージ コード: 高水準言語 (C#、F# などの .NET 上で実行できる) のいずれかで記述されたコードは、コンパイル時に IL を生成し、その実行はランタイム (この場合は CLR、 Mono、.NET Framework、.NET Core/.NET 5+ などの実装に関係なく、マネージ コードと呼ばれます。

IL: マネージ コードをコンパイルした製品です。

しかし、その後、このリンクに出くわしました。それによると、マネージ コードにコンパイルするとき、コンパイラはソース コードを Microsoft 中間言語 (MSIL) に変換します...など。

両方のドキュメントは MSDN からのものであり、タイプミスであるかどうかわからないため、質問です。

それで、どれが正しいですか?