2009/04/29(Wed) 18:18:46 編集(投稿者)
よねKENさんの投稿で解決チェックが外れているので、
再チェックがてら、蛇足情報を追記。
■No35417 (pirosuke さん) に返信
>>>自分の英語力不足から、byte型等の~演算子使用時の型変換について記述を見つけることができませんでした。
>>英語版を読むのが辛いのであれば、先に日本語版に目を通しておくとか。
>>C:\Program Files\Microsoft Visual Studio 8\VC#\Specifications\1041\C# Language Specification 1.2.doc
> 日本語版があったんですか・・・
> msdnに英語版しかなかったんでこれしかないのかと思ってました。
英語版 Visual Studio をインストールしている場合には、VC#\Specifications\1033、
日本語版Visual Studio をインストールしている場合には、VC#\Specifications\1041 に、
それぞれ言語仕様書が入っていますね。
ダウンロード センターからは、この程度しか見つかりませんでした。
[C# バージョン 3.0 仕様 2005年9月]
http://download.microsoft.com/download/B/6/C/B6C2DA74-08F9-4B18-BB10-CF6DB1A5CFE2/csharp_30_specification.doc
[C# Language Specification Version 3.0]
http://download.microsoft.com/download/3/8/8/388e7205-bc10-4226-b2a8-75351c669b09/csharp%20language%20specification.doc
[C# Version 3.0 Specification September 2005]
http://download.microsoft.com/download/9/5/0/9503e33e-fde6-4aed-b5d0-ffe749822f1b/csharp%203.0%20specification.doc
[C# Version 2.0 Specification September 2005]
http://download.microsoft.com/download/9/8/f/98fdf0c7-2bbd-40d3-9fd1-5a4159fa8044/CSharp%202.0%20Specification_Sept_2005.doc
[C# Language Specification Version 1.2]
http://download.microsoft.com/download/5/e/5/5e58be0a-b02b-41ac-a4a3-7a22286214ff/csharp%20language%20specification%20v1.2.doc
[C# Language Specification Version 1.0]
http://download.microsoft.com/download/a/9/e/a9e229b9-fee5-4c3e-8476-917dee385062/CSharp%20Language%20Specification%20v1.0.doc
> uncheckedなんてあったんですか。
> 調べたら知らないステートメントがたくさん。
この場合の unchecked は演算子です。unchecked ステートメントの方は、
unchecked
{
byte x = (byte)-1;
}
というブロック構造を取ります。言語仕様書でいうとこのあたり。
5.3.3.2 Block statements, checked, and unchecked statements
5.3.3.2 ブロック ステートメント、checked ステートメント、および unchecked ステートメント
7.5.12 The checked and unchecked operators
7.5.12 checked 演算子と unchecked 演算子
8.11 The checked and unchecked statements
8.11 checked ステートメントと unchecked ステートメント
コンパイラオプションでの指定も可能です。
http://msdn.microsoft.com/ja-jp/library/h25wtyxf.aspx
ちなみに、言語仕様書には記載されていないキーワードも幾つか存在します。
これらは、Visual Studio の C# エディタ上では、予約語の色(通常は青)で表示されます。
__arglist
__makeref
__reftype
__refvalue
using System;
class Program
{
static void Main()
{
// System.Console クラスの、下記のオーバーロードを呼び出す。
// public static void WriteLine(string format, object arg0, object arg1, object arg2, object arg3, __arglist)
Console.WriteLine("{0},{1},{2},{3},{4},{5},{6}", 10, 11, 12, 13, __arglist(20, 21, 22));
Console.WriteLine("---可変長引数リスト---");
Foo1(__arglist(DateTime.Now, "test", 0x1234));
Console.WriteLine("---型付き参照---");
Foo2(new Random().Next());
Console.ReadKey();
}
static void Foo1(__arglist)
{
ArgIterator argIterator = new ArgIterator(__arglist);
while (argIterator.GetRemainingCount() > 0)
{
Console.WriteLine("\t{0}", TypedReference.ToObject(argIterator.GetNextArg()));
}
}
static void Foo2<T>(T arg)
{
TypedReference tr = __makeref(arg);
Type type = __reftype(tr);
T val = __refvalue(tr, T);
Console.WriteLine("\tType = {0} / {1}", typeof(T), type);
Console.WriteLine("\tValue= {0} / {1}", arg, val);
}
}