アロケータをコンストラクタと呼ぶのなら逆かしら?
http://msdn.microsoft.com/ja-jp/library/812xyxy2.aspx |
newarrが確保した領域に着目すれば0またはNothingで初期化されるなら広義のコンストラクタと呼んでもいいかも。
配列の参照アドレスを一つ目のフィールドと解釈したら+1するところを含めてコンストラクタともいえるけど、冗長だなぁと・・・。 VBの Dim newByte As Byte() = new Byte(size) {} C#の var b = new byte[size]; は互換性もたせても良かったんじゃないかと思うんですよね・・・。 http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%82%B9%E3%83%88%E3%83%A9%E3%82%AF%E3%82%BF http://msdn.microsoft.com/ja-jp/library/system.reflection.emit.opcodes.newarr.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1
【2012/11/13 00:05】| | nwpfh #29ef1c5ee9 [ 編集 ]
|
夜な夜な続きを書きますと
単にVB.NETの配列サイズの指定方法が終値に対してC#はサイズしていなので単純に+1しているだけかと |
うむむ。私の感覚は小数派なんかな。
VB6って Dim arr(3 To 5) ReDim arr2(4 To 7) ってDim () ReDim()の仕様と 後から追加された new arr(7) {} って同じ仕様にできないものを 踏襲する意味が分からないなぁと。 いまさらなんだけどねぇ。 newarrは必ず0インデックスはじまりなんだし new なんとかは要素数で良かったんじゃないかと。 Dim arr(5) って Dim arr(0 To 5)が デフォルトの Option Base 0 により「0 To 」が省略されたから Dim arr(5) ↑UBound数だと思うの。 new arr(3 To 5){} と書ける訳でもないのに new arr(要素数){}ってならないのは違和感あるんよね。 VB6からVB.Netにするときに Dim, ReDimは名残りでUBound数。 Newは新しくできたから要素数でも良かったんじゃないかと。 lboundに対応するかもとかありえるなら C#の方が後発なんだから a To b を考慮して newarrrange a b とか対応するとかもあるだろうし。
【2012/11/13 07:16】| | nwpfh #29ef1c5ee9 [ 編集 ]
|
|
忍者ブログ [PR] |