==C#==| [[Visual Studio]] | [[VC++]===言語まとめ C#===] | [[Visual Studio Code]] |
{{amazon|4873116503}}
==[[C#]]=====[[言語まとめ C#]]===*[[言語まとめ C Sharp |言語まとめ C#]]*[[プログラミングC Sharp 第7版(1) | プログラミングC# 第7版(1)]]*[[プログラミングC Sharp 第7版(2) | プログラミングC# 第7版(2)]]
====概要====
*[http://download.microsoft.com/download/B/6/C/B6C2DA74-08F9-4B18-BB10-CF6DB1A5CFE2/csharp_30_specification.doc 言語仕様 3.0]
*[[言語まとめ C Sharp | 言語まとめ C#]]*[[C Sharp サンプルコード | C# サンプルコード]]*[[プログラミングC Sharp 第7版 | プログラミングC# 第7版]]
====Win32 API DLL の利用====
*[[C Sharp Win32 API および DLL の利用 | C# Win32 API および DLL の利用]]*[https://www.typea.info/blog/index.php/2022/07/27/net6_user32_dll_setwindowshookex_error_126/ .NET6 の Windows Formsから user32.dllの SetWindowsHookEx を呼び出すが ERROR_MOD_NOT_FOUND(126) エラーになる対処] ===[[Windows ]] Forms=======[[C Sharp Windows Forms Tips | C# Windows Forms Tips]]====*[[C Sharp Windows Forms Tips | C# Windows Forms Tips]]====[[C# 設定情報を保存する]]====*[[C Sharp 設定情報を保存する | C# 設定情報を保存する]]
===データベース===
====[[SQL Server Compact]]====*[[SQL Server Compact デスクトップ用アプリケーションの構築]]
===制御===
====書式====
*[[C# Sharp 書式|書式] [書式]
====Sleep====
*[[C# Sharp Sleep|Sleep] [Sleep]
===画面・コントロール===
====[[C# グラフ|グラフ] [グラフ]====*[[C# Sharp グラフ|グラフ] [グラフ]====[[C# タスクトレイ|タスクトレイ] [タスクトレイ]====*[[C# Sharp タスクトレイ|タスクトレイ] [タスクトレイ]*[[C# Sharp バックグラウンドで動く|バックグラウンドで動く] [バックグラウンドで動く]
===リソース===
====文字列====
*[[C# Sharp 文字列リソース|文字列] [文字列]
===デバッグ===
*[[C# Sharp デバッグを行う|デバッグを行う] [デバッグを行う]===[[Visual Studio]]=======[[Visual Studio 2010 Express C#]]====*[[Visual Studio 2010 Express C#]]
====コーディング規約====
*[http://msdn.microsoft.com/ja-jp/library/ff926074.aspx C# のコーディング規則]
*[http://msdn.microsoft.com/ja-jp/library/ms229042.aspx クラス ライブラリ開発のデザイン ガイドライン]
*[[Effective C# 4.0]]===Tips[[Visual Studio Ankhsvn (Subversion Plugin)|Subversion プラグイン]]===*[[Visual Studio Ankhsvn (Subversion Plugin)|Subversion プラグイン]] ==[Subversion プラグイン[Tips]]=====日付のパース===*https://docs.microsoft.com/ja-jp/dotnet/api/system.datetime.tryparseexact?view=net-6.0<pre>public static readonly string DATETIME_FORMAT_ISO8601 = "yyyy-MM-ddTHH:mm:ss.fffZ"; DateTime.ParseExact( param.value, DateTimeUtil.DATETIME_FORMAT_ISO8601, System.Globalization.CultureInfo.InvariantCulture));</pre> ===属性の指定と読み込み===[https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/concepts/attributes/accessing-attributes-by-using-reflection リフレクションを使用した属性へのアクセス] * 属性定義<pre>[System.AttributeUsage(System.AttributeTargets.Property)]public class PrimaryKeyAttribute : System.Attribute{}</pre> *読み出し(Hogeクラスのプロパティに属性をつけているとする)<pre>var type = typeof(Hoge);var properties = type.GetProperties();foreach(var property in properties){ foreach(var attr in property.GetCustomAttributes(true)) { Console.WriteLine($"[{attr}]"); } Console.WriteLine($"{property.Name}");}</pre> ===Docコメント===https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/xmldoc/recommended-tags*複数の要素に使用される 一般的なタグ - これらのタグは、API 用の最小セットです**summary: この要素の値は、Visual Studio の IntelliSense に表示されます。**remarks: ***メンバーに使用されるタグ - これらのタグは、メソッドおよびプロパティを文書化する場合に使用されます。**returns: この要素の値は、Visual Studio の IntelliSense に表示されます。**param: *: この要素の値は、Visual Studio の IntelliSense に表示されます。**paramref:**exception: ***value:: この要素の値は、Visual Studio の IntelliSense に表示されます。*ドキュメント出力の書式設定 - これらのタグを使用して、ドキュメントを生成するツールに書式設定を指示します。**para:**list:**c:**code:**example: ***ドキュメント テキストの再使用 - これらのタグを使用すると、ツールで XML コメントを再使用しやすくなります。**inheritdoc: ****include: **リンクと参照の生成 - これらのタグを使用して、他のドキュメントへのリンクを生成します。**see: ***seealso: ***cref:**href:*ジェネリック型およびメソッド用のタグ - これらのタグは、ジェネリック型およびメソッドでのみ使用されます。**<typeparam> *: この要素の値は、Visual Studio の IntelliSense に表示されます。**<typeparamref> ===UIスレッド===[[C# 文字コード変換Sharp 非同期処理からUIスレッドにアクセスし画面を更新する]] ===スクレイピング===[文字コード変換http://anglesharp.github.io/ AngleSharp]<pre>using AngleSharp.Html.Parser;using System;using System.Collections.Generic;using System.Diagnostics;using System.IO;using System.Linq;using System.Net.Http;using System.Text; namespace Hoge{ public class Crawler { private static HttpClient _client = new HttpClient(); public async void Fetch(string url) { using(var stream = await _client.GetStreamAsync(url)) { var parser = new HtmlParser(); var doc = parser.ParseDocument(stream); var ankers = doc.All.Where(m => m.LocalName == "a"); foreach(var anker in ankers) { Debug.WriteLine(anker.TextContent); } } } }}</pre> ===HttpClient Query String=== var param = (new FormUrlEncodedContent(dict)).ReadAsStringAsync().GetAwaiter().GetResult(); ===文字列配列を結合してCSVを作成===<pre>string[] row = 文字列配列return string.Join(GetDelimiters(), row.Select(f => $"\"{f}\"").ToArray());</pre>
*¥{0¥} を生成する場合<pre>var i =0;var fmt = @$"¥{{{i}¥}}";</pre> ===[[C Sharp 文字コード変換|文字コード変換]]===*[[C Sharp 文字コード変換|文字コード変換]]===[[正規表現]]による置換=== var output = System.Text.RegularExpressions.Regex.Replace(input, @"^[ ]", "");===string を stream に変換====
return new MemoryStream(Encoding.UTF8.GetBytes(value ?? ""));
====ディレクトリを再帰的に表示====
class Program
{
}
====SHIFT-JIS 文字列から、SO SI を除去====
var encShiftJis = Encoding.GetEncoding("shift_jis");
int lino = 1;
using (var reader = new StreamReaderStream[[R]]eader(path, encShiftJis))
{
string line = null;
while ((line = reader.ReadLine[[R]]eadLine())!=null)
{
byte[] bytes = encShiftJis.GetBytes(line);
for(int i=0;i<<bytes.Length; i++)
{
// bytes = bytes.Where(b => > (b != 0x20 /*space*/ && b != 0x61 /*'a'*/)).ToArray(); bytes = bytes.Where(b => > (b != 0x0E /*SO*/ || b != 0x0F /*SI*/)).ToArray();
}
line = encShiftJis.GetString(bytes);
}
}
===リストのシャッフル===
<pre>
list = list.OrderBy(m => Guid.NewGuid()).ToList();
</pre>
===ファイルを読んで書く===
<pre>
var inPath = @"...";
var outPath = @"...";
using (var writer = File.CreateText(outPath))
{
var lines = File.ReadAllLines(inPath).ToList();
lines.ForEach(line => {
writer.WriteLine(line);
});
}
</pre>
===ディレクトリのファイル処理===
<pre>
Directory.GetFiles(dirPath).ToList().ForEach( path => {
var name = Path.GetFileName(path);
});
</pre>
[[category:プログラミング言語]]