C#関連
名前空間
名前空間(name space)とは、 ファイルを種類ごとにフォルダに分けて管理するのと同じように、 クラスを種類ごとに分けて管理するための機構。
参考サイト
ICollection
すべてのコレクションについて、サイズ、列挙子、および同期メソッドを定義する。
参考サイト
lock
マルチスレッドの環境で排他制御を行うために、使用。
javaで言うsynchronizedかな。
Object thisLock = new Object();
lock (thisLock)
{
// Critical code section
}
参考サイト
ICollection
すべてのコレクションについて、サイズ、列挙子、および同期メソッドを定義する。
参考サイト
log4net
log4jみたいなログ出力に使う。
log4net.dllをインストール後、参照設定を追加する。
二つのログファイルに分けて出力する
app.config(任意の名前)に記載を行う
例)
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<log4net>
<!-- ログ出力先の定義 -->
<appender name="SystemLog" type="log4net.Appender.RollingFileAppender">
<!-- 作成するログファイル -->
<param name="File" value=".\log\System\System"/>
<!-- 追加 -->
<param name="AppendToFile" value="true"/>
<!-- 日付ごとにファイルを作成することを指定 -->
<param name="RollingStyle" value="date"/>
<!-- ログ・ファイル名が固定 -->
<param name="StaticLogFileName" value="false"/>
<!-- ファイル名の日付部分 -->
<param name="DatePattern" value=""."yyyyMMdd".log""/>
<layout type="log4net.Layout.PatternLayout">
<!-- ログの書式 -->
<conversionPattern value="%date [%thread] [%-level] %message%newline"/>
</layout>
</appender>
<appender name="RWLog" type="log4net.Appender.RollingFileAppender">
<!-- 作成するログファイル -->
<param name="File" value=".\log\RWLog\RWLog.log"/>
<!-- 追加 -->
<param name="AppendToFile" value="true"/>
<maximumFileSize value="20MB" />
<!-- 最大保存ファイル数 (古い順に削除) -->
<param name="MaxSizeRollBackups" value="2" />
<!-- ログ・ファイル名が固定 -->
<param name="StaticLogFileName" value="true"/>
<layout type="log4net.Layout.PatternLayout">
<!-- ログの書式 -->
<conversionPattern value="%date %message%newline"/>
</layout>
</appender>
<root>
<!-- ログのレベルを指定 -->
<level value="ALL"/>
</root>
<logger name="SystemLogger">
<appender-ref ref="SystemLog" />
</logger>
<logger name="RWLogger">
<appender-ref ref="RWLog" />
</logger>
</log4net>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup> <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web" publicKeyToken="B03F5F7F11D50A3A" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
app.configにファイル2つ分定義後、
ILog ilog = LogManager.GetLogger("SystemLogger");
でどちらのロガーを使用するか指定し、
ilog.Debug(logMessage);
ilog.Info(logMessage);
でログの出力を行う。
日付ごとにログファイル分けをする場合、期間でログを削除することは不可
<!-- 日付ごとにファイルを作成することを指定 -->
<param name="RollingStyle" value="date"/>
で日付ごとにファイルを生成することができるが、
RollingStyleにdateを指定してしまうと、
<!-- 最大保存ファイル数 (古い順に削除) -->
<param name="MaxSizeRollBackups" value="2" />
のようにMaxSizeRollBackupsを指定しても無視されてしまう!
NUnitからlog4netを使う
テスト前に明示的に.configを読み込む必要がある
log4net.Config.XmlConfigurator.Configure();
参考
ビット演算
ビット演算については以下のサイトを参考。
参考サイト
対象の1ビットを反転させる
フラグなどでビットを使用している場合、対象の1ビットのみを反転したいことがある。
例
0101 | 0010
対象の1ビットのみ1にしたものとORする
0101 & 1011
対象の1ビットのみ0にしたものとANDする
全ビット反転
~0101
全体を反転できる
TCPClientのConnectedプロパティについて
TCPClientのConnectedは現在の接続状態をboolで返すのではなく、
最後に接続したときの状態を返す。
したがって、途中で接続が切断した場合でも、最後の接続が成功していればtrueを返す。
「@"文字列"」 でエスケープしなくてもよくなる
文字列に「@」を付けることで"D:\doc\IDC"のような文字列でも
エスケープしなくてもよくなる。
便利です!
ちなみに、改行してもOK。
Null&空文字列チェック
String.IsNullOrEmptyメソッド(String)を使用することで、
Null&空文字列チェックを容易にできる。
コメント・トークン
TODO 未実装のため、新たにコードを追加する必要がある個所
HACK 実装済みだが、コードをさらに改善する必要がある個所
UNDONE 未完成のため、さらにコードを編集する必要がある個所
Environment.GetCommandLineArgs メソッド
現在のプロセスに対するコマンドライン引数を格納している文字列配列を返す
注意※
配列の先頭の要素には、実行中のプログラムのファイル名が格納される
数値とバイト列の変換、文字列とバイト列の変換 (BitConverter, Convert, X2, IsLittleEndian)
最終更新:2012年12月13日 22:56