Android、Javaから来た人に贈る、C#の基礎知識
Windows8Appsを作るにあたって、細かいけれど覚えておくと便利なものをまとめました。
■DebugLogの出力
単純な出力
System.Diagnostics.Debug.WriteLine("SystemLogですよ");
オブジェクト出力
System.Diagnostics.Debug.WriteLine(newObject());
変数出力
int d =10;
float f =0.5f;
String s ="hello";
int* p =&d;
System.Diagnostics.Debug.WriteLine("書式指定付き出力...intVal={0}, floatVal={1}, stringVal={2}, pointerVal={3}", x, f, s, p);
■using宣言
Javaのimportにあたる宣言です。
ファイル内限定のaliasを作ることも可能です。
usingSystem;// Javaと同様
usingTest=System.Diagnostics.Debug;// System.Diagnostics.DebugにTestという別名を付与
Test.WriteLine("abcdefg");// 別名を使ったログ出力
■ブロックを一つにまとめる
VC#では#regionと#endregionを使うことで、その間に書かれた行を1つにまとめることができます。
regionの設定を行うと、エディタの0文字目左に開閉可能であることを表すボックスが表示されます。
ボックスをクリックすることで、内容の表示状態が切り替わります。
#region
publicint getIntVal(){return10;}
publicdouble getDoubleVal(){return15.5;}
publicString getStringVal(){return "test";}
#endregion
■Singleton
privateコンストラクタとアクセサを使った構文は必要ありません。
classStaticClass
{
privatestaticint value;
publicstaticintValue// valueに対するpropertyの定義。
{
get{return value;}
}
staticStaticClass()// スタティックコンストラクタの定義
{
value =10;
}
}
classMainClass
{
staticvoidMain()
{
Debug.WriteLine("StaticClassのvalueは{0}です",StaticClass.Value);
}
}
■プロパティ
いわゆるGetter/Setter。
Javaに比べ、記述量を減らせます。
配列要素に対してはインデクサというものがあります。
classVector
{
///<summery>
/// デフォルト実装
/// Vector vector = new Vector();
/// double x = vector.X; // getプロパティ経由でxの値を取得
/// vector.X = 10.0; // setプロパティ経由でxに値を設定
///</summery>
publicdouble X
{
get;set;// 値のチェックが不要な場合はこれで十分です。get、set片方だけ定義することも可能です。
}
privatedouble y;
/// <summery>
/// Viewのプロパティ用
/// </summery>
publicdouble Y
{
get
{
return y;// get,setの片方でもデフォルトでない実装をする場合、もう片方も実装コードを記述する必要がある。
}
set
{
SetProperty(ref y, value);// valueはプロパティに入ってくる右オペランド。SetPropertyメソッドはView側で値を変更されたときにイベントを発生させるために使う・・・らしいです。
}
}
}
次回はそろそろ本格的にアプリ作成の事を書いていきたいと思います。