| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
5,059 バイト追加 、 2023年7月26日 (水) 02:13
| [[Visual Studio]] | [[VC++]] | [[Visual Studio Code]] |
{{amazon|4873116503}}
==[[C#]]==
====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]]====
*[http://msdn.microsoft.com/ja-jp/library/ms229042.aspx クラス ライブラリ開発のデザイン ガイドライン]
*[[Effective C# 4.0]]
===[[TipsVisual Studio Ankhsvn (Subversion Plugin)|Subversion プラグイン]]===
*[[Visual Studio Ankhsvn (Subversion Plugin)|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;
}
}
 
===リストのシャッフル===
<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:プログラミング言語]]

案内メニュー