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


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

C#, C♯, C#相談室 Part91



1 名前:デフォルトの名無しさん [2016/06/29(水) 04:39:09.19 ID:sT3gw8va.net]
■Visual Studio 2013 Community & Express(無償の統合開発環境)等はこちら
www.visualstudio.com/downloads/

■コードを貼る場合はこちら
ideone.com/

■前スレ
C#, C♯, C#相談室 Part88 [転載禁止]©2ch.net
peace.2ch.net/test/read.cgi/tech/1437808445/
C#, C♯, C#相談室 Part89
peace.2ch.net/test/read.cgi/tech/1443271409/
C#, C♯, C#相談室 Part90
echo.2ch.net/test/read.cgi/tech/1455160063/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。

528 名前:デフォルトの名無しさん mailto:sage [2016/09/03(土) 15:24:50.13 ID:HDnGX34n.net]
>>506
普通かどうか知らんけどこれだよね
www.pro.or.jp/~fuji/mybooks/cdiag/

529 名前:デフォルトの名無しさん mailto:sage [2016/09/03(土) 15:39:03.09 ID:vfo9HhT2.net]
インデント>=括弧>>>>>>>>>>>>>>begin,end
begin,endのメリットは全く分からない

530 名前:デフォルトの名無しさん mailto:sage [2016/09/03(土) 15:40:48.38 ID:08YRGffV.net]
>>508
他の言語との違いを出すための苦肉の策。

531 名前:デフォルトの名無しさん mailto:sage [2016/09/03(土) 16:15:14.95 ID:is8rsJHF.net]
>>508
目に優しい

532 名前:デフォルトの名無しさん mailto:sage [2016/09/03(土) 16:21:08.95 ID:teO92MZf.net]
{ }
を透明色にするエクステンションを作れば解決するだろうが!

533 名前:デフォルトの名無しさん mailto:sage [2016/09/03(土) 16:44:05.68 ID:GPAGDQ3+.net]
バグ死

534 名前:デフォルトの名無しさん mailto:sage [2016/09/03(土) 18:58:56.20 ID:abnGTaRM.net]
>>507
そうだよ
診断室とここのスレタイの相談室を掛けたんだよ

535 名前:デフォルトの名無しさん mailto:sage [2016/09/03(土) 19:57:10.80 ID:i/vdkCcD.net]
ASP.NET WebFormsってあるじゃん
入力値の検証コードを書く仕事をやらされてるんだけどさ
何回も何回も同じような(でも微妙に違う)コードを書かされる拷問みたいになってるんだけどこれうまいことDRYできないの?
クライアントサイドのイベントハンドラで検証
サーバーサイドのイベントハンドラやページメソッドで検証
入力モデルにバインドしてローカルサービで検証
といったように少なくとも1リクエストで3回はよく似たコードを書いてる
コントロールが多いエンドポイントだと死んでしまう

536 名前:デフォルトの名無しさん mailto:sage [2016/09/03(土) 21:23:26.09 ID:NvN4PBVL.net]
>>514
モデルクラスに入れてからまとめて検証すりゃいいでしょ
クライアントサイドはサーバー側でREST API用意しといてAJAXで呼べばいい



537 名前:デフォルトの名無しさん mailto:sage [2016/09/04(日) 03:17:01.13 ID:Q23f0Xjy.net]
>>514
WEBフォームだろ?
カスタムの検証コントロール作ればいいんじゃないかね

538 名前:デフォルトの名無しさん mailto:sage [2016/09/04(日) 14:51:52.34 ID:0IhXUzhb.net]
>>516
それは試したけど柔軟性がないから断念した
カスタム検証コントロールではまずクライアントサイドのカスタム検証ができない
それに検証前後に簡単に処理をフックする事ができない
やろうと思えばできない事もないけど自動生成されたコードにアクセスする必要があるからメンテナンスの不安がある

539 名前:デフォルトの名無しさん mailto:sage [2016/09/04(日) 19:22:49.84 ID:NWup8pYR.net]
>>517
全部サーバーサイドでやればいいんじゃないか?

540 名前:デフォルトの名無しさん mailto:sage [2016/09/04(日) 20:26:43.89 ID:Q23f0Xjy.net]
>>517
もしかして、CustomVaidatorの話かそれ?
祖じゃなくて、自分で検証するコントロール作れって話だぞ
クライアント用のスクリプトも全部自分で出力できるぞ

これで柔軟性がないってなら、WEBフォームじゃ無理ってことだ

541 名前:デフォルトの名無しさん mailto:sage [2016/09/04(日) 20:57:02.22 ID:0IhXUzhb.net]
>>519
CustomValidatorの事を言った
もしかしてCustomValidatorってみんな使ってないの?

542 名前:デフォルトの名無しさん mailto:sage [2016/09/04(日) 21:18:42.69 ID:Q23f0Xjy.net]
>>520
CustomVaidatorでもクライアントスクリプトでのカスタム検証ぐらいできるけどな
毎回似たようなコード書かないとダメだが
この手間と検証タイミングの問題だけクリアできるならCustomVaidatorでも充分だろ

543 名前:デフォルトの名無しさん mailto:sage [2016/09/04(日) 21:41:36.27 ID:0IhXUzhb.net]
>>521
CustomValidatorもうちょい調べた
クライアントサイドの検証は出来た
でも検証前後に処理をフックするってのがやっぱり出来ない
結局のところカスタムコントロールで検証もやってしまった方が良さそう

544 名前:デフォルトの名無しさん [2016/09/10(土) 16:11:25.20 ID:Wm1HNmHU.net]
ファイル選択ダイアログを使ったプログラムを組んでいます。

OpenFileDialog ofd = new OpenFileDialog();

.csv ファイルのみ選択可能な状態にしたいのですがこの指定では
エラーになってしまいます。どう修正すれば良いでしょうか?
ofd.Filter = "CSVファイル(*.csv)";

545 名前:デフォルトの名無しさん mailto:sage [2016/09/10(土) 16:14:00.08 ID:/+pbEB3C.net]
MSDNの解説読もう

546 名前:デフォルトの名無しさん mailto:sage [2016/09/10(土) 16:14:42.14 ID:nYtOzCtO.net]
openfiledialog 拡張子 制限
でぐぐれ



547 名前:デフォルトの名無しさん [2016/09/10(土) 17:18:14.52 ID:Wm1HNmHU.net]
>>525
サンクス

解決

548 名前:デフォルトの名無しさん mailto:sage [2016/09/10(土) 17:40:43.95 ID:qbdJrNQP.net]
っていうか、F1叩くだけでMSDNがすぐ見られるのに
なんでわざわざより手間をかけて2chで質問するのよw
そこが理解できんよw

549 名前:デフォルトの名無しさん mailto:sage [2016/09/10(土) 17:47:35.88 ID:nYtOzCtO.net]
そら無能だからだよ。そんなこともわからないのかよw

550 名前:デフォルトの名無しさん [2016/09/12(月) 17:41:15.35 ID:tEgJE/3d.net]
素人です
CommonSaveFileDialog で [ファイルの種類] を変えてもファイル名に反映されません
SaveFileDialog のように拡張子を自動で付加できるようにする方法を教えてください

551 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 17:43:59.26 ID:aOoYdSpX.net]
初心者むけのスレがあるよ

ふらっと c#って名前

552 名前:デフォルトの名無しさん mailto:sage [2016/09/12(月) 17:45:44.98 ID:6Vx7Y6GR.net]
FileAsShellObject.ParsingName

553 名前:529 mailto:sage [2016/09/12(月) 18:17:48.59 ID:tEgJE/3d.net]
>>530
ありがとうございます
今後利用します

>>531
ありがとうございます
しかしながらこちらを使っても結果が FileName と変わらないのです
ShowDialog の後に取得していますが当方の使い方が違ってます?

554 名前:529 mailto:sage [2016/09/12(月) 18:34:28.38 ID:tEgJE/3d.net]
すみません解決しました
DefaultExtension を指定するとおkなようです
そうしてたつもりがちゃんと出来てませんでした

555 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 14:24:50.81 ID:NBzoNAq4.net]
すみません。Moq について質問です。
インタフェースをMock化した時とか、Setupしていないメソッドやパラメータが呼ばれた時に例外を吐くように設定したいのです。
入り組んでいて、何が呼ばれるのか追いかけるのに疲れました。
例外を吐いてくれれば、Setupしなくちゃと分かるので、デフォルトで例外を吐くような機能があるんじゃないか?
と、ググろうとして・・・思いつきませんでした。

どうすれば良いでしょうか?


・・・とか書いていたら、自己解決してしまいました。
https://github.com/Moq/moq4/wiki/Quickstart#customizing-mock-behavior

var mock = new Mock<IFoo>(MockBehavior.Strict);
としろと。

ちなみに
var mock = new Mock<Foo>(MockBehavior.Strict);
とインスタンス化出来る実体があると、そいつのインスタンスを作って、Proxyとして動いてしまった・・・
インターフェース抽出してMock作る必要があるのか。


そして、このレスは某所に誤爆していたものを転載・・・

556 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 14:32:21.46 ID:QeXjnd/u.net]
そういうつぶやきはTwitterがいいと思うぞ



557 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 14:53:11.09 ID:Spuf+iD1.net]
アロエにでも聞いてもらえー

558 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 21:14:03.89 ID:gHnq4He4.net]
Mockフレームワークは仕事を増やすだけ

559 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 21:57:08.07 ID:Cj/yMtkH.net]
モックは自分に都合のいい脳内彼女を相手に恋愛の練習してるようなもんだからな

560 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 22:11:05.27 ID:18iMvBey.net]
夢から覚めなきゃあそれで十分だあ

561 名前:デフォルトの名無しさん mailto:sage [2016/09/15(木) 22:28:27.16 ID:xWhZtUbs.net]
おじさんが子供の頃樫木モックってアニメがありました

562 名前:デフォルトの名無しさん mailto:sage [2016/09/16(金) 07:26:46.50 ID:LunKPrNc.net]
脳内彼女が正しい応答をすることをどうやって保証するんだろうな
(return thisを除く)メソッドの戻り値やgetterをあまり使わない「言いっぱなし」が基本の
ガチなOOPならインラインのモックは有効だけど、そうでないなら
普通にボトムアップでやるか、どうしてもモックが必要なところ(IOなど)はちゃんと正しく実装した再利用可能なクラスを作ったほうがいい

563 名前:デフォルトの名無しさん mailto:sage [2016/09/17(土) 00:22:09.05 ID:cOwk44uY.net]
ユニットテストは品質保障ではなく開発者のためのテストの意味合いが強い
だからモックが正しい動作をするという保障は必要ないんだよ
開発者が納得して開発の助けになればそれでいい

564 名前:デフォルトの名無しさん mailto:sage [2016/09/24(土) 11:32:54.80 ID:oYgGfkv1.net]
ロジックの奥の方でたまにしか使わないようなのを隅々までテストするには有効

565 名前:デフォルトの名無しさん mailto:sage [2016/09/24(土) 14:00:54.96 ID:yvgHPK9s.net]
C#のファイナライザって同時に複数のスレッドで走る事ってあるんですか?
またはアプリケーションのスレッドと同時に動く事はあったり?

ファイナライザでスレッドセーフ意識していないコードを書いても特に何も問題は起きていないようなのですが、たまたまでしょうか。

https://msdn.microsoft.com/ja-jp/library/ff647790.aspx

「このため、Microsoft は将来的に、CLR で複数のファイナライザ スレッドを実装することを選択するかもしれません。」
とありますが、これが書かれたのは2005年です。もう変わっていたりして?

566 名前:デフォルトの名無しさん mailto:sage [2016/09/24(土) 16:29:11.82 ID:78bORDZY.net]
ファイナライザは最後の手段だから、そんな複雑さを伴う処理は書かないのが無難。



567 名前:デフォルトの名無しさん [2016/09/24(土) 16:49:31.44 ID:g/gfVTwZ.net]
複数のスレッドからファイナライザを呼び出すような作りって、あまり良い作りとは思えないけどな。(ボソッ

568 名前:デフォルトの名無しさん mailto:sage [2016/09/24(土) 18:16:20.97 ID:KT7brPF3.net]
スレッドセーフかどうかと、再入可能かどうかをごっちゃにしてる気がする。(ボソッ

569 名前:デフォルトの名無しさん mailto:sage [2016/09/24(土) 18:45:43.08 ID:K7zHMZhh.net]
(ボソッ
↑何これ

570 名前:デフォルトの名無しさん mailto:sage [2016/09/24(土) 19:38:48.75 ID:Ww4Eww29.net]
プライドと承認欲求と予防線を混ぜて発酵させたもの

571 名前:デフォルトの名無しさん mailto:sage [2016/09/24(土) 19:59:25.35 ID:hsY2X9yo.net]
(^o^)ノ<つぶしあえー

572 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 00:41:50.01 ID:rJ2xXuAE.net]
階層構造もいい具合に空気読んでマッピングしてくれるマッパーってないの?

573 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 03:04:59.08 ID:D+6ASUN2.net]
string[] arr = { "aa", "bb", "cc" };
として、
var dic = new Dictionary<string, string[]>{
  { "1", arr },
  { "2", { "aa", "bb", "cc" } } // エラー
};
とすると二番目でエラーが出るのですが何故でしょうか?

574 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 03:19:47.71 ID:w5gpFchP.net]
String[]がnewされてないから

575 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 03:22:44.52 ID:D+6ASUN2.net]
>>553
でも一番目はエラーしないのですが。
なぜでしょうか?

576 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 03:26:44.53 ID:0EtDfixS.net]
>>552
{ "2", new [] { "aa", "bb", "cc" } }

{ "aa", "bb", "cc" }だけじゃ、型推論で(stringの)配列か判断出来ない。
arrの方は宣言時に型を指定してる。



577 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 03:29:00.59 ID:D+6ASUN2.net]
>>555
>{ "aa", "bb", "cc" }だけじゃ、型推論で(stringの)配列か判断出来ない。
でも最初に
new Dictionary<string, string[]>{
としているので、二番目の引数はstring[]だと推論出来るんじゃないですか?

578 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 03:42:17.76 ID:0EtDfixS.net]
言われてみたらそうだね。

579 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 04:22:18.90 ID:9c0zm0tq.net]
エラーメッセージ見て推論できないのは頭が悪い

580 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 04:36:36.79 ID:w5gpFchP.net]
確認したら型推論関係なくただの文法エラーだった

581 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 04:55:56.67 ID:D+6ASUN2.net]
>>559
エラーしない一行目のarrをそのまま置き換えたのが二行目なのに
なぜ文法エラーになるのでしょうか?

582 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 05:04:50.31 ID:w5gpFchP.net]
エラーが出た部分をコンパイラが配列初期化子として認識していない模様
同じ文でも構文解釈の位置によって意味が変わることはままある

583 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 05:35:54.50 ID:jYmbv1HX.net]
new string[] {"a", "b"}

{"a", "b"}
のように省略できるのはフィールドとローカル変数の宣言時だけ

584 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 08:16:29.35 ID:l7d7Fmom.net]
今時new省略の配列初期化子なんか使わない方がいいよ
型推論が無かった頃の遺物で一貫性がない

585 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 09:35:34.37 ID:w5gpFchP.net]
language specificationを改めて見返したら
配列初期化子のnewが省略できるって記載はないのな
前の版にはあったのかな

586 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 10:51:33.37 ID:l7d7Fmom.net]
>>564
記載があるとしたら変数の宣言や初期化のところじゃない?
new省略の配列初期化子は最近のC#でいう初期化子とは別物で、正確には配列初期化子というより配列型の変数宣言の特別な形だと思う



587 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 22:01:53.19 ID:SnclXywq.net]
Cから入ってテキスト何冊か終わらせてからC♯にきたけど、
Cよりも感覚的に理解できるように作られていると感じた。
だがやっぱりCと混同してしまう部分が多くて困るな
学習が進めば頭の中で区分できるようになるんだろうが

相談じゃないな すまん

588 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 22:33:12.99 ID:zETe1SmY.net]
CもC#も大差ない
便利な構文やクラスが沢山あるってだけ
明確な違いはメタデータぐらいじゃないかな

589 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 22:42:28.47 ID:0EtDfixS.net]
GCは?

590 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 23:15:25.90 ID:+YkJQBGH.net]
*や[]や関数ポインタが絡んだときの宣言みたいな汚くて読みづらい文法がないだけ
C#の方が理解しやすいよね。

配列も文字列も普通に型だし。

591 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 23:44:37.52 ID:YTcGpOzN.net]
>>567
大差ある

592 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 23:46:25.85 ID:tLj3yCec.net]
文字列はchar配列らしいけど、配列は型じゃないの?
Cって配列型じゃないの?

593 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 23:48:59.35 ID:l7d7Fmom.net]
Cに配列型なんか無いよ
連続領域の先頭を指すポインタを配列に見立てているだけ

594 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 23:50:01.43 ID:tLj3yCec.net]
それC#でも同じじゃない?
C#でも
var arr=new int[n];
でarrに入るのは参照だし

595 名前:デフォルトの名無しさん mailto:sage [2016/09/27(火) 23:51:25.88 ID:l0rgfbC+.net]
文法とか変数とか型とかポインタはどうでもいいがイベントが楽だからC#からCに移ろうとは思わないな

596 名前:デフォルトの名無しさん mailto:sage [2016/09/28(水) 00:16:59.13 ID:2rDNP5fm.net]
>>570
ないよ
出来ることは変わらない
書くのが楽か面倒か
それだけ



597 名前:デフォルトの名無しさん mailto:sage [2016/09/28(水) 00:55:28.97 ID:x7JpDQQH.net]
>>575
それってc#もCOBOLも大差ないって言うのと同じことだよね

598 名前:デフォルトの名無しさん [2016/09/28(水) 01:03:23.10 ID:CvBOyBja.net]
大差ありすぎてワロタw

599 名前:デフォルトの名無しさん mailto:sage [2016/09/28(水) 04:44:15.09 ID:y3I7X+UO.net]
大差の定義によるな

600 名前:デフォルトの名無しさん mailto:sage [2016/09/28(水) 05:07:27.92 ID:ksAc0l/t.net]
ネイティブコードにコンパイルできるか否か
弱い静的型付けか強い静的型付けか
オブジェクト志向か否か
GCあるか否か

ぱっと思いついた違い

601 名前:デフォルトの名無しさん mailto:sage [2016/09/28(水) 06:19:58.62 ID:2rDNP5fm.net]
全部同じじゃんそれ

602 名前:デフォルトの名無しさん mailto:sage [2016/09/28(水) 07:16:59.51 ID:6UKmmY9W.net]
>>575
> 書くのが楽か面倒か

大差あるやん w

603 名前:デフォルトの名無しさん mailto:sage [2016/09/28(水) 08:00:45.42 ID:Iarxs+Xo.net]
>ネイティブコードにコンパイルできるか否か
これはまあ、言語じゃなくて環境の問題ではあるけどな

理屈の上では、C#からネイティブコードを吐き出すコンパイラを作る事も出来る
絶対やらないだろうが

604 名前:デフォルトの名無しさん mailto:sage [2016/09/28(水) 08:02:41.33 ID:Iarxs+Xo.net]
……と思ったけど
Microsoft .NET Native とかあったなそういや

605 名前:デフォルトの名無しさん mailto:sage [2016/09/28(水) 08:31:46.55 ID:hdyJqyrv.net]
とっくにUWPアプリはネイティブですよ。

606 名前:デフォルトの名無しさん mailto:sage [2016/09/28(水) 08:34:31.32 ID:Ks5fZMDV.net]
なにそれおいしいの?



607 名前:デフォルトの名無しさん mailto:sage [2016/09/28(水) 09:05:27.32 ID:ksAc0l/t.net]
型付けの強さ弱さを同じって言われて俺びっくりしちゃったよ

608 名前:デフォルトの名無しさん mailto:sage [2016/09/28(水) 09:37:17.20 ID:nPlGLTXy.net]
>>585
レイアウト変更のもたつきなどの、C#特有のもっさり感がないよ

609 名前:デフォルトの名無しさん mailto:sage [2016/09/28(水) 09:47:06.51 ID:JharV+Ri.net]
作ったUWPアプリ環境によってインストールできなくて挫折したな

610 名前:デフォルトの名無しさん mailto:sage [2016/09/28(水) 11:10:40.15 ID:RDlboUCA.net]
Cって静的言語だから型は同じじゃないの?

611 名前:デフォルトの名無しさん mailto:sage [2016/09/28(水) 16:45:21.87 ID:wFbSwOZd.net]
汎用デリゲートのEventHandlerを使用した場合のメリットについて教えてほしいのですが、これを使用するとデリゲート定義の1行を省けることを超えるメリットはあるのでしょうか?

612 名前:デフォルトの名無しさん mailto:sage [2016/09/28(水) 17:43:08.72 ID:t2Y8uX7u.net]
>>590
発想が逆立ちしてるよ。

普通は、標準で用意された方法を超えるメリットがないのであれば
あえて独自のデリゲートを使う理由はないと考えるんじゃないの?w

それって車輪の再発明そのものだよねw

613 名前:デフォルトの名無しさん mailto:sage [2016/09/28(水) 18:34:02.96 ID:1e7C4OQD.net]
いやまて、イベント以外のデリゲートに使おうとしてるのかもしれんぞw

614 名前:デフォルトの名無しさん [2016/09/28(水) 18:55:03.29 ID:wFbSwOZd.net]
そうか、標準のもので済めばそれを使うのが当然なのか
根本が間違ってた
ありがとう

615 名前:デフォルトの名無しさん mailto:sage [2016/09/29(木) 15:45:21.13 ID:GKXbaAQ5.net]
>>569
それを汚ないと感じる人と
美しいと感じる人もいるんじゃないか?

616 名前:デフォルトの名無しさん mailto:sage [2016/09/29(木) 18:05:53.95 ID:42KzZhvK.net]
>>594
void (*signal(int sig, void (*func)(int)))(int);

美しいかどうかは美的感覚の問題だから人それぞれとしか言えないが、
少なくとも俺は上みたいな宣言を見せられたとき、これが何を意味しているのか
瞬時には理解できない。

「汚い」っていうのはそういうことを表現したつもり。



617 名前:デフォルトの名無しさん mailto:sage [2016/09/29(木) 19:40:25.50 ID:wDlER99I.net]
kmaebashi.com/programmer/pointer.html
これを読んだうえでCのポインタの文法が美しいと感じる奴がいたら逆に凄い

618 名前:デフォルトの名無しさん mailto:sage [2016/09/29(木) 19:54:22.23 ID:iqK/HxMj.net]
コード見たときにそれが何を指してるのか分かりやすいのはCの方だな

619 名前:デフォルトの名無しさん mailto:sage [2016/09/29(木) 20:14:20.56 ID:/kH+f7Ja.net]
>>595
ああああああ

なつかしいいいいい
UNIXもしくはLinuxか何かでみたぞおおおおおお

もう絶対こんな仕事に戻りたくないぃいいいいいい

620 名前:デフォルトの名無しさん mailto:sage [2016/09/29(木) 20:22:33.12 ID:1Mz/tgYS.net]
コードの動作が分かりやすいのはC
コードの意図が分かりやすいのはC#
言語の差というより、コードをマシンへの命令と考えるかプログラマの意図を表現するものと考えるかという意識の違いが大きいと思う
do if (*src != ' ') *(dest++) = *src; while (*(src++));
Cはこういうの平気で書き散らす基地外が多い

621 名前:デフォルトの名無しさん mailto:sage [2016/09/29(木) 20:29:29.53 ID:/kH+f7Ja.net]
K&Rの時代は終わったんだよ

622 名前:デフォルトの名無しさん mailto:sage [2016/09/29(木) 21:34:42.13 ID:IEWEZKBK.net]
20年前にFM-TOWNS()でCから入ったが今の時代にガキだったらCだのC++だのは一切触らなかっただろうなーと思う
かといってphpやjavascriptから入るのはアレだしc#最高^^

623 名前:デフォルトの名無しさん mailto:sage [2016/09/29(木) 21:37:33.67 ID:o/Z16MWz.net]
>>599
いやそのコードはおかしいけどな。多分以下。

while (*src!=0) *dest++ = *src++;

それをキチガイというのは自由だが、Cならこれを読めない奴は馬鹿扱いだよ。

初心者は常に「自分の読めないコードは、コードが悪い」としか言わないのだけど、
実際はその初心者の技術レベルに問題がある場合の方が多い。
599はこれだね。

624 名前:デフォルトの名無しさん mailto:sage [2016/09/29(木) 21:57:51.11 ID:iqK/HxMj.net]
読めないのは馬鹿ってのは同感
そういうのを書き散らすのは基地外ってのも同感

625 名前:デフォルトの名無しさん mailto:sage [2016/09/29(木) 22:01:24.13 ID:1Mz/tgYS.net]
>>602
いや599はスペースを除去してるんだけどな
正直わざと分かりにくく書いたから602の技術レベルを疑うつもりはないけど、
分かり難さを証明してくれてどうもありがとう

626 名前:デフォルトの名無しさん mailto:sage [2016/09/29(木) 22:02:54.74 ID:Js+ntQYt.net]
>>602
完全にスレ違いだけど、そういう同じポインタを2回手繰ってるのって
コンパイラは最適化してくれるのかな。

っていうか
while ((*dest++ = *src++) != 0);
って書いても読みやすさは変わらないと思うんだけど



627 名前:デフォルトの名無しさん mailto:sage [2016/09/29(木) 22:05:00.53 ID:Js+ntQYt.net]
ああ、0コピーしたらダメな場合は使えないのかw
ボケてるな

628 名前:デフォルトの名無しさん mailto:sage [2016/09/29(木) 22:37:37.49 ID:o/Z16MWz.net]
>>604
ああよく見ればそうだな。てかスペース見えんかった。
俺はプログラミングは固定ピッチフォントでやる派なので。

つか脱線でさらにスレチだがC++の開祖がプロポーショナル派で、
「プログラミング言語C++」もそれで印刷されているのだが、読みにくくてかなわん。

>>605
俺は余り詳しくないのだが、その範囲で話をすると、
K&R第2版P129には、そういう場合は

while (*dst++ = *src++)

にしろと書いてあるわけだが、実際はこの書き方はwarinigが出る環境の方が多いと思う。
したがっておそらく最適化はやってもらえる(はず。volataileでない限り。)


>>595も本来はtypedefやマクロを使えばもっと綺麗に書けるし、多分それが普通。
悪い例を出しても言語間の比較にはならないよ。
どの言語でも糞な書き方は出来るから。(比較的C#はそうなりにくいのは認めるが)






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

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

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