- PR -

プログラムで日本語を使うことについて

投稿者投稿内容
Izumi, Y.
ベテラン
会議室デビュー日: 2002/03/19
投稿数: 77
お住まい・勤務地: 東京
投稿日時: 2003-12-24 02:50
引用:

・リフレクションもちゃんと使えるんだろうか?


ちょっと気になったので試してみました。
コード:

using System;
using System.Reflection;

internal class TestAsst {
[STAThread]
private static void Main() {
foreach(MemberInfo member in typeof(銀行口座).GetMembers(BindingAll)) {
Console.WriteLine(member);
}
}

private const BindingFlags BindingAll =
BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance |
BindingFlags.Static;
}

public class 銀行口座 {
private string 氏名;
private int 残高;

public 銀行口座(string 顧客氏名) {
if(顧客氏名 == null) throw new ArgumentNullException("顧客氏名");
氏名 = 顧客氏名;
残高 = 0;
}
public string 顧客氏名 {
get {
return 氏名;
}
}
public int 預金残高 {
get {
return 残高;
}
}

public void 預金(int 金額) {
if(金額 < 0) throw new ArgumentOutOfRangeException("金額");
残高 += 金額;
}
public void 払戻し(int 金額) {
if(金額 < 0) throw new ArgumentOutOfRangeException("金額");
if(残高 < 金額) throw new ArgumentException("預金残高が足りません。");
残高 -= 金額;
}
public void 振込み(銀行口座 振込先口座, int 金額) {
if(振込先口座 == null) throw new ArgumentNullException("振込先口座");
if(金額 < 0) throw new ArgumentOutOfRangeException("金額");
if(残高 < 金額) throw new ArgumentException("預金残高が足りません。");
残高 -= 金額;
振込先口座.残高 += 金額;
}
}


上のプログラムは単純に銀行口座クラスのメンバをなめて表示するだけですが、少なくとも日本語環境では普通に動きますね。ついでに ILDASM にもかけてみましたが、こちらも普通に動きました。


[ メッセージ編集済み 編集者: IZUMI Yusuke 編集日時 2003-12-24 03:01 ]
Izumi, Y.
ベテラン
会議室デビュー日: 2002/03/19
投稿数: 77
お住まい・勤務地: 東京
投稿日時: 2003-12-24 02:58
上のプログラムを書いていて思ったのですが、変数名(識別子の名前)を日本語にすると送り仮名なんかも問題になりそうですね。まあ、私も日本語の名前を使うつもりはありませんが。

ちなみに全角の数字や記号類はエラーになります。全角空白は空白類扱いのようです。
m.ku
大ベテラン
会議室デビュー日: 2002/09/15
投稿数: 184
投稿日時: 2003-12-24 04:48
> 全角空白は空白類扱いのようです。

あ、ちゃぶ台ひっくり返したくなった昔の記憶が‥。
他人のコードを調査していて、使っちゃいけないところに有った全角の空白‥。
分からないってば、そんなもん!(^_^;

#普段、エディタで全角/半角空白は区別しない表示にしてるもので。

スキルアップ/キャリアアップ(JOB@IT)