Top / .NET備忘録 / 11.文字列の扱い / 03.VBString クラス

StrConv 互換関数を作成する前に、シフト JIS に変換した文字を保持するのに、String クラスを使ってしまうと、非常に具合が悪いので、文字列をバイト型配列で保持するクラスを作成します。

暗黙の型変換を定義して、String, Byte[] に変換可能にしておきます。

 using System;
 using System.Text;
 
 namespace VB60Compatible
 {
     public class VBString
     {
         private byte[] _value;
         private static Encoding encUnicode = Encoding.Unicode;
 
         private VBString(string value)
         {
             if (string.IsNullOrEmpty(value))
                 _value = new byte[0];
             else
                 _value = encUnicode.GetBytes(value);
         }
 
         private VBString(byte[] value)
         {
             _value = value;
         }
 
         public override string ToString()
         {
             if (this.LengthB == 0)
                 return string.Empty;
             return encUnicode.GetString(_value);
         }
 
         public byte[] ToByteArray()
         {
             return (byte[])_value.Clone();
         }
 
         public int LengthB
         {
             get { return _value.Length; }
         }
 
         public static implicit operator VBString(string value)
         {
             return new VBString(value);
         }
 
         public static implicit operator string(VBString value)
         {
             return value.ToString();
         }
 
         public static implicit operator VBString(byte[] value)
         {
             return new VBString(value);
         }
 
         public static implicit operator byte[](VBString value)
         {
             return value.ToByteArray();
         }
 
         public byte this[int index]
         {
             get { return m_Value[index]; }
         }
     }
 }



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2013-09-08 (日) 03:42:49 (1389d)