C#のBigInteger型で超巨大な数字を扱う

C#の組み込み型で最も大きい値を扱える型は、double型です。最大値は、1.7x 10の308乗とありますが、浮動小数点の精度の関係で実際扱える有効桁数が17桁程度なので極大の数値に対し有効桁外の演算を行うと計算結果に反映されない…みたいな状態になります。 …

C++でC#ライクなプロパティを実現する

C#ではプロパティ構文というものがあります。これは、オブジェクトのメンバーへのアクセスを行うための、アクセッサー(setter/getter)をあたかも変数へのアクセスと同様に行える仕組みです。 // C#のプロパティ public class CSharpProp { // 一番簡単なプ…

C#の組み込み型の値の範囲の確認

C#

C#で最初から使用できる型を組み込み型と言います。 範囲使用できる範囲をすぐ忘れてしまうので自分のためにまとめてみました。 C# は int や double など、他の型のある言語で利用できる型がC#にも用意されています。組み込み型の特徴は以下の通りです。 .N…

ひし形と点の当たり判定を行う

今回は、ひし形(というか任意の4点からなる四角形)と、ある点の衝突判定を行いたいと思います。 判定処理の概要ですが、以下図の通り任意の4点 A ~ D をそれぞれを線で結び四角形とし、そこに点 P を与え、それぞれ四角形の内(=衝突している)外(=衝…

C#で表示する小数点の桁数を指定する

C#

C#で小数点以下の桁数を指定して文字列表示を行う方法を紹介です。

C#の自動実装のイベントは解放されるのか?

C#

C#では、プロパティのイベント版ともいえる「自動実装イベント」を以下のように宣言することができます。 // event構文を使ったイベント登録処理の公開 public event Action EventAction; イベント構文を使ってイベントを登録した場合のオブジェクトの破棄周…

【C#】構造体配列のポインタを持つ構造体のマーシャリング

C#の相互運用(C#からネイティブDLLの呼び出しの場合)で構造体の中に構造体配列のポインタを持つ関数のマーシャリングのやり方です。 ネイティブDLL側の宣言 C#側の実装方法 ネイティブDLL側の宣言 ネイティブのDLL側の宣言は以下のようになっているとしま…

dllexport と__stdcallを同時に宣言すると関数名が変わる

C++

VsiaulStudioのC++のプロジェクトで、DLLを作成し、関数を外部公開するため、 extern "C" と dllexport を指定したところ予期しない名前がついていて関数呼び出しが失敗してしまいました。 以下のように、外部公開される名前の先頭にアンダースコア、末尾に…

Excelで増殖したセルのスタイル(書式)を一括で削除する

Excelでファイルサイズが異様に大きくなっている時に、セルのスタイルが異常に増殖している事があります。 原因は不明ですが、どうやら"シートを複製する"、"セルをコピペする"操作で増殖するみたいです。 以下画像の赤枠の書式欄ですが、見えている部分の様…

VisualStudioのエラーリンクの検索エンジンをGoogleに変更する

VisualStudioでコードを書いている時にコンパイルエラーが発生した際に、エラーリンク(以下画像の赤枠)をクリックすると、Bingでエラーが検索されます。 このBing検索、全く役に立たないので検索エンジンをGooleに変更します。 前提条件 以下、唯一の条件で…

C#の自動で作成されたイベントハンドラの命名規則

C#

イベントハンドラを自動生成した時に、以下のメッセージで注意を受ける事があります。 IDE1006 C# 名前指定の規則違反: 最初の単語 '${メソッド名}' は、小文字で始まらなければなりません IDEが自動で作ったコードをこちらに修正しろというのもいちょっとよ…

拡張メソッドを使ってObjectクラスを拡張しstringプロパティを一括でEmptyに初期化する。

C#

以前に、ブログで書いた「C#でstringを一括でEmptyに初期化する」という記事でstringのプロパティに対して一括でstring.Emptyを設定する方法を紹介しましたが、今回は拡張メソッドを使用してObjectoクラスを拡張してstringクラスへ初期値として任意の値を設…