[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/09 13:25 / Filesize : 190 KB / Number-of Response : 890
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:44:27 ]
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

ふらっとC#,C♯,C#(初心者用) Part23
pc11.2ch.net/test/read.cgi/tech/1200033660/

175 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:00:11 ]
なんでC#ってネイティブコード吐けないんだろ

176 名前:161 mailto:sage [2008/02/05(火) 23:00:46 ]
monoはうにx版.NETみたいな感覚でした、それは置いておいて無理ですか、把握しましたありがとう

177 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:01:40 ]
無理じゃないと言っているのだが。

178 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:01:44 ]
>>175
.NETを使うために作られた言語だから

179 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:01:45 ]
一応マルチプラットフォームを考えてるんだろうが、
だったら MS が色んなプラットフォームで処理系作りやがれと。

180 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:02:45 ]
吐けないんじゃない。吐かないだけ。

181 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:03:27 ]
馬鹿でかいBCLが障害

182 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:03:51 ]
>>175
フレームワーク使う言語としては正しいけどね・・・

183 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:04:12 ]
>>177
馬鹿?



184 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:04:17 ]
ネイティブコード吐ければもっと普及すると思う

185 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:04:54 ]
何でネイティブコードにこだわってるんだ?馬鹿なの?

186 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:05:26 ]
>>185
そこは突っ込みどころと違う

187 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:06:24 ]
>>185
バカはお前だろ

188 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:06:35 ]
そもそも.NETを普及させるための言語なわけだから
ネイティブコードを吐けるようにして普及を図ったところで意味がない

189 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:07:04 ]
CPU ごとに別のマシン語はかないといけないとなると
処理系作るの面倒だし・・・。

190 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:07:04 ]
もう.NETとかいう思想自体が古いけどな

191 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:08:17 ]
>>175
いきなりネイティブコード吐くとリフレクションやLCGと相性悪そうだがその辺考えてみた?

192 名前:170 mailto:sage [2008/02/05(火) 23:08:26 ]
MSDNの読み方というか、歩き方みたいなのがいまいち分からんのです。
ググる時も、大抵先頭にくるMSDNはなるべく避けて、@ITとかのサイトに逃げてます・・・
機械翻訳ぽいのがどうにも

193 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:08:32 ]
>>190
何が古いんだ?具体的にどうぞ。



194 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:10:18 ]
新しいのが出てないのに古いとはなかなか言い辛いでしょう

>>192
俺がMSDN渡り歩けるようになったのはプログラミング歴5年目くらいです
非常に遅いな

195 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:10:32 ]
というかネイティブコードじゃないこととフレームワークは関係ないだろ。

196 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:12:17 ]
>>192
基本的にMSDNはリファレンス。辞書。
分からないときに引くものであって、教科書じゃない。
MSDN2になって翻訳は随分まともになったと思うが。

197 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:13:07 ]
>>192
@ITは正しい選択

198 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:13:54 ]
まあ変なVB系Tipsサイトよりは

199 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:14:04 ]
そしてブーデー川俣の記事読むのか

200 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:17:31 ]
.NET Tipsで十分場合が多い

201 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:18:13 ]
緑のバイク

202 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:19:46 ]
C#、でぐぐってでた1ページ目が日本語C#情報の9割だと思う俺

203 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:20:18 ]
むしろ9割9分くらいだろ



204 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:24:27 ]
何件表示するかの設定によるんじゃ

205 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:54:25 ]
多次元配列の初期化で、配列初期化子は変数かフィールド初期化子の中でのみ使用できます。新しい式を使用してください。
というエラーが取れなくて困っています。
int[ , ] hoge = new int[ , ] {
 { 1, 2 },
 { 1, 2 }
};
は問題ないのに、
int[][ , ] hoge = new int[][ , ] {
 { new int[]{ 1, 2 }, new int[]{ 1, 2 } }, // ★
 { new int[]{ 1, 2 }, new int[]{ 1, 2 } }, // ★
};
とすると、★の行を指して上記のエラーがでます。
intからint[]に型を変えただけだと思っているのですが、何が違うのでしょうか。

206 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:58:49 ]
>>205
int[]の[,]なんだから逆
int[,][]

207 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:00:10 ]
基本やり直し。

配列初期化子ってわかる?

208 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:01:33 ]
>>207
お前は分かってるのかよ。わかってるなら書け。

209 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:01:51 ]
>>207
そんな大げさな間違いじゃない

210 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:03:03 ]
>>206
ほんとだ…
ありがとうございます。

211 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:21:43 ]
>>179
いろんなプラットフォームありますよ。
x86, x64, IA-64
.NET Compact Framewrok
.NET Micro Framework
どれもWindows上というのはご愛敬w。

後は申し訳程度にSSCLIがFreeBSD対応だった気がする。

212 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:23:00 ]
Linuxはmonoがあるしなぁ
MSも支援してるし

213 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:25:52 ]
質問した当人ですがあらゆるWindows上で使えたらなぁとか思ってました



214 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:26:23 ]
フィールドって言葉がイマイチなじめない
メンバ変数って言いたくなる

215 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:46:59 ]
>>213
「あらゆるWindows」ってなにがあるの?

216 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:48:40 ]
Windows1.0

217 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:49:29 ]
ごめんなさい凡そ今いるWindowsユーザーです
だから.NETなくて良いって条件さえあればVistaは知らないけどいけるかな

218 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:49:50 ]
最後にとが抜けたorz

219 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:50:30 ]
.net入れればいいじゃん。

220 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 01:13:06 ]
今時.NETくらい誰でも入れてるだろ、とかいう認識の俺はだめなんだろうな

221 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 01:14:33 ]
.NET程度が使えない環境は切り捨てられるべき

222 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 01:24:51 ]
private void foo(string hoge, string piyo)
{
 いろいろ処理
 foo(fuga, hogehoge);
}



private void foo(ref string hoge, ref string piyo)
{
 string hoge0 = hoge;
 string piyo0 = piyo;
 いろいろ処理
 foo(ref fuga, ref hogehoge);
}

どっちが良いんでしょうか?
渡す文字列は100文字程度で再帰による関数の呼び出しは100~5000回くらいです
後者が良い気がするのですが、文字列100文字程度なら前者のがいいのかなぁと考えてます

223 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 01:26:39 ]
やっとまともな質問だなw

後者でいいよ、むしろなんで前者選ぼうと思ったの?



224 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 01:27:31 ]
      ___    ━┓
    / ―\   ┏┛
  /ノ  (●)\  ・
. | (●)   ⌒)\
. |   (__ノ ̄  |
  \        /
    \     _ノ
    /´     `\
     |       |
     |       |

225 名前:222 mailto:sage [2008/02/06(水) 01:28:48 ]
>>223
やっぱりそうですか

>>224
参照渡しって初めて知りまして、なんかやばいですか?

226 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 01:29:08 ]
5000plyも呼べたっけ?

227 名前:222 mailto:sage [2008/02/06(水) 01:31:12 ]
実際はあんな形ではないんですが、想定してるのは5000回くらいまでです

228 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 01:31:22 ]
ああ末尾ね

229 名前:222 mailto:sage [2008/02/06(水) 01:36:42 ]
すみません、fugaとhogehogeはいろいろ処理、と書かれてる部分で引数を元に
値を設定されたstring型です

230 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 01:43:15 ]
>>225
なんかやばいかどうかは使いどころ

たとえば,参照渡しだと副作用完了点が関数内部まで拡大する可能性がある.
 2*n*val_func(n) ≠2*n*ref_func(n)

かもしれない

231 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 01:48:55 ]
とりあえず自宅のC#3.0で下記を試したら,一つだけ結果違った
static void Main(string[] args) {
    int n;
    n = 5;
    Console.WriteLine(2 * n * valfunc(n));
    n = 5;
    Console.WriteLine(2 * n * reffunc(ref n));

    n = 5;
    Console.WriteLine((2 * valfunc(n)) * n);
    n = 5;
    Console.WriteLine((2 * reffunc(ref n)) * n);
    Console.ReadLine();
}
private static int valfunc(int n)     { n = -n; return n; }
private static int reffunc(ref int n) { n = -n; return n; }

あと再帰に関してはrefもvalも計算コストはそんなに変わらないと思っている.
とある言語の実装だと「refは,呼び出し元でコピーした変数を値渡しして,戻ってきたら本物に上書き」みたいなことやってたみたい.

232 名前:222 mailto:sage [2008/02/06(水) 01:53:51 ]
参照渡しじゃなくてポインタ使えればなぁ、と思うんだけどそうもいかないんですよね

>>230
それだと非常にやばいです、それとあまり差がないんですか、ありがとうございます
どの道わからなければ安全そうな値渡しにしようと思ってたのでこれでいってみます
ありがとうございました

233 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 02:05:19 ]
C#ってオブジェクト渡しは全部参照渡しみたいなもんじゃないの?



234 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 02:07:22 ]
参照型は参照渡し
値型は値渡し

235 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 02:07:53 ]
FileInfoとか渡したらどうなるんだろうね

236 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 02:09:55 ]
参照だろ

237 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 07:28:13 ]
stringは参照渡しだからrefなんざつけんでいい
stringの代入はコピーではなくポインタを代入してるだけ

238 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 07:40:12 ]
>>232
stringを渡すときrefつけるのとつけないので結果が変わる場合があるのはわかってる?

239 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 08:23:49 ]
>>234
参照型を値で渡すのと参照渡しは違うよ。
揚げ足取りじゃなくて全然違う。

240 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 09:26:56 ]
なぜ説明を書かないのだろう。

241 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 09:59:58 ]
揚げ足取りだから

242 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 10:34:02 ]
MSDNでrefで検索して最初に出て来るページにすっかり書いてあるだろJK

243 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 11:03:23 ]
メソッド内で生成された参照型のインスタンスへの参照を、呼び出し元で受け取るには、refなりoutなりを使って参照の参照を渡す必要がある。(returnは別として)
呼び出し元で作成したインスタンスを操作するなら、インスタンスの参照を渡せばいいから、refはいらない。

引数をメソッド内で変更したい場合、Stringみたいに操作する度に新しいインスタンスが生成されるタイプのクラスは前者。StringBuilderみたいに新たなインスタンスを生成せずに操作できるタイプのは後者。



244 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 11:16:06 ]
読み返してみるとくどくて意味不明だな。すまん。
徹夜明けだからもう寝るわ。

245 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 14:51:23 ]
using System;
using System.Text;

namespace ConsoleApplication1{
  class Program
  {
   static void Main(string[] args)
   {
    StringBuilder strbld = new StringBuilder("Start");
    EditValue(strbld);
    Console.WriteLine(strbld.ToString()); //出力:Start+Edit

    ChangeValue(ref strbld);
    Console.WriteLine(strbld.ToString()); //出力:Changed

    NotChangeValue(strbld);
    Console.WriteLine(strbld.ToString()); //出力:Changed

    Console.ReadKey(true);
   }
   static void EditValue(StringBuilder value)
   { value.Append("+Edit"); }

   static void ChangeValue(ref StringBuilder value)
   { value = new StringBuilder("Changed"); }

   static void NotChangeValue(StringBuilder value)
   { value = new StringBuilder("NotChanged"); }
  }}

こういうことか。勉強になった。Thx

246 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:00:13 ]
違うだろ

247 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:06:43 ]
参照型の参照渡しはポインタtoポインタ(**object)だな
まぁ,C風に覚えてもかまわないと思われ

248 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:16:11 ]
>>246
どう違うの?
出力結果を見ると違わないんだけど。
アホにも分かるように教えてくれ。

249 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:22:19 ]
>>248
>>246 ではないが NotChangeValue の後が違うかと。

250 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:29:56 ]
ん?stringもref stringも
関数内で引数を書き換えなきゃ変わらんだろ

251 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:48:50 ]
あーそうか、ChangeValueとかNotChangeValueとかいう関数名が分かってないようにとられた原因か。
ChangePtrとNotChangePtrに名前を変更して読んでちょうだい。

上記二つのメソッドは参照の参照を変更しようとしているから、
参照渡しをしないNotChangePtrの方は当然参照が変更されない

EditValueというメソッドは、参照型を値渡しで受け取り、それのインスタンスメソッドによって
インスタンス自身が変化する。

こういう認識でいいんだよね?

252 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:51:24 ]
>>250
意味分からん。
コードで書くとどういうこと?



253 名前:デフォルトの名無しさん [2008/02/06(水) 15:52:24 ]
他Formから値を参照したいのだがわからないww
初心者過ぎて笑われそうだが…
Form1,2で
1に設置しているRadiobuttonをCheckすることで
2に値の変化を与えたい。
わかりにくい説明ではあるが誰か教えてくださいな^ω^



254 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:53:18 ]
>>249
コンパイルして走らせてみた?
出力結果は間違いないよ?

255 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:53:45 ]
>>253
C#の基礎というかプログラミングの基礎のページ見て来い

256 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:55:22 ]
>>253
"デリゲート"でググれ

257 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:59:35 ]
すまんID出ないんだったな。

>>245
>>248
>>251
>>254

全部同一人物です。
以後コテハン245になるとしよう。




258 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:00:24 ]
>>250
static void Main( string[] args )
{
    string str = "250 は";
    Manuke( str );
    Console.WriteLine( str );
    Teinou( ref str );
    Console.WriteLine( str );
    Console.ReadKey();
}

static void Manuke( string s )
{
    s = "間抜け";
}

static void Teinou( ref string s )
{
    s = "低能";
}


259 名前: [2008/02/06(水) 16:03:50 ]
ありがとっす^ω^

260 名前: [2008/02/06(水) 16:05:29 ]
あっ
>>253
ですww
困ったらまたきますんでw

261 名前:254 mailto:sage [2008/02/06(水) 16:05:47 ]
>>258

禿同。

参照渡しと値渡しの違いって中級者でも分かってない人が多いって記事をどっかで見たことある。

262 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:06:01 ]
>>258
そんなレベルの話してたのか?

263 名前:262 mailto:sage [2008/02/06(水) 16:07:05 ]
あ、値渡しはともかく参照渡しってCのアドレス(ポインタ)渡しと結局同じだと思ってたけど違うの?って意味な



264 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:08:55 ]
>>258
だからそうやって引数を書き換えなきゃ同じだろ

265 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:11:19 ]
>>264
彼らは参照渡しは知ってても使い方を知らないんだろう

266 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:13:00 ]
>>258が話の流れと日本語を読めないってことだけは分かった

267 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:14:53 ]
>>263
まあ凡そ。
それを大前提に進んでた話なんだけど>>258が爆発した

268 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:16:08 ]
かわいそうな>>258がいるスレ

269 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:27:43 ]
で、話の大元の>>222に立ち返ったとして何を議論してたんだっけ?



270 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:32:29 ]
>>222は前者でいいってことじゃね
余計な副作用を与えないために

271 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:05:58 ]
>>247
というか、むしろそのほうが分かりやすいような気が
「参照情報」なんて回りくどい言い方せずに、「アドレス」って言ったほうがイメージが伝わりやすいような

272 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:36:51 ]
>>271
根本に返って冷静に考えてみ。
アドレスの方が本来間接的な表現な上に間違ってるでしょ。

参照をもし言い換えるのなら、俺なら「位置情報」と言うな。

273 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:37:58 ]
いやそりゃアドレスじゃん、英語のアドレスが住所としか略されないとでも思ってるのか?



274 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:38:52 ]
位置情報を英語に置き換えりゃアドレスになんだろ
機械翻訳で訳される2単語が実用される英語だとでも思ってんのかね

275 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:40:47 ]
>>272
厳密な意味ではいろいろあるだろうけど、初心者にとっては直感的にはアドレスが一番しっくりくると思うが






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<190KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef