プログラミングC# 第7版の誤記

プログラミングC# 第7版(初版第1刷)の誤記

P.123  10行目
原文)To put it more generally, if you want to use one of your own type parameters as type argument for a generic that specifies a reference type constraint, you'll need to specify the same constraint on your own type parameter.
【誤】以上のことをもう少し一般的に言うと、型パラメータとして制約付きのジェネリックな型引数を使用する場合、同じ制約を型パラメータに指定しなければなりません。
【正】以上のことをもう少し一般的に言うと、型パラメータを、参照型制約付きのジェネリック型の型引数として使用する場合、同じ制約を型パラメータに指定しなければなりません。

P.127  下から6行目
原文)So there isn't necessarily a compiler available at the point at which an error would become apparent, because not all versions of .NET make a C# compiler available at runtime.
【誤】したがって、エラーが明らかになった時点でコンパイラが使用可能であるという保証は必ずしもないのです。なぜなら、.NETのすべての版が同じC#コンパイラのコピーとともに出荷されているわけではないからです。
【正】したがって、エラーが判明した時点でコンパイラが使用可能であるという保証は必ずしもないのです。なぜなら、.NETのすべての版がC#コンパイラを実行時に利用可能としているわけではないからです。

P.145  ページ中段
【誤】System.Collections.Generics
【正】System.Collections.Generic

P.151  5行目
原文)you'll find it generates a private nested class that acts ass the implementation for both the IEnumerable that the method returns, and also the IEnumerator that the IEnumerable's GetEnumerator method returns.
【誤】メソッドが返すIEnumerableとの両方を
【正】メソッドが返すIEnmeratorとの両方を

P.153
private static IEnumerable Fibonacci(int count)
{
【誤】if(cunt < 0)
【正】if(count < 0)


P.153  5.4.2 Collection の1文目
原文)If you look at types in the .NET class library, you'll find that when they offer properties that expose an implementation of IList they often do so indirectly.
【誤】IListの実装を要求するプロパティ
【正】IListの実装を公開するプロパティ

P.293  2行目
【誤】このpredicate は少数の
【正】このpredicate は小数の

P.293  15行目
【誤】型推量はクエリが
【正】型推論はクエリが

P.295  9行目
【誤】いくつかの異なる数字を少数
【正】いくつかの異なる数字を小数

P.300  助言の3行目
【誤】どのようなメソッドでも実行すできます。
【正】どのようなメソッドでも実行できます。

P.365  4行目
原文)In other words, this breaks the input sequence into a series of windows where each window contains zero or more nonwhitespace characters followed by one whitespace character.
【誤】言い換えると、入力シーケンスを空白文字までの0個以上の空白でない文字を持つ一連のウィンドウに分割します。
【正】言い換えると、入力シーケンスをひとつの空白文字で終わる0個以上の空白でない文字を持つ一連のウィンドウに分割します。
※もとの翻訳では「空白文字まで」が空白文字を含むか否かが曖昧なため、ここは原文を忠実に訳した方が良い。

P.404  下から4行目
【誤】そこでCLRは、はフレームの
【正】そこでCLRは、フレームの

P.406  1行目
原文)Visual Studio prepends your project's default namespace to the embedded resource stream name,
【誤】Visual Studioでは、プロジェクトにデフォルトで必要な名前空間として組み込みのリソースストリーム名をあらかじめ付与します。
【正】Visual Studioはプロジェクトのデフォルトの名前空間をリソースストリーム名の先頭に追加します。
※ prepend は「あらかじめ付与する」ではなく「先頭に付与する」がの訳が妥当。「あらかじめ付与する」の訳では、次の文の「したがって」に続かない。


P.420  下から13行目
原文)This creates an instance of a type called WithConstructor in the MyApp namespace in the assembly to which asm refers.
【誤】この例では、WithConstructor という型のインスタンスを変数asmが参照するアセンブリ内の MyApp 名前空間の中に作成します。
【正】この例では、変数asmが参照するアセンブリ内の MyApp 名前空間にある WithConstructor という型のインスタンスを作成します。


P.421  11行目
原文)public members, both instance and static
【誤】public、インスタンス、かつ、静的メンバをデフォルト指定
【正】publicな、インスタンスおよび静的メンバをデフォルト指定

インスタンス かつ 静的は成り立たない(排他的である)ので誤り。


P.432
【誤】var fakeProp = CreateProperty(
MapType(typeof(string).GetTypeInfo()).AsType(),
"偽のプロパティ",

【正】var fakeProp = CreateProperty(
MapType(typeof(string).GetTypeInfo()).AsType(),
"FakeProperty",

※ 翻訳文においても原文のコードの FakeProperty の語をそのまま参照しているので、"FakeProperty" を "偽のプロパティ" と訳す必要はない。

P.443  ページ中段
原文)You cannot derive from dynamic, because dynamism (so to speak) is an aspect of an expression, not of any particular object.
【誤】動的であるという捉え方は、特定のオブジェクトではなくその表現の特性という面から見たものなので、dynamic からは派生できません。
【正】dynamic からは派生することは出来ません。何故なら、動的であるとは、式の特性であり、特定のオブジェクトに依存するものではないからです。

※ expression は「表現」よりか「式」と訳すべき。


原文)Any object will either get dynamic behavior or not according to what kind of reference you're using it through.
【元】どんなオブジェクトでも動的な振る舞いを取るか否かは、使っている参照の種類に依存します。
【改】オブジェクトが動的な振る舞いをするかどうかは、オブジェクトへの参照の種類によって決まります。

原文)This is not something a particular instance can choose to do, and it is therefore not an aspect of an object's type, which is why it's not something you can inherit.
【元】これは、特定のインスタンスを選んで実行することではなく、それは、継承できるものでもないので、オブジェクトの型でもありません。
【改】これは、特定のインスタンスが動的であるか否かを選択できるものではなく、また、それ(動的であるということ)は、オブジェクトの型の特性でもないため、継承できるものではありません。

P.453
原文)But that's not an option for assemblies or modules, because there is no single feature that represents those in your source code
【元】しかし、ソースコードで表される単独の機能ではないので、アセンブリまたはモジュールに対しては、そのような指定はできません。
【改】しかし、アセンブリまたはモジュールに対しては、そのような指定はできません。なぜなら、それらはソースコード上で表現される単独の要素ではないためです。
※元の訳文では意味がわかり辛いため、featureを「特徴」、「機能」ではなく「要素」と訳している。

P.453  15.1.1 属性ターゲット
原文)(typically constituting the whole assembly, as I described in Chapter 12)
【誤】(通常は12章で書いたようにすべてのアセンブリを構成しています)
【正】(12章で書いたように通常はひとつのアセンブリの構成要素となります)

P.454  ページ中段
原文)I've annotated the return type here with a MarshalAsAttribute to say which particular one the CLR should expect.
【誤】ここではCLRを期待する…
【正】ここではCLRが期待する…

P.454  下から11行目
原文)The attribute in Example 15-7 applies to the field that holds the delegate for the event; without the field: qualifier, an attribute in that position would apply to the event itself.
【誤】例15-7での属性は、イベント用のデリゲートを保持するフィールドに適用されます。つまり、その位置の属性は、field:修飾子を除いた形でイベントそのものに適用されます。
【正】例15-7での属性は、イベント用のデリゲートを保持するフィールドに適用されます。なお、field:修飾子を除いた属性は、イベントそのものに適用されます。

P.455  8行目
原文)The second has nothing to do with .NET ― the compiler uses this to generate a Win32-style version resource.
【誤】2行目は、.NETでは何も行いません。つまりコンパイラは、Win32形式のバージョンリソースを生成するときにこの2行目を使います。
【正】2行目は、.NETでは何も行いません。コンパイラは、Win32形式のバージョンリソースを生成するときにこの2行目を使います。
「つまり」の接続詞は不要。意味が通じない。

P.455  最下行
原文)The version resource produced by the AssemblyFileVersion attribute is not the only information that the C# compiler can embed in Win32-style resources.
【誤】AssemblyFileVersion属性が生成するバージョンリソースは、Win32形式リソースにC#コンパイラが埋め込む情報というだけではありません。
【正】C#コンパイラがWin32形式リソースに埋め込める情報は、AssemblyFileVersion属性が生成するバージョンリソースのみではありません。

P.458  下から8行目
原文)The only difference is that I've been able to omit the property name when asking the base class to raise the event.
【誤】唯一、イベントを発生するための基底クラスを問い合わせるとき、プロパティ名を省略できるという違いがあります。
【正】唯一、イベントの起動を基底クラスに依頼するとき、プロパティ名を省略できるという違いがあります。

P.458  下から4行目
原文)so in the next few sections, I will just describe some of the most widely used examples.
【誤】したがって、次からは、広く使われている例を挙げていきたいと思います。
【正】したがって、以下では、広く使われている例を挙げていきたいと思います。

P.462  18行目
原文)but unless you're writing libraries designed to provide privileged services to partially trusted code, you won't need to apply it to your own code.)
【誤】部分的に信頼されたコードを特権のあるサービスに提供するために設計されたライブラリを作成するわけでなければ、自分のコードにこれを適用する必要はないでしょう。
【正】特権のあるサービスを部分的に信頼されたコードに提供するために設計されたライブラリを作成するわけでなければ、自分のコードにこれを適用する必要はないでしょう。

P.462  下から15行目
原文)The CLR enforces this at JIT compilation time. it will not permit transparent code to use any security-critical features.
【誤】CLRは、JITコンパイル時、任意のセキュリティクリティカルな機能を使うために透過なコードを使うことを許しません。
【正】CLRは、JITコンパイル時、これを強制します。CLRは、透過なコードに対して任意のセキュリティクリティカルな機能を使うことを許しません。

P.462  下から14行目
原文)Only other transparent code, or code marked with the SecuritySafeCriticalAttribute, will be available to you.
【誤】別な透過なコード、または、SecuritySafeCriticalAttributeが付けられたコードだけが、提供されます。
【正】別な透過なコード、または、SecuritySafeCriticalAttributeが付けられたコードだけが利用できます。

P.462  下から12行目
原文)You can apply the MethodImplAttribute to a method, passing values from the MethodImplOptions enumeration.
【誤】MethodImplOptions列挙子から値を渡されるようにメソッドにMethodImplAttributeを適用できます。
【正】MethodImplOptions列挙子のビット演算値を渡せる、MethodImplAttributeをメソッドに適用できます。
※ values は複数形であるため、【正】では「ビット演算値」と訳した。

P.482  5行目
原文)For example, I've been able to use the StreamReader and StreamWriter classes to read and write text in a file, which makes the code slightly simpler than Example 16-5.
【誤】たとえば例16-5のように、ファイルの読み書きのためにStreamReaderやStreamWriterを使用すればコード量をかなり減らすことができます。
【正】たとえば、ファイル読み書きのためにStreamReaderやStreamWriterを使うことで、例16-5よりシンプルなコードを作成することができます。


P.514  9行目
【誤】[ThreadLocal]を指定したフィールド
【正】[ThreadStatic]を指定したフィールド

P.541  4行目
原文)even if the CompareExchange succeeds, it's possible that other threads modified the value twice between your reading the value and updating it, with the second update putting things back how they were before the first.
【誤】たとえCompareExchangeが正しく実行できたとしても、値を読み取る間と更新する間に別のスレッドが値を2回変更してしまい、2回目の処理によって最初の処理が打ち消されてしまうことがあります。
【正】たとえCompareExchangeが正しく実行できたとしても、値を読み取る間と更新する間に別のスレッドによって値が2回更新され、2回目の更新によって、状態が1回目の更新の前の状態に戻されていることがあり得ます。

P.541  3段落目の最後の文
原文)Nonetheless, they incur a fraction of the cost of a lock block.
【誤】それでいて、アトミックCPU命令には…
【正】それでもなお、アトミックCPU命令には…

P.546  下から9行目
【誤】Failted
【正】Faulted

P.607  助言
原文)A StackPanel is much easier to use, of course, but it offers another, more significant benefit over the Grid equivalent.
【誤】StackPanelの方が使いやすいのですが、当然ながらGridによる実装よりもはるかに優れた利点があります。
【改】StackPanelがGridより使いやすいのは勿論ですが、StackPanelには、より重要な別の利点があります。

P.688  3行目
【誤】IntPtre型による表現ではうまく動作はしますが、
【正】IntPtr型による表現ではうまく動作はしますが、


P.704  10行目
【誤】Visual StudioがデフォルトではNo IPAモードでインポートします。
【正】Visual StudioがデフォルトではNo PIAモードでインポートします。

P.704
原文)You need to apply a [ComVisible(true)] attribute to tell the CLR that you are happy for the type to be made visible, but as long as that's in place, all of the class's public methods and properties will be available.
【誤】[ComVisible(true)]属性を適用すると、その型を可視にしてほしいとCLRに指示できます。ただし、この指定がうまく働くと、クラスのpublicメソッドとpublicプロパティがすべて利用可能となります。
→「ただし、この指定がうまく働くと」→「適切に指定する限り」

以上