トップページ⇒tech
1001コメント320KB

ふらっとC#,C♯,C#(初心者用) Part31

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/09/29(月) 12:39:47
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

前スレ

ふらっとC#,C♯,C#(初心者用) Part30
http://pc11.2ch.net/test/read.cgi/tech/1219220127/
0232デフォルトの名無しさん2008/10/02(木) 00:56:30
>>230さん
それ>>155へのヒントですよね
メインってのを2個にすればいいんですか?
それとも現在2つあるので1つにすればいいですか?
何から何まですいません
よろしく^^
0233デフォルトの名無しさん2008/10/02(木) 01:00:06
>>232
氏ね低学歴。お前には一生プログラム無理
0234デフォルトの名無しさん2008/10/02(木) 01:00:32
書いてみるからちょっと待て
0235デフォルトの名無しさん2008/10/02(木) 01:01:05
>>233
お前は>>231を100万回読んでから氏ねカス
0236デフォルトの名無しさん2008/10/02(木) 01:01:55
>>235
質問回答以外はあおりですね
さよなら煽りくん
もうこなくていいからね
0237デフォルトの名無しさん2008/10/02(木) 01:02:59
あわわ、あわわわ
0238デフォルトの名無しさん2008/10/02(木) 01:03:58
>>155さんへ

お前が低学歴なのはこのスレの住民のせいではない
八つ当たりもほどほどにしておけよハゲ
お前はまず概念理解しろ
それすらもできない低学歴は2度と来るなカス
悔しいのか?悔しいから荒らすのか?
もっとポジティブな思考ができないのかねぇこの池沼はw
0239デフォルトの名無しさん2008/10/02(木) 01:05:01
ネットワークプログラミング相談室にいたやつだな
解決したんじゃなかったのか?
0240デフォルトの名無しさん2008/10/02(木) 01:06:02
>>236
わかったよ
あんまし怒らなくていいだろ
仲良くしよう
これからも応援よろしく^^
0241デフォルトの名無しさん2008/10/02(木) 01:11:26
>>238
質問回答以外はあおりですね
さよなら煽りくん
もうこなくていいからね
0242デフォルトの名無しさん2008/10/02(木) 01:14:34
C#の環境が今ないんだがこんな感じで動いた
てゆーかソース自体に問題は無いような…

using namespace System;
using namespace System::Diagnostics;
using namespace System::Net;
using namespace System::Text;

int main(array<System::String ^> ^args)
{
  String ^url = "http://www.yahoo.co.jp/";
  WebClient ^wc = gcnew WebClient();
  wc->Encoding = Encoding::UTF8;
  String ^src = wc->DownloadString(url);
  Console::WriteLine(src);
  delete wc;

  Console::WriteLine("エンターキーで終了。");
  Console::ReadLine();
return 0;
}
0243デフォルトの名無しさん2008/10/02(木) 01:18:34
C# だとこんなん

using System;
using System.Net;
using System.Text;

class GetTest {
public static int Main(string[] args) {
WebClient ua = new WebClient();
ua.Encoding = Encoding.UTF8;
string text = ua.DownloadString("http://www.yahoo.co.jp/");
Console.WriteLine(text);
return 0;
}
}

サイトにアクセスする前に Encoding 設定するのが良くないね
DownloadString じゃ無理なのかな
0244デフォルトの名無しさん2008/10/02(木) 01:22:20
>デバッグしたところ黒色の画面が数秒間出て終わりました
>エラー表示とかは無いです

コンソールが勝手に閉じるからだろ
0245デフォルトの名無しさん2008/10/02(木) 01:27:56
>>242
>>243
お疲れのところ本当にありがとうございます
>>243さんのコードでエラーなくリクエスト送信は成功していることを確認できました
ありがとうございます^^
0246デフォルトの名無しさん2008/10/02(木) 01:28:05
へッダから文字コード取れば?
0247デフォルトの名無しさん2008/10/02(木) 01:28:28
失せろゴミ
0248デフォルトの名無しさん2008/10/02(木) 01:33:42
>>246
GET するユーティリティの実装ってそうしてるのかな?
今回はとりあえずバイト列として読み込んでそのまま吐いて妥協

WebClient ua = new WebClient();
Stream stream = ua.OpenRead("http://www.yahoo.co.jp/");
StreamReader streamReader = new StreamReader(stream);
Console.WriteLine(streamReader.ReadToEnd());
stream.Close();
return 0;
0249デフォルトの名無しさん2008/10/02(木) 01:35:35
>>246
応援ありがとう
ヘッダから文字列取得は今日のところはやめておくよ
ここの>>155に貼り付けたのと
リクエスト成功した>>243さんのコードとの違いを調べてみるよ
ありがと
0250デフォルトの名無しさん2008/10/02(木) 01:45:37
>>249
2度とくるなカス
0251デフォルトの名無しさん2008/10/02(木) 02:06:27
うっせーはげ
0252デフォルトの名無しさん2008/10/02(木) 02:59:46
   class Program
   {
      static void Main(string[] args)
      {
         Test t = new Test();
         t.Str = new List<string>();
         t.Str.Add("dsf");
         t.Str = new List<string>();
         Console.WriteLine(t.Str.Count);
      }
   }

   class Test
   {
      public List<string> Str;
   }

問)この場合コンソールには何が表示されるでしょうか?
0253デフォルトの名無しさん2008/10/02(木) 04:07:18
List<>が万能過ぎるんだけどあえて配列使う意味ってあるの?
0254デフォルトの名無しさん2008/10/02(木) 04:24:17
配列の方が速いだろ
0255デフォルトの名無しさん2008/10/02(木) 06:21:08
>>252
何かひねったのかと思いきや予想通り0なんだけど何が言いたいの…?
0256デフォルトの名無しさん2008/10/02(木) 09:06:40
.NET 4.0って何が変わるんですか
http://msdn.microsoft.com/en-us/vstudio/products/cc948977.aspx
0257デフォルトの名無しさん2008/10/02(木) 09:18:07
>>256
それの日本語記事↓
http://itpro.nikkeibp.co.jp/article/NEWS/20080930/315630/

「詳細は,数カ月以内に発表する予定」だそうだ。
0258デフォルトの名無しさん2008/10/02(木) 10:37:40
>>253
とりあえず複数渡したい・返したいときは配列が速い
List<>を可視メンバの戻り値や引数にしたらマイクロソフトのガイドライン違反!
0259デフォルトの名無しさん2008/10/02(木) 11:11:51
Listは容量を増やす時にコピーが発生するし
最悪半分ぐらいの容量が使われてなかったりするし
気分的に嫌だから作業が終わったらすぐToArrayしちゃう
0260デフォルトの名無しさん2008/10/02(木) 11:14:52
>>258
せんせー、Enumerable.ToList がガイドライン違反ですー
0261デフォルトの名無しさん2008/10/02(木) 11:15:22
それはCollection<T>継承したの返してあとからいじれるようにしとけと
そういう意味合いだった気がするが
0262デフォルトの名無しさん2008/10/02(木) 11:25:32
生のListを渡すってことは
自分の知らないところでListの中身が増えたり減ったりするのを許容するってことだろ
じゃあそのListを管理してるのは誰なのよという話になるだろ
0263デフォルトの名無しさん2008/10/02(木) 11:35:26
>>260
同じの作ってFxCopで検査したら違反になるよ
ToListやToDictionaryはコンストラクタのヘルパみたいなもんなんだから
>>261の意味合いから考えれば問題ない
0264デフォルトの名無しさん2008/10/02(木) 11:36:56
>>259
ToArrayにする作業のほうが時間がかかったりすることはないの?

>>258
可視メンバって、privateメソッドとか?

>>262
なるほど。それはありますね

追加などの作業が終わったら、配列に戻すのがいいのかな
でも、戻り値を配列にした場合、foreach内でそのメソッドを使用するとなると
AddRangeができないから、手間ですよね?
0265デフォルトの名無しさん2008/10/02(木) 11:39:49
ガイドラインを問題にするときの可視メンバは
publicな型のpublicメンバとprotectedメンバ
0266デフォルトの名無しさん2008/10/02(木) 11:46:56
むむ、XNAでContentPipeline作ってLoad<>でList<>返してたが、もしかしてまずいのか。
0267デフォルトの名無しさん2008/10/02(木) 11:48:12
それこそ配列返せばいいじゃん
0268デフォルトの名無しさん2008/10/02(木) 11:48:14
>>265
publicで使っちゃだめなのかー
確かにわけわからなくなるもんなー
ガイドライン天才だなー
0269デフォルトの名無しさん2008/10/02(木) 11:59:57
>>266
Content.Loadってキャッシュでしょ?
弄る前提でList返すのはダメだろ
配列でも微妙だけど
0270デフォルトの名無しさん2008/10/02(木) 12:10:27
>>269
いや中身読んだら終わりなんだけど、中が配列の配列だったからさらに配列にしたくなかっただけ。
まあいったん配列にしますわ。
0271デフォルトの名無しさん2008/10/02(木) 12:21:10
ん?なんでList<>を返しちゃいけないのか詳しく
0272デフォルトの名無しさん2008/10/02(木) 12:32:22
オーバーライドできないから
フィールドじゃなくてプロパティを使うのは後で実装変えられるようにするためだけど、それと同じ
http://msdn.microsoft.com/ja-jp/library/ms182142.aspx
0273デフォルトの名無しさん2008/10/02(木) 12:33:01
>>271
List<>を返すということは元の値を直接操作してもいいよと言っているようなものだから
1人でプログラミングする分には覚えていればいいが、多分忘れる
0274デフォルトの名無しさん2008/10/02(木) 12:50:20
C#てWindows専用?
0275デフォルトの名無しさん2008/10/02(木) 12:58:11
配列で返すようにしたんだけど、foreachだと使えないんだけど
こういう場合どうすればいいんでしょうか?
あと、配列を初期化したい場合どうすればいいですか?

struct Point
{
  public int X;
  public int Y;
}


class Zahyou
{
  public void GetArray()
  {
    List<Point> pList=new List<Point>();
    .
    .
    return pList.ToArray();
  }
}

class Main()
{
  Point[] pArr;

  foreach()
  {
    pArr=GetArray();
  }
}
0276デフォルトの名無しさん2008/10/02(木) 12:59:58
>>260
そいつは新しいListを作り出すメソッドだから問題なし。
内部のListの参照をそのまま見せるのがいけない。
ただしプロパティの場合は予防的コピーを返すことも非推奨となっている。
0277デフォルトの名無しさん2008/10/02(木) 13:10:59
264とか275が何を言いたいのか良く分からない
02782752008/10/02(木) 13:19:15
Zahyouクラスで計算したPoint[]を
kitai内の座標を保存している配列にコピーしたいんだけど
やり方がわからないんです

foreach(Tekiki kitai in Guntai)
{
  kitai.PArray=Zahyou.GetArray();
}

↑だとエラーがでる

Tekikiのデータ構造を
Point[] PArray
ではなくて
List<Point> PList
にすれば簡単に追加できるんだけど
でも、publicでListを返したらだめなんですよね?
こういう場合どうすればいいの?
0279デフォルトの名無しさん2008/10/02(木) 13:29:42
>>275
voidなのにreturnしてるとか、
foreachの中に何も書いてないとかは関係してないの?
0280デフォルトの名無しさん2008/10/02(木) 13:30:17
エラーが出る(笑)
0281デフォルトの名無しさん2008/10/02(木) 13:39:58
>>275
あとclass Main()ってのもおかしいな
02822752008/10/02(木) 13:46:33
>>279
>>281
すいません。要点だけわかればと思って他はさらっと書いたので
foreach内は実際はいろいろ処理してます。
List<>を返して、AddRangeで追加していたときは普通にいけましたが
配列を返すようにしたら、どうすればいいかよくわかりません

エラー内容
'kitai' は 'foreach 繰り返し変数' であるため、このメンバを変更できません。
0283デフォルトの名無しさん2008/10/02(木) 13:48:14
どれをどこにAddRangeするのよ
02842752008/10/02(木) 13:57:52
変更点はList<>を返すところを配列を返すようにしただけです

struct Tekiki
{
 public string Name;
 public List<Point> pList;
}

class ShoriMain
{
 public void SetZahyou()
 {
  foreach(Tekiki kitai in Guntai)
  {
   kitai.pList.AddRange(ZahyouKeisan.GetZahyou());
  }
 }
}

static class ZahyouKeisan
{
 public static List<Point> GetZahyou()
 {
  List<Point> pList=new List<Point>();
  //いろいろ計算
  return pList;
 }
}

こんな感じだとうまくいきます。
GetZahyouをList<>ではなく、配列で返す方法がわからないんです
0285デフォルトの名無しさん2008/10/02(木) 14:00:56
kitai.AddRange(ZahyouKeisan.GetArray());

こんなんでいいだろ
AddRangeの中で内部のListのAddRangeを呼んでやればいい
0286デフォルトの名無しさん2008/10/02(木) 14:07:26
C#ってはやってるの?
Javaとどっちが強い?
02872752008/10/02(木) 14:13:02
>>285
それって同じことじゃないんですか?
List<>.AddRangeに配列を格納することはできないですよね?
0288デフォルトの名無しさん2008/10/02(木) 14:13:12
>>286
当然Javaの方が主流。
ただし、Winアプリを作るだけならC#3.0の方が生産性が高い。

スキルとして持っていた方が有利なのはJava、
Winアプリのみを作る状況で生産性が高いのはC#。

Javaの求人の方がまだまだ多いな。
0289デフォルトの名無しさん2008/10/02(木) 14:20:44
C#で作ったアプリって.NETだったら
linuxでもmacでも動くんだよね?
0290デフォルトの名無しさん2008/10/02(木) 14:21:04
そして結局日本で一番多いのはVB/VBA
0291デフォルトの名無しさん2008/10/02(木) 14:23:16
>>287
コレクションなら全て入れられる
配列でもなんでも
0292デフォルトの名無しさん2008/10/02(木) 14:54:19
>>291
kitai.pList.AddRange(new List<Point>(ZahyouKeisan.GetToArray()));

適当に記述してたらこれでいけたっぽいんだけど、これでいいのでしょうか?
02932752008/10/02(木) 14:57:54
>>284の部分で

struct Tekiki
{
 public string Name;
 public Point[] pArr;
}

static class ZahyouKeisan
{
 public static List<Point> GetZahyou()
 {
  List<Point> pList=new List<Point>();
  //いろいろ計算
  return pList.ToArray();
 }
}

こういう場合foreach内はどう記述すればいいですか?
0294デフォルトの名無しさん2008/10/02(木) 14:59:56
>>282
> エラー内容
> 'kitai' は 'foreach 繰り返し変数' であるため、このメンバを変更できません。

このエラーが重要。

foreach(Kitai kitai in Guntai){
kitai = Zahyou.GetArray(); // (A)
}

(A)のように、foreachの()内部で宣言した変数は
変更できない。だから、エラーがでてるんだと思う。

これが、

foreach(Kitai kitai in Guntai){
kitai.pArr = Zahyou.GetArray();
}

のように、変数のメンバーとかなら変更可能。
02952942008/10/02(木) 15:01:39
あれ。違うか。
メンバも変更出来ないんだっけ?
0296デフォルトの名無しさん2008/10/02(木) 15:10:07
違う。
foreach(var item in collection)
のitem変数はコレクション内のオブジェクトのコピーだから、
構造体配列等の値型のコレクションにおいてそれをやってもダメだよ〜って話。
変数のメンバといってもその変数自体がコピーされたものだから、メンバを変更しても
元のコレクションには当然反映されない。

参照型のコレクションだったらコピーされた変数はそのまま参照が渡されているので、
foreach内でメンバの変更が可能となる。

せっかくC#を使っているのにCでゴリゴリ書いているコードとレベルが変わらんぞ。
02972942008/10/02(木) 15:10:48
structだと変更不可能なようですorz

だとすると、forで回すのがよさそう。

for(int i = 0; i < Guntai.Length; ++i){
Tekki kitai = Guntai[i];
      kitai.pArr = ZahyouKeisan.GetArray();
   }
0298デフォルトの名無しさん2008/10/02(木) 15:13:19
kitai.pList.AddRange(new List<Point>(ZahyouKeisan.GetToArray()));
まずnew Listはいらない
kitai.pList.AddRange(ZahyouKeisan.GetToArray());

pListを直接公開するのはオススメしない

>>293
List<Point>を返すメソッドで配列を返しちゃいけない
AddRangeでPointを増やしていく予定があるならpArrは配列にすべきじゃない
あとZahyouKeisanクラスがkitaiの情報をもっていないのに
Zahyouを返せる理由が分からない
02992942008/10/02(木) 15:22:29
>>296
解説どうもです。
0300デフォルトの名無しさん2008/10/02(木) 15:35:35
>>293
どうしても配列でやりたいみたいだから書いてみた。

void ShoriMain(){
int now_enemyCount = enemy.pArr.Length;
Point[] tmpArr = ZahyouKeisan.GetZahyou();
int add_enemyCount = tmpArr.Length;
int new_enemyCount = now_enemyCount + add_enemyCount;
//配列の長さを変更
Array.Resize(ref enemy.pArr, new_enemyCount);

//新しい配列を末尾に追加
int count = now_enemyCount;
for (int i = 0; i < tmpArr.Length; i++)
{
count += i;
enemy.pArr[count] = tmpArr[i];
}
}

struct Tekiki{
 public string Name;
 public Point[] pArr;
}
static class ZahyouKeisan{
 public static Point[] GetZahyou(){
   List<Point> pList=new List<Point>();
  //いろいろ計算
  return pList.ToArray();
 }
}
0301デフォルトの名無しさん2008/10/02(木) 15:38:06
変数名が now_enemyCount と new_enemyCount ってのは殺人的だぞ
03023002008/10/02(木) 15:42:45
VS2008使ってるなら拡張メソッド使ってもうちょっと楽に書けそうだな。

Tekiki enemy = new Tekiki();

void ShoriMain(){
enemy.pArr.Concat(ZahyouKeisan.GetZahyou());
}

struct Tekiki{
 public string Name;
 public Point[] pArr;
}
static class ZahyouKeisan{
 public static Point[] GetZahyou(){
   List<Point> pList=new List<Point>();
  //いろいろ計算
  return pList.ToArray();
 }
}
0303デフォルトの名無しさん2008/10/02(木) 15:59:34
あまりにも汚いコードなんで俺が書き直してやったぞ

struct Tekiki
{
public string Name;
public void AddPoints(IEnumerable<Point> newPoints){
this.pList.AddRange(newPoints);
}
private List<Point> pList;
public Point[] pArr{
get { return pList.ToArray(); }
}
}

class ShoriMain
{
public void SetZahyou(){
foreach (Tekiki kitai in Guntai){
kitai.AddPoints(ZahyouKeisan.GetZahyou());
}
}
}

static class ZahyouKeisan
{
public static List<Point> GetZahyou()
{
List<Point> pList = new List<Point>();
//いろいろ計算
return pList;
}
}
03043002008/10/02(木) 16:07:17
あー悪い、>>303は俺です。

当然GetZahyou関数がTekkiの座標計算関係のみに使うのであれば、
Tekiki構造体のstaticメンバにしてもっと簡潔に書くことも出来る。

struct Tekiki
{
public string Name;
public void AddPoints(IEnumerable<Point> newPoints){
this.pList.AddRange(newPoints);
}
private List<Point> pList;
public Point[] ZahyouArr{
get { return pList.ToArray(); }
}
public static List<Point> GetZahyou(){
List<Point> pList = new List<Point>();
//いろいろ計算
return pList;
}
}

class ShoriMain
{
List<Tekiki> Guntai = new List<Tekiki>();
public void SetZahyou(){
foreach (Tekiki kitai in Guntai){
kitai.AddPoints(Tekiki.GetZahyou());
}
}
}
0305デフォルトの名無しさん2008/10/02(木) 16:50:39
だめだめじゃないか

- GetZahyouメソッド
  × 戻り値がList<T>
- ZahyouArrプロパティ
  × 型が配列
  × ToArrayが内部状態のコピーとみなせる

てか、それ以前に値型使ってること自体が不適切という指摘をしてあげないと
ttp://msdn.microsoft.com/ja-jp/library/ms229017.aspx
0306デフォルトの名無しさん2008/10/02(木) 17:02:04
WebBrowserコントロールで、DocumentCompleteを使ってElementにマウスイベント登録すると、
javascriptトリガー用の"href=http://hoge.com/#"をクリックしたときにまでNavigate系のイベントが発生するようになるんだが、
コレは仕様なの?(登録先がBody又は対象のA要素のとき発生)
しかも結果的にナビゲートに失敗するから困ってる。

イベント登録しなければ発生しないみたい。
またハンドラの中身が空でもなるみたい。
誰か回避方法知らない?
03073002008/10/02(木) 17:47:30
>>305
すまん良く分からないんだが、戻り値がList<T>の関数がガイドライン違反なのか?
リンク先を見てみたがその記述はどこにあるの?
この場合は特に問題ないと思うんだけどなあ。

ZahyouArrプロパティについても、配列を返すプロパティがもしかしてガイドライン違反?
っていうか俺よくList<T>のカプセル化のときにこういうプロパティをよく使ってた・・・
インデクサを使えってことなのかな。

仮に返されるものが参照型の配列だったりしたら内部を変更される可能性があって良くないとは思うけど、
この場合は構造体の配列だし、private List<Point> pListについては安全なように見えるんだけどな。
内部状態のコピーが危険なのは参照型コレクションだけとかではないの?
いまいち納得出来ん。

まあTekiki構造体についてはクラスにすべきだと言う意見は納得できる。
0308デフォルトの名無しさん2008/10/02(木) 17:52:37
グーグーレーカースー
03093002008/10/02(木) 18:09:52
オーケー分かった。

配列を返す操作と内部状態のコピーの時はメソッドを使用して下さいと書いてあったな。
ZahyouArrプロパティ
の代わりに
public Point[] GetZahyouArr(){
return pList.ToArray();
}

とでもしておくか。

しかし戻り値がList<T>のメソッドは使うなという記事は見つけられんかった。
リンク先おせーてくれよ。
0310デフォルトの名無しさん2008/10/02(木) 18:11:36
その代用で使う
〜Collectionってやつがうざい
0311デフォルトの名無しさん2008/10/02(木) 18:22:46
俺もList<T>を返すメソッドを書く事はある
だめだというガイドラインがあるなら俺も知りたい
0312デフォルトの名無しさん2008/10/02(木) 18:24:22
リスト返したらセットアクセッサが無意味化するぞ
0313デフォルトの名無しさん2008/10/02(木) 18:28:44
?
0314デフォルトの名無しさん2008/10/02(木) 18:29:29
とゆーかカプセル化が崩壊
0315デフォルトの名無しさん2008/10/02(木) 18:30:56
ジェネリック リストを公開しません
http://msdn.microsoft.com/ja-jp/library/ms182142.aspx
Code Analysis Team Blog : FAQ: Why does DoNotExposeGenericLists recommend that I expose Collection<T> instead of List<T>? [David Kean]
http://blogs.msdn.com/fxcop/archive/2006/04/27/585476.aspx

だそうです。
0316デフォルトの名無しさん2008/10/02(木) 18:31:05
>>275
特別にいいもの教えてやる。

っ インデクサ
0317デフォルトの名無しさん2008/10/02(木) 18:32:13
"do not return list" c# とか適当な英文でググるといいよ
ttp://blogs.msdn.com/kcwalina/archive/2004/03/15/89860.aspx
0318デフォルトの名無しさん2008/10/02(木) 18:35:34
>>315
それはprivateフィールドのList<T>を公開するなってことでしょ?
そんなことがまずいのはみんな知ってるだろw

static List<Point> GetZahyou()
{
List<Point> pList = new List<Point>();
//いろいろ計算
return pList;
}

このメソッドがガイドライン違反というのが納得できないだけ。
中でnewしたListをいろいろ計算して、その結果を返すメソッドがガイドライン違反という説明にはなってない。
0319デフォルトの名無しさん2008/10/02(木) 18:41:49
計算結果を返すだけなら別にいいんじゃね
それをどういじくろうが誰も困らないし
0320デフォルトの名無しさん2008/10/02(木) 18:45:04
constがないからな
0321デフォルトの名無しさん2008/10/02(木) 18:46:05
List<T>返す云々以前にまずまともな設計をするべき
0322デフォルトの名無しさん2008/10/02(木) 18:49:40
>>318
わざわざList<T>で返されたら追加することに意味があるのかと思っちゃうじゃないか……
0323デフォルトの名無しさん2008/10/02(木) 18:54:56
>>273
List<>を返すのも配列を返すのもかわらなくね?
結局どうすればいいんだろ
0324デフォルトの名無しさん2008/10/02(木) 18:57:16
パフォーマンスを考えればToArrayしとくべきだろ
で、引数や返り値の配列は変更しないというのは暗黙の了解にしとく
0325デフォルトの名無しさん2008/10/02(木) 18:59:55
Dictionary.ValueCollection みたいに
0326デフォルトの名無しさん2008/10/02(木) 19:01:04
>>323
だよね
わざわざ、ToArrayしてまたList<>にいれるわけでしょ?
変換するのは無意味な気がするんだが
0327デフォルトの名無しさん2008/10/02(木) 19:03:32
> わざわざ、ToArrayしてまたList<>にいれるわけでしょ?
これが言い切れるようなinternalな場合はどうでもいいよ
0328デフォルトの名無しさん2008/10/02(木) 19:03:52
書き込み可能な配列で返すのもよろしくない。
0329デフォルトの名無しさん2008/10/02(木) 19:19:57
それを言ったらオブジェクトを返すこと自体良くないきがするんだが
0330デフォルトの名無しさん2008/10/02(木) 19:21:55
たとえば>>325のは返す本人以外は要素の取得しか出来なかったりする
0331デフォルトの名無しさん2008/10/02(木) 19:25:54
親戚も弄れるけどなw
■ このスレッドは過去ログ倉庫に格納されています