#author("2023-02-19T06:53:16+00:00","default:hotate","hotate") #author("2024-01-08T01:49:40+00:00","default:hotate","hotate") #contents &tag(C#,.NET); * 情報 [#od6b7903] ** [[2024]]年 [#e5d12719] - [[初心者が本当に知りたかったC#入門以前>https://zenn.dev/inuinu/articles/40d3a9825c19de]] (2024/01/04) この記事は「初心者だった時に知りたかったな…」っていう普通のC#入門だと教えてくれないことが書いてあります。 ** [[コーディング規約]] [#nb3bae06] - [[C# のコーディング規則 | Microsoft Learn>https://learn.microsoft.com/ja-jp/dotnet/csharp/fundamentals/coding-style/coding-conventions]] この記事のガイドラインは、サンプルおよびドキュメントを開発するために Microsoft によって使用されます。 これらは、.NET ランタイムの C# コーディング スタイル ガイドラインから採用されました。 ** プロパティ [#nad60ece] - [[PropertyChangedイベントの処理方法 - かずきのBlog@Hatena>http://d.hatena.ne.jp/okazuki/20091210/1260417214]] ** WOW64 [#s416a7e3] - [[ .NETのプロセスをx64環境でWOW64として起動するようにする。 - メモ>http://d.hatena.ne.jp/kn000/20100319/1269015201]] -- [[CorFlags 変換ツール (CorFlags.exe)>http://msdn.microsoft.com/ja-jp/library/ms164699(v=VS.90).aspx]] ** コレクション [#l81183c9] - [[ReadOnlyCollection<T>:Gushwell's C# Dev Notes>http://gushwell.ldblog.jp/archives/51464728.html]] ** 正規表現 [#ae6cba86] - "(数値)x(数値)"の検索 System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex( @"(?<width>[\d]+)x(?<height>[\d]+)", System.Text.RegularExpressions.RegexOptions.IgnoreCase); System.Text.RegularExpressions.Match m = r.Match(s); if (m.Success) { Trace.WriteLine("- Width:" + m.Groups["width"]+ ", Height:" + m.Groups["height"]); } ** インターフェース [#w54cfa5a] - [[【C#】インターフェイスの利点が理解できない人は「インターフェイスには3つのタイプがある」ことを理解しよう - Qiita>https://qiita.com/yutorisan/items/d28386f168f2f3ab166d]] もっと言えば、クラスを作成する前にまずインターフェイスから設計することが好ましいと思います。 ** 例外 [#o7b2d609] *** アプリケーション例外補足 [#k2d1a255] - [[@IT:.NET TIPS 適切に処理されなかった例外をキャッチするには? - C# VB.NET Windowsフォーム>http://www.atmarkit.co.jp/fdotnet/dotnettips/320appexception/appexception.html]] static void Main() { ... Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException); Thread.GetDomain().UnhandledException += new UnhandledExceptionEventHandler(Application_UnhandledException); ... } public static void Application_ThreadException(object sender, ThreadExceptionEventArgs e) { ShowErrorMessage(e.Exception, "Application_ThreadException error."); } public static void Application_UnhandledException(object sender, UnhandledExceptionEventArgs e) { Exception ex = e.ExceptionObject as Exception; if (ex != null) { ShowErrorMessage(ex, "Application_UnhandledException error."); } } ** ログ [#df5cc2af] *** Traceをファイル出力 [#hb95709a] - [[Trace.Writeメソッドでファイルに出力する: .NET Tips: C#, VB.NET, Visual Studio>http://dobon.net/vb/dotnet/programing/tracelisteners.html]] StreamWriter sw = new StreamWriter("log.txt"); sw.AutoFlush = true; TextWriter tw = TextWriter.Synchronized(sw); TextWriterTraceListener twtl = new TextWriterTraceListener(tw, "LogFile"); Trace.Listeners.Add(twtl); *** Traceにメソッド名を出力 [#v8ea3f7c] Trace.WriteLine(DateTime.Now.ToString() + " " + System.Reflection.MethodBase.GetCurrentMethod().Name); ** 文字列 [#v50a4557] - 日時を任意のフォーマットに変換する DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); ** アセンブリ [#k97d4fab] - 名称、バージョン Assembly asm = Assembly.GetExecutingAssembly(); string name = asm.GetName().Name System.Version ver = asm.GetName().Version; string verStr = "ver." + ver.Major.ToString() + "." + ver.Minor.ToString() + "." + ver.Build.ToString(); ** 並行処理 [#f613c3de] - [[C# 並行・並列プログラミング パターン集 - Qiita>https://qiita.com/takutoy/items/c384fcb439d345a9a0d3]] Task, Parallel, PLINQの使い方集。ついでに.NETの非同期APIの歴史。 ** デリゲート [#ge9fb41a] - [[とても雑にC#のデリゲート超入門&再入門 - Qiita>https://qiita.com/YouKnow/items/d6823afa7f676f309340]] とても雑にデリゲートの何が便利? メソッドを 変数のように扱えるから、あるメソッドを 別のメソッドに 引数で渡したりして 後から 好きなタイミングで 実行してもらえるよ ** スレッド [#pe0a40d8] - UIスレッドへのアクセス用プロパティ static void Main() { FormMenu form = new FormMenu(); Program.ApplicationForm = form; Application.Run(form); } public static Control ApplicationForm { set; get; }