書籍紹介ページ:http://www.ascii.co.jp/books/detail/4-7561/4-7561-4091-2.html
ASCIIの正誤表ページ:http://www.ascii.co.jp/books/support/4-7561-4091-2/errata/
ASCIIのダウンロードページ:http://www.ascii.co.jp/books/support/4-7561-4091-2/supplement/
おまけPDFは校正完了前のおまけなので正誤表については省略します
168ページの次の節は、大間違いです。
string
は、C#の仕様では、CLI(マイクロソフトの場合は.NET Framework)で定義されたSystem.String
の別名に過ぎません。しかし、C#の文法で型を示すキーワードとして定義されているstring
を用いるほうが、言語仕様に沿った記述方法だと考えられます。背景)一言で言えば、調査不足と読解力不足ということですが、ECMAドラフトの最初のところに、マイクロソフトでは.NET Framework上に実装しているが代替となるCLIで……みたいな記述があったもので、つい、CLIにBase Class Libraryが含まれるとか、そもそも言語仕様にエイリアスだと明記してある点を軽視して、元の文章ような誤ったことを書いてました。ごめんなさい。
以下の誤植タイポや書き間違いの指摘は、あおき様からです。どうもありがとうございます。ちなみにRHGのあおきさんではありません。
キャプチャ元がβ2のままでした。
new StreamReader("C:\\Temp\\Test.Txt", new Encoding(932));
new StreamReader("C:\\Temp\\Test.Txt", Encoding.GetEncoding(932));
internal delegate MyEvent(string arg);
internal delegate void MyEvent(string arg);
return (string[])dragevent.Data.GetData(DataFormats.FileDrop);
return (string[])dragEvent.Data.GetData(DataFormats.FileDrop);
P.280〜281囲み記事 補足
FileInfoクラスのCreateメソッドとOpenReadメソッドはFileStreamクラスを返送するため、以下のようにStreamReaderまたはStreamWriterのコンストラクタへ返送されたFileStreamのインスタンスとエンコーディングを指定することができます。これにより、FileInfoオブジェクトの列挙処理とエンコーディングを指定したファイル処理が同時に記述できます。
using System; using System.IO; using System.Text; public class TextRead { public static void Main(string[] args) { DirectoryInfo di = new DirectoryInfo(args[0]); foreach (FileInfo fi in di.GetFiles("*.txt")) { using (StreamReader r = new StreamReader(fi.OpenRead(), Encoding.GetEncoding(932))) { for (;;) { string s = r.ReadLine(); if (s == null) break; Console.WriteLine(s); } } } } }