C#
ソースレビューしていたら、List使うだろーと思っていたところでHashSetを使われていることがありました。 なぜにHashSet? そもそもHashSetってなに?と調べてみたところ……。 qiita.com 圧倒的にListよりHashSetの方が検索速度が速いことを初めて知りました…
本に書いてある通りにやっただけですが、サクッと作れるものなんだなぁと感心してしまいました。 開始して、マウス右クリックする ライフゲームは以下の法則です。 死んでいるセルの周囲8セルに生きているセルが3つあれば、セルが生まれる 生きているセルの…
Unityでプロジェクトを新規作成して、さあ新しい開発を、と行きたかったのですが、なんとエラー。 なんだ、これ 実行できず。 問題を解決しろというのにも、作ったばかりのブランクプロジェクトに問題も何もモノすらないという状況。 最新版のUnityをインス…
本当の超入門なのか、スクリプトを丁寧に説明しているものの、少し内容に物足りない印象を受けました。 マリオタイプのゲームを一つ作るだけで本が終わっています。 ただ、サンプルでダウンロードできる画像はいいですね。
Unityの2Dゲームテンプレートを触っていたのですが、キャラの座標が-5とかで画面の端になってしまいます。この画像は128x128なんですが。 画像は128x128のサイズなんですが Unityは3Dありきでカメラ位置で2Dを実現しているからのようです。 2Dトグルをオフに…
今の仕事だと、難読化しているコードがありますが、難読化するときの注意点としてはnameofでしょう。 Logger.Info($"{nameof(MethodA)}") なんてして、メソッド名をスマートにログ出力。 と行きたいところですが、難読化した時は実際はメソッド名が変わって…
Finalizer 以下のようなコード。 GC.Collectしてもデストラクタは呼ばれないですね。 using System; namespace Finalizer { class Sample:IDisposable { public Sample() { Console.WriteLine("私、産まれました!"); } ~Sample() { Console.WriteLine("私、…
MSDNには書いていないのですが、UnauthorizedAccessExceptionが発生することがあるようです。 うーん。MSDNを信用すれば全てが解決するわけではないのですね。 docs.microsoft.com 対応方法としては、OpenSubKey(String, Boolean)を使うといいようです。 sta…
C#の登場から、コレクション、LINQ、dynamic型。 C#の変遷について筆者の感想をつらつらと語られた本です。 C#はJavaに近くて、そうではない。NUnitは命名規則ではなく、Attributeで片付けられる。そうだよなあと思います。 印象的だったのは巻末で語られる…
MaterialDesignXamlでいわゆるバッジを表示させたいな、と ボタンの右上に表示させる方法であるサンプルは用意されています。 xamlだと以下のようになりますね。 <materialDesign:Badged Badge="3"> <Button Content="MAIL" /> </materialDesign:Badged> ただ、私がやりたいのは以下のような形 その場合は以下のようなコード。 <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding CallName.Value}" /> </textblock></stackpanel>
docs.microsoft.com Windowsのファイルバージョンといえば、1.2.3.4という4つのセクションに分かれたバージョン体系ですので、であればC#のVersionクラスもそれしか対応していないのかなと思っていたのですが、2.0という文字列でもVersionクラスはよしなに処…
TreeViewで選択している項目を保存して、アプリを起動し直した時に選択していた項目を復元する といったことを実現したのですが、しかし選択項目までスクロールされないんですね。 それにはBringIntoViewを使います。 しかし、Bindingされているオブジェクト…
public string FaceFilename { get { return Path.Combine(DirectoryPath FaceSingleName); } } というコードは、最新のC#では以下のように書くことが可能です。 public string FaceFilename => Path.Combine(DirectoryPath, FaceSingleName); ただ、自分、…
多重起動の通知にメッセージダイアログを使っていたのですが、いちいちメッセージダイアログでOKするのが面倒。 Windowsの通知とか使えないかなということチャレンジしてみました。 プロセス間通信についてはgRPCとかも考えたのですが、そこまで大掛かりな仕…
WinFormsのFormの仕様として、×で閉じると、DialogResultがCancelになります。Alt+F4で閉じても同様です。 docs.microsoft.com FormのDialogResultの返り値を処理する場合は要注意です。 というわけで上記のようなものを作って動作確認してみました。 Formの…
IDisposableを継承したクラスのインスタンスはDisposeしろ 前職では、徹底されていたことです。 ただ、Disposeしなかったら、具体的に何が起きるのか? 復習も兼ねて、実際に起こして見ることにしました。 単純にFormを2つ宣言し、Mainのフォームから何度もF…
社内で新しいデスクトップアプリケーションを開発することになったのですが、ログ出力はどうしようかと考えていたとき思い出しました。 Log4netは開発休止宣言 代替手段はどうするかということでNLogを選ぶことにしました。 Serilogもありますが、GitHubのSt…
Unityで動的に画像を読み込んで、指定の矩形を取得する場合 Sprite.Createを用います。以下のようなコード。 var texture = Resources.Load<Texture2D>("Levels/tileset"); var sprite = Sprite.Create(texture, new Rect(32, 0, 32, 32), new Vector2(0.5f, 0.5f)); お</texture2d>…
2024/2/29 追記 参照渡しという言葉を使っていましたが、言葉の使い方が適切ではないので、修正しました。 C#の細かい挙動ですが、大事なことなのでメモ。 クラスと構造体を代入された後の挙動について。 using System; public class Program { public stati…
WinFormsのアプリケーションを開発中に あっ、これ、処理中に他の操作されたらダメじゃん こういうことって網羅的なテストでは盲点になりがちですよね。 で、ツールだからざっくり一括でコントロール全体をDisabledにしたいということで、親となるFormのEnab…
小ネタですが、思い込みがあって気づいたのでメモ。 MaterialDesignXamlにはPackIconとして MaterialDesginのアイコンを表示する機能があります。 これですが、デフォルトではモノクロですが、色をつけることが可能です <materialDesign:PackIcon Kind="InformationCircle" Foreground="LightSkyBlue" Width="18" Height="18" /> 単純にForegroundプロパティを指定す</materialdesign:packicon>…
完全に小ネタなのですが、へーと思った話を。 C#にはString.Splitという関数が存在します。 docs.microsoft.com これはカンマなどで文字列を区切る処理なのですが、文字列に指定した区切り文字がなくても例外にはなりません。 using System; public class Pr…
だいぶ、 ReactivePropertyを使ったのですが、まだReadOnlyReactivePropertyを使いこなしてませんでした。 QuickConverterもあるが、ConvertBackを使わない表示用だけだったら、こっちの方がプログラムで複雑なロジックもかけます。 CombineLatestも使えるの…
C#には CurrentCultureとCurrentUICultureの二つがあります。 CurrentCultureは日付形式などのフォーマットを扱う CurrentUICultureはメッセージなどを扱う 一つにしてくれよと言いたいところですが、この概念があるから、メッセージは英語表記だけど、日付…
以下の記事を参考にさせてもらいました。 aonasuzutsuki.hatenablog.jp 同じ方のGitHubにあるようにBehaviorsにした方が良いです。 SavannahManager/TreeViewItemInfoBase.cs at master · AonaSuzutsuki/SavannahManager · GitHub SavannahManager/MoveableT…
WPFのTreeViewですが、ツリーのノードを開いた状態を扱うプロパティはIsExpandedです。 このプロパティ、どうしてBindingしているのに、コントロールの状態が ViewModelに反映されないんだろうとハマっていました。 ViewModel側からプロパティを変更すると、…
WPFのSliderコントロールですが、UserControl上のSliderなど、小さいサイズになってしまうことがあります。 Why? <StackPanel> <Slider Width="{Binding Path=ActualWidth, RelativeSource={RelativeSource FindAncestor, AncestorType=StackPanel}}" /> </StackPanel> とStackPanelで囲んで、親のサイズに合わせるようにすると良いみたいです。 stackoverflow.com
検索すると、ValidationAttributeを宣言する方法などが出てくるのですが もっと複雑な値の検証がしたいんだけど! ってなって、探しました。 searchcode.com public Hoge { get; set; } = new ReactiveProperty<bool>(); のように宣言して、以下のように Hoge .Set</bool>…
MainWindowやMainWindowViewModel、その関連のクラスを格納する名前空間の命名に困ってました。 そのまま直下でいいんですが、WPFアプリケーションだと、ViewsとViewModelsなどと、また分けたいのです。 まんまだとMainでいいんですが、クラス名と混同しない…
XamarinがまたMacと接続できなくなってしまいました。 例によって、Visual Studioの出力ウインドウを確認すると iTunes has not been found. Please ensure to have a valid iTunes installation in order to communicate with Apple devices in Windows iTu…