0

イミディエイト ウィンドウからの Find の呼び出しをデバッグしたいだけですが、可能ですか?

            Customer found = listOfCustomers.Find(
                delegate(Customer cu)
                {
                    return cu.Name.ToLower().Contains("adam");
                }
            );
4

2 に答える 2

1

他の多くの人が指摘しているように、これを行うためにイミディエイトウィンドウを使用することはできません。私はあなたのためにうまくいくかもしれない別の提案があります。私はいつもそれを使っています、そしてそれは私が長い間使ってきた最高のツールです。

Roslynは、C#およびVB.NETコンパイラを開発者に公開するMicrosoftのプロジェクトです。それは他の多くの理由でクールですが、特に1つはあなたのニーズに関係します。C#インタラクティブウィンドウが含まれています。

これはCTPですが(まだベータリリースは作成されていません)、非常に安定していることがわかりました。2012年6月のCTPはVS2010をサポートしますが、2012年9月のCTPはVS2012のみをサポートします。

#rディレクティブを使用して他のDLL(システムとプロジェクトの両方)を参照し、通常のC#コードを使用してプラグインすることができます。ほぼすべての言語機能をサポートしています(非同期/待機、PInvoke、動的、およびその他のいくつかの機能はサポートされていないと思います)。これがその出力のサンプルです。

Microsoft (R) Roslyn C# Compiler version 1.1.20524.4
Loading context from 'CSharpInteractive.rsp'.
Type "#help" for more information.
> var strarr = new[] { "a", "b", "c", "d", "e", "f", "g", "h" };
> strarr
string[8] { "a", "b", "c", "d", "e", "f", "g", "h" }
> strarr.TakeWhile(s => s != "e")
TakeWhileIterator { "a", "b", "c", "d" }
> #r "D:\SVN\Lucene.Net\Trunk\bin\Lucene.Net.dll"
> using Lucene.Net.Store;
> var d = new RAMDirectory();
> d.Dispose()
<void>
> strar
(1,1): error CS0103: The name 'strar' does not exist in the current context
> #reset
Resetting execution engine
Loading context from 'CSharpInteractive.rsp'.
> 

ご覧のとおり、ラムダ(匿名メソッドも使用できます)やその他の言語機能を使用できます。また、コンピューター上にあるLucene.Net dllを参照し、名前空間をインポートして型を使用することができました。プロジェクト全体を右クリックして[プロジェクトからインタラクティブにリセット]を選択することもできますが、エラーが発生して機能しない場合があります。

デバッガーを実行せずにコードを試すためのツールを探している場合は、Roslynを調べることをお勧めします。

于 2012-11-07T19:06:42.277 に答える
1

(obj => obj.something == something)残念ながら、即時ウィンドウでは、ラムダ式または匿名メソッドを呼び出すことはできません(delegate () { })

いくつかの単体テストを追加してソリューションをテストするか、サンプル コードを含むメソッドを使用して小さなヘルパー クラスを作成し、それを即時ウィンドウから実行することができます。

于 2012-11-06T19:33:32.293 に答える