[表示 : 全て 最新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/

152 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:20:27 ]
WPFはGDI+にとってかわるのかな?

153 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:24:21 ]
WPFはノウハウが全く違うから普及するのに10年ぐらいかかりそうだな

154 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:26:21 ]
Hashtableはよく使う。


155 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:37:17 ]
>>152
WPFのソフトウェアレンダリングコードはGDI+からだいぶ流用したらしい。
社内的にはとってかわってるのかもね。

156 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:41:29 ]
>>154
何か理由があって使ってるの?

157 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:43:29 ]
画像とハッシュテーブルがどうからむのかよくわからん(´・ω・`)

158 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:43:35 ]
Hashtableは名前がダサい
HashTableならいいのに

159 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:45:03 ]
C#で作ったプログラムは必ず使う側に.NETが入っている必要があるんでしょうか?

160 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:45:28 ]
いいえ



161 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:47:13 ]
.NETがいらないC#プログラムを作るにはどうしたらいいんでしょうか?
using System;とかありますがああゆうの全部.NETのクラスライブラリだとかなんですか?

そこら辺のことが書いてあるサイトとかないでしょうか

162 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:49:27 ]
>>161
無理
自分で1からコンパイラ作れば可能だけどさ

163 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:49:50 ]
>>156
マルチスレッド絡み、やや微妙な制約はあるけどね。
ほんとはjavaのConcurrentHashMapだったかみたいな
専用のがあるといいんだけど。


164 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:50:17 ]
>>161
mono

165 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:51:17 ]
>>162
コンパイラ作るだけじゃダメ
CLIを実装しないと

Silverlightは.NETじゃないといえば.NETじゃないかも

166 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:53:24 ]
>>165
C#をネイティブコードにするコンパイラがあればいいんだろ。
別にILしなければならない理由はない。

167 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:54:58 ]
ライブラリどうすんのよ…


168 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:55:00 ]
ネイティブにして、移植したライブラリを使用したとして、
その環境は .NET ではないと言えるのだろうか。

169 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:55:01 ]
すまんCLIはいらないみたい
でも言語仕様に記載されてるBCL(標準クラスライブラリ)は全部実装する必要がある

170 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:55:37 ]
c#暦1ヶ月です。
MSDNのページがさっぱり理解できないんですが、ある程度使えるようになったら読めてくるもんなのでしょうか?



171 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:58:43 ]
日本語版は理解できなくても無理はない
英語版読め

172 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:59:32 ]
つーかどこが分からんの?

173 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:59:34 ]
>>170
カンでさがしてサンプルコード張って動かしてみるのが正しい使いかた
理解するんじゃない感じるんだ

174 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:59:42 ]
クラスの解説を読めるようになるのは初心者脱出の第一歩だな
C#の言語仕様についての説明のページはVB.NETと違って初心者向けに書かれてないから結構難しい

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
意味分からん。
コードで書くとどういうこと?








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

前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