正しく動作しない次のコードがあります。
KeyValuePair<string, object> item =
(KeyValuePair<string, object>)e.AddedItems[0];
string str = (string)item.Key;
switch (str)
{
case "?":
this.NavigationService.Navigate(new Uri("/Shared/About/AboutPage.xaml?appName=Elements",
UriKind.Relative));
break;
default:
this.NavigationService.Navigate(new Uri("/DetailsPage.xaml?url=" +
HttpUtility.UrlEncode((item.Value as Element).Url.LocalPath),
UriKind.Relative));
break;
}
「アイテム」という名前のオブジェクトのキーと値のペアがあり、キー値が「?」の場合に別のコード ブロックをトリガーする例外を作成したいと考えています。見つかった。上記では、switch ステートメントを使用して、"?" の場合に別のコード ブロックを実行しようとしました。がキーとして見つかった場合、それ以外の場合はデフォルトのコード ブロックが実行されます。しかし、現在、上記のコードを実行すると、次の免除がトリガーされます。
// Code to execute on Unhandled Exceptions
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
if (System.Diagnostics.Debugger.IsAttached)
{
// An unhandled exception has occurred; break into the debugger
System.Diagnostics.Debugger.Break();
}
}
なぜこれが起こっているのか、誰かが私に手がかりを与えることができるかどうか疑問に思っています。どんな助けでも大歓迎です、ありがとう。
2013 年 12 月 27 日追加:
以下のコード ブロックは、Web サイトの長いリストを保持するファイルからのものですが、最後の行は Web サイトではなく、代わりに呼び出したいプログラム内のファイルです。
using System;
namespace ...
{
public class Data
{
public static readonly Element[] Elements = {
new Element("Hydrogen [H] 1", new Uri("http://chemistry.about.com/od/elementfacts/a/hydrogen.htm")),
new Element("Helium [He] 2", new Uri("http://chemistry.about.com/od/elementfacts/a/helium.htm")),
...
new Element("? About", new Uri("/Shared/About/AboutPage.xaml?appName=Elements", UriKind.Relative))
};
}
}
最後の行new Element("? About", new Uri("/Shared/About/AboutPage.xaml?appName=Elements", UriKind.Relative))
は、プログラム内のファイルへのリンクを保持する行です。ここでの switch ステートメントを含むコードの最初のブロックは?
、このコード行の を決定することになっていますが、私はそれを正しく行っているかどうか確信が持てません。コードの 2 番目のブロックは、プログラムをテストするときにデバッガーによってスローされるものです。