#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;
 }

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS