- PR -

IP通信のポート番号と .NETの型

1
投稿者投稿内容
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-02-11 14:39
お世話になります。
.NET Framework 2.0 のクラスライブラリを眺めています。

たとえば System.Net.Sockets.TCPClient.Connect メソッド の引数や、
System.Net.Mail.SmtpClient.Port プロパティ は System.Int32 型で値を受け取るようです。

これらの項目はポート番号をセットするために用意されているということで、
渡すことのできる数値は 0 から 65535 までの範囲であると理解しています。

65535以下の数値を要求するのであれば、System.Int32 よりも System.UInt16 の方が
より相応しい型ではないかと思うのですが、なぜそうなっていないのでしょうか。

System.UInt16 は CLS に準拠していないということなので、それが理由でしょうか。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-11 17:25
引用:

ueさんの書き込み (2006-02-11 14:39) より:

System.UInt16 は CLS に準拠していないということなので、それが理由でしょうか。


もう答えが出ていますね。

引用:

System.UInt16 構造体 より:

この構造体は、CLS に準拠していません。


System.Int16 では 65536 までは扱えませんが、
System.Int32 であれば、扱うことができます。

また、1.1 時代のリファレンスには、UInt16 の説明として、

> UInt16 型は CLS との互換性がありません。
> CLS との互換性が必要な場合は、代わりに Int32 を使用してください。

と、しっかり書かれています。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-02-11 17:28
じゃんぬねっとさん、返信ありがとうございます。
得心しました。
1

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