ふらっと C#,C♯,C#(初心者用) Part124at TECH
ふらっと C#,C♯,C#(初心者用) Part124 - 暇つぶし2ch624:デフォルトの名無しさん (ワッチョイ 5f02-Zdre)
16/09/15 05:54:29.82 jXLgVuef0.net
Labelってそもそも改行して表示できたっけ?
TextBoxのMultilineがfalseとか言うオチじゃないのか?
まさか改行コードじゃなくて

625:デフォルトの名無しさん (ワッチョイ 5f02-Zdre)
16/09/15 05:57:21.93 jXLgVuef0.net
あれ、切れた
まさか改行コードじゃなくて ”¥r¥n”って文字列が入ってるってオチじゃないだろうな
と書いてたんだが(クォーテーション囲みのとこは半角で)

626:デフォルトの名無しさん (ブーイモ MM9f-eXu6)
16/09/15 07:54:18.77 HtD/99ZTM.net
C#よりまずC言語で基礎を学んできたほうがいい

627:デフォルトの名無しさん (ワッチョイ 233a-chWY)
16/09/15 09:37:13.88 4hO/LARH0.net
>>614
数値参照

628:デフォルトの名無しさん (ワッチョイ 037b-chWY)
16/09/15 11:56:00.29 BGRQA4DR0.net
>>616
labelでも改行されますよ。
textBoxで試す時はMultilineはtrueにしてますよ。
xmlのデータをそのまま書いてるので”¥r¥n”とはやってないです。
textBox.text → dataSet → writexmlで保存し、readxmlmi→ dataSet → textBox.textでロードしてます。

>>618
すみません。ちょっとわからないので、もう少し詳しく教えていただけないでしょうか。

629:デフォルトの名無しさん (ワッチョイ bf41-jsoS)
16/09/15 14:55:57.11 oVe6chyL0.net
>>617
ほんとこれ
クラスとかなんて後からでいいわ

630:デフォルトの名無しさん (オイコラミネオ MM3f-wJFc)
16/09/15 15:17:19.63 tpr9+BX0M.net
System.IOのPathクラスにメソッドを追加する方法はないですか?
Pathクラスは静的クラスなので継承できなくて困ってます

631:デフォルトの名無しさん (ワッチョイ a7ff-oW7a)
16/09/15 15:24:15.63 cPNlrWMs0.net
拡張メソッド使えない?

632:デフォルトの名無しさん (ワッチョイ 83dc-wJFc)
16/09/15 15:24:43.91 Cj/yMtkH0.net
>>621
そんなことをする意味はない
独自にPathHelperクラスとか作ればいい

633:デフォルトの名無しさん (ワッチョイ c730-4e/M)
16/09/15 15:26:31.74 Spuf+iD10.net
どうしてもやりたいならC#やめたらいいよ
無理だから

634:デフォルトの名無しさん (ワッチョイ a7ff-oW7a)
16/09/15 15:50:34.62 cPNlrWMs0.net
だから拡張メソッドでいいでしょ
やることは >>623 だけど、
>System.IOのPathクラスにメソッドを追加
したように見える

635:620 (オイコラミネオ MM3f-wJFc)
16/09/15 16:14:41.93 tpr9+BX0M.net
拡張メソッドだとどう記述するんでしょう?
拡張メソッドって例えばstringクラスにメソッドを追加したように見せかけるには
メソッド名(this string オブジェクト名)
って感じにすると思うんですがこれだと静的クラスはできなくないです?

636:デフォルトの名無しさん (ワッチョイ a319-tp8f)
16/09/15 16:45:12.61 rXzgatzr0.net
うん、できない
624はPathクラスが静的クラスだったことを忘れてたんだな

637:デフォルトの名無しさん (ワッチョイ 175e-9vqT)
16/09/15 20:00:02.57 /+11+XuH0.net
>>619
暇つぶしに試してみたけど>>616であっているじゃないか
<Table>
  <Column>あいう
えお</Column>
</Table>
でtextBox.Text = Convert.ToString( dataset.Tables["Table"].Rows[0]["Column"]);
どんな勘違いしたのか知らんが>>616に謝ったほういいと思う
>>615
ちなみにできないのはコンボボックスとか改行を区切りにしているコントロールだな

638:デフォルトの名無しさん (ワッチョイ d37b-chWY)
16/09/15 20:50:10.05 4n2t8Mfb0.net
>>628
こちらのxmlファイルのソースは、保存する時に改行コードだと認識されずに、下のように保存されてるみたいです。
<Table>
  <Column>あいうえお</Column>
</Table>

複数のラベルに表示させる為に、データを入力するテキストボックスをデータグリッドビューへ変更しました。
プロジェクトをアップしたので、どこを変えたら改行コードを認識して>>628さんのようなxmlファイルになるのでしょうか。
URLリンク(fast-uploader.com)

>>616
こちらの勘違いでした。
すみませんでした。

639:デフォルトの名無しさん (ワッチョイ 375b-eXu6)
16/09/15 21:07:15.47 iYCM94tJ0.net
💩💩 じゃないの?
って>>618も言ってるわけだが。

640:デフォルトの名無しさん (ワッチョイ 5f02-+iqG)
16/09/15 21:08:54.40 jXLgVuef0.net
>>628
Labelで改行、確かにできてるな
大昔のVS(2003で確認)のデザイナでは設定できなかったので勘違いしてたのかも
それでもコードで突っ込んだら改行してたわ

641:デフォルトの名無しさん (ワッチョイ 375b-eXu6)
16/09/15 21:09:25.57 iYCM94tJ0.net
ぁ。
&#13;&#10; の半角な。

642:デフォルトの名無しさん (ワッチョイ fb17-dM7R)
16/09/15 21:23:47.93 kyc/d2BX0.net
WinFormsはめったにやらないしやってもDataGridViewなんか絶対使わないが貼ってあるプロジェクトをDLして見てみた。
で、ちょっとググると URLリンク(dobon.net)
falseじゃねーか。trueにしたら改行されたぜ(手作りの改行入りXMLで)。
セル入力が改行入力できるのを確認してそのままセーブ。ちゃんとXMLに改行が保存されている。

643:デフォルトの名無しさん (ワッチョイ 175e-9vqT)
16/09/15 21:35:16.58 /+11+XuH0.net
>>629
それよくわからんし、古いVS使っているからそのままこちらでは使えん
URLリンク(ideone.com)
全部一体にしたソース上げておく
ボタン1で書き込み、ボタン2で読込み、ボタン3で表示

644:デフォルトの名無しさん (ワッチョイ d37b-chWY)
16/09/15 21:37:31.01 4n2t8Mfb0.net
>>633
データグリッドビューにも改行できるプロパティがあったとは。

しょうもない質問に、お付き合いくださった皆様本当にありがとうございました。

645:デフォルトの名無しさん (ワッチョイ d37b-chWY)
16/09/15 21:39:56.73 4n2t8Mfb0.net
>>634
わざわざソース作ってくれてありがとうございます。
ソースを確認して、解析したいと思います。

なにからなにまでありがとうございました。

646:デフォルトの名無しさん (アウアウ Sa1f-NmdU)
16/09/15 21:49:13.86 JEiXRkBDa.net
横からすまんけどDataGridView使わないで、何で表示させるの?
区切りよく見せるやり方がわからない

647:デフォルトの名無しさん (スップ Sdbf-wJFc)
16/09/16 07:05:58.60 EiAsfn7Ed.net
Googletestすんごく便利じゃね?ってなった

648:>>633 (ワッチョイ 175e-9vqT)
16/09/16 18:45:59.06 ad4eOHdw0.net
button2_Clickのds.ReadXmlの前にds = new DataSet();を置かないとReadXmlの意味が無かったわw
申し訳ない

649:デフォルトの名無しさん (ワッチョイ 17ea-Pgjg)
16/09/17 02:09:38.81 PLH+Fwg30.net
文字列形式の数字を数値形式で変数に格納するやり方について教えてください。
整数であれば
int num = int.Parse("123,456,789", System.Globalization.NumberStyles.AllowThousands);
これでOKですよね?
では、小数点以下が含まれていて、かつ1000以上の数字はどうすればいいのでしょうか?
たとえば987,654.3みたいな数字です。
単純にfloat.parseってしたら怒られちゃいました。

650:デフォルトの名無しさん (ワッチョイ 175e-9vqT)
16/09/17 02:35:45.70 Lk1O5YzS0.net
>>640
なんかいっぱい方法があるなw
URLリンク(dobon.net)
string st = "987,654.3";
float f = float.Parse(st, System.Globalization.NumberStyles.Any);
decimal d = decimal.Parse(st, System.Globalization.NumberStyles.AllowDecimalPoint|System.Globalization.NumberStyles.AllowThousands);
double db = double.Parse(st.Replace(",", ""), System.Globalization.NumberStyles.Float);
自分で適当に試してくれ

651:デフォルトの名無しさん (アウアウ Sa9f-8sPh)
16/09/17 02:51:37.76 0IJLfM4Ca.net
こんな質問してる人がありえないとは思うけど、日本以外での展開も考えてるなら
非英語圏だとカンマとポイントが逆だったりして、最初によく仕様を決めておかないと
あとでハマるかもよw

652:デフォルトの名無しさん (ワッチョイ 17ea-Pgjg)
16/09/17 08:01:09.21 PLH+Fwg30.net
すいません、ありがとうございました

653:デフォルトの名無しさん (ブーイモ MM9f-eXu6)
16/09/17 08:15:17.67 ZlGddzijM.net
国際化はプレゼンテーションに小細工するだけじゃ追いつかないよね

654:デフォルトの名無しさん (ドコグロ MM3f-wJFc)
16/09/17 11:24:57.53 4J0ckOcAM.net
文字の長さが違うから
コントロールのサイズや構成自体を変えろとか言ってきたりするから
自動では無理だね

655:デフォルトの名無しさん (ワッチョイ c35b-NmdU)
16/09/17 12:15:36.41 ChuD1bst0.net
すみません。質問です
フォームアプリを作成中(勉強中)です
Form1.csのファイルをPertialで分割して別のソースファイルを作ったときに、分割して作ったソースファイルをエクスプローラーでForm1の子となるように表示させたいです。
プロジェクトファイルを変更して子表示には出来ましたがSubタイプをCodeに変えてもコンパイラに?Formに書きかえられてしまい、ダブルクリックでソースファイルを開けません。
どうしたらいいのでしょうか

656:デフォルトの名無しさん (アウアウ Sa9f-8sPh)
16/09/17 12:36:18.20 HrJPJui6a.net
>>646
ごめん何言ってるのか全然わからない

657:デフォルトの名無しさん (JP 0H9f-nW2o)
16/09/17 12:57:05.38 qiyywEhcH.net
プロジェクトのツリー構成をいじろうとして変なことしてるけど元に戻っちゃうよ~
ってことかな

658:デフォルトの名無しさん (ワッチョイ c730-4e/M)
16/09/17 13:03:02.02 v/zQjqAf0.net
ああ、「エクスプローラ」って「ソリューションエクスプローラ」のことか

659:デフォルトの名無しさん (ワッチョイ 5b49-oG/L)
16/09/17 13:09:04.40 0+lykI9p0.net
>>646
諦める。
partialって、デザイナーの自動生成ソースと分けるために使われてるけど、それ以外は普通使わない。
クラスを作って機能毎に分けるようになれば、そんなことする必要ないから。

660:デフォルトの名無しさん (ワッチョイ c35b-NmdU)
16/09/17 14:14:38.63 ChuD1bst0.net
>>647
>>648-650
のかたの認識で間違いないです
>>648-650
ありがとうございます
できない、やることに意味があまり意味ないってことで了解しました
連投で申し訳ないのですが
機能別にわけたクラスがForm1のコントロールにアクセスするのは、Form1.textbox1.textのような記述で行っていけばいいんでしょうか
普通どういう風にコーディングしていくのかがわかりません

661:デフォルトの名無しさん (ワッチョイ c730-4e/M)
16/09/17 14:34:03.35 v/zQjqAf0.net
C#にはデフォルトインスタンスがないから
VBみたいにクラスからアクセスはできないぜ
(そのつもりで書いているのか分からないが)
C#入門のお手伝いをご希望なら
私どもではなく書籍か入門サイトを頼った方が無難である

662:デフォルトの名無しさん (ワッチョイ 175e-9vqT)
16/09/17 14:35:44.65 Lk1O5YzS0.net
>>651
URLリンク(dobon.net)

663:デフォルトの名無しさん (アウアウ Sa9f-8sPh)
16/09/17 15:16:11.27 HrJPJui6a.net
>>651
Formの外のクラスからFormの持つコントロールにアクセスするようなコードを書いてはダメ。
TextBoxのTextの変更はFormの責任でやる

664:デフォルトの名無しさん (ブーイモ MM9f-eXu6)
16/09/17 15:20:57.18 exk5TsB4M.net
VB6の被害者ってまだいたんだね

665:デフォルトの名無しさん (ワッチョイ c35b-NmdU)
16/09/17 15:45:47.87 ChuD1bst0.net
>>652-654
ありがとうございます
いえいえ、ここの方たちの意見は十分参考になります
入門用だとForm1クラスの中にクラスを作ってるものばかりなので、それに沿って記述していくとForm1のソース量が延々長くなり最初のような質問をさせていただきました
>>653
の方を参考に勉強してみます
また何かあれば質問させてください
ありがとうございました

666:デフォルトの名無しさん (ワッチョイ 97d4-EMlz)
16/09/17 17:51:24.24 2hKXgH7u0.net
メソッドの引数にオブジェクトがある場合に、デフォルト値(?)を設定することってできないのでしょうか?
class B{}
があった場合に
A(B b = new B())
のようなことがしたいのですが・・・・

667:デフォルトの名無しさん (ワッチョイ 83dc-wJFc)
16/09/17 18:03:49.90 /l22qB3W0.net
>>657
オーバーロードする
もしくはnullをデフォルトにしといて先頭でnullチェックして代入

668:デフォルトの名無しさん (ドコグロ MM3f-wJFc)
16/09/17 18:35:43.77 4J0ckOcAM.net
>>656
partialもいいよ
無駄にクラス分けて複雑になったら意味ないし
画面がでかいことと設計がどうとかって関係ないし
見た目Formにあるコントロールの処理がFormに無い時点で俺は気が狂う

669:デフォルトの名無しさん (ブーイモ MM9f-eXu6)
16/09/17 18:41:40.76 kuAV8nPQM.net
クラス別けても複雑にはならないだろう分け方が間違ってなければ
Partialは分業や自動生成のための物で機能分割のためのものではない

670:デフォルトの名無しさん (ワッチョイ 03cb-wJFc)
16/09/17 19:47:28.29 UtwXhxtU0.net
>>660
だから機能分割しないって
単に画面がひたすらでかいときってあるじゃん
その数百はあろうコントロールの載った画面の端っこにラジオボタンがあったとして
その処理がどこに書いてあればわかりやすいんだよって話よ

671:デフォルトの名無しさん (アウアウ Sa9f-8sPh)
16/09/17 20:09:00.98 HrJPJui6a.net
>>661
言いたいことは分からんでもないけど、部分クラスを使って「分ける」んじゃなくて、
regionを使って「整理する」方が得策だと思うよ

672:デフォルトの名無しさん (ワッチョイ 03cb-wJFc)
16/09/17 20:11:32.28 UtwXhxtU0.net
>>662
partialでいいじゃん

673:デフォルトの名無しさん (ブーイモ MM9f-eXu6)
16/09/17 20:14:20.19 kuAV8nPQM.net
>>661
そういう巨大なビューは容易に管理可能なサイズの子ビューに分割する
ビューは複数の子ビュー間の調停を行いそれ以外の最低限の処理しかしない
一度の分割では不十分な場合には子ビューが再帰的に子ビューを持っても良い
ラジオボタンの処理はラジオボタンが直接に配置されたビューに書けば良い
そして各ビューにはクラスを割り当てて実装する
PartialもRegionも使わない

674:デフォルトの名無しさん (アウアウ Sa9f-8sPh)
16/09/17 20:22:44.82 HrJPJui6a.net
>>663
部分クラスは一覧性がよくない。
コードの見通しをよくして見たい個所をすぐ探せるように分割したはずが、
結局複数のファイルをいちいち渡り歩いて探さなきゃならない本末転倒が起こる。
>>664はユーザーコントロールを使えと言ってるのかもしれないけど、
コードの見通しをよくするためにユーザーコントロールを使うのはちょっと違うと思う。

675:デフォルトの名無しさん (ワッチョイ 175e-9vqT)
16/09/17 20:24:29.74 Lk1O5YzS0.net
職場の制約じゃないんだし、どっちでも好きなようにしたらいいと思うが議論スレでやれよ

676:デフォルトの名無しさん (ワッチョイ 8394-1I2o)
16/09/17 20:41:30.63 qocRQo9a0.net
議論スレw
気に入らない奴らを追い出したいからとバカが作ったあのスレ
作るだけ作って自分でも盛り上げず過疎ってるあのスレ
…よくあんなとこに誘導しようと思うなw 作った人ですか?w

677:デフォルトの名無しさん (ワッチョイ c730-4e/M)
16/09/17 21:25:21.29 v/zQjqAf0.net
単芝くっさ

678:デフォルトの名無しさん (ワッチョイ 179d-eXu6)
16/09/17 22:16:24.50 WMm2U5Oz0.net
くっさとかくっさ

679:デフォルトの名無しさん (ガラプー KK5f-Y+P+)
16/09/17 22:21:10.33 VM86FVmfK.net
草と書くっさ

680:デフォルトの名無しさん (アウアウ Sa1f-NmdU)
16/09/17 22:23:03.01 KhWwRLFba.net
まともな回答もできんやからが荒らすな

681:デフォルトの名無しさん (ブーイモ MM9f-eXu6)
16/09/17 22:29:33.53 2JExcSSQM.net
>>665
普通のクラスだろうとUIクラスだろうとプログラミングの基本は変わらないよ

分割して統治せよ

オブジェクト指向言語ではその手段が主にクラスであり
UIではコントロールやコンポーネントというだけの話

適切にクラス化すれば自然とプログラムの見通しは良くなるし
見通しをよくするための手段としてクラス化を選択するのは正当な判断だ
むしろリージョンやパーシャルで分割するという判断の方が良い習慣に逆らった邪道な判断だろうね

682:デフォルトの名無しさん (ワッチョイ 977b-chWY)
16/09/17 22:34:39.28 bbRJl+Ku


683:0.net



684:デフォルトの名無しさん (アウアウ Sa9f-8sPh)
16/09/17 22:40:50.65 HrJPJui6a.net
>>672
端的に言えば、ネーミングに困るような分割は分割統治でも何でもないよ。
ただの細切れだ。

命名に困るよね?
>>664みたいな分割をしたら。

685:デフォルトの名無しさん (ワッチョイ 83dc-U9f6)
16/09/17 22:48:21.12 /l22qB3W0.net
本当に必要なコードなら仕方ないけど、
巨大なクラスって大抵同じような処理がいろんなところに散らばってたりコピペまみれだったり
より上のレイヤでやるべきことをビューのコードと一緒くたにしてベタ書きしてたりするのが多いんだよね
まともなコードでソースファイル分けたくなるほどクラスが肥大化することは稀

686:デフォルトの名無しさん (ワッチョイ 03cb-wJFc)
16/09/17 23:00:37.63 UtwXhxtU0.net
>>675
単に使うからって理由で新聞みたいな細かさで配置されてる画面だってあるよ
上下左右に関連なんてなくてひたすらデータが羅列されてるだけみたいな

687:デフォルトの名無しさん (ワッチョイ c730-4e/M)
16/09/18 01:02:53.73 3bUsWpmg0.net
エッジケースを一般論として語る

688:デフォルトの名無しさん (ワッチョイ 03cb-D0fg)
16/09/18 08:10:21.19 Vs//CHex0.net
public class ListValue {
  public string Col1;
  public string Col2;

  public static void LoadFromFile(List<ListValue> list, string filename) {
    if (File.Exists(filename)) {
      using (StreamReader reader = new StreamReader(filename, Encoding.GetEncoding("shift-jis"))) {
        while (!reader.EndOfStream) {
          string line = reader.ReadLine();
          string[] splitData = line.Split('\t');

          var tmp = new ListValue();
          tmp.Col1 = splitData[0];
          tmp.Col2 = splitData[1];
          list.Add(tmp);
        }
      }
    }
  }
}

のような感じでTSVをLISTに読み込んでいますが、列数が数十もあると
tmp.Col1 = splitData[0];
tmp.Col2 = splitData[1];
が面倒なのでループにしたいと思ってます。

イメージとしては
for(略) {
  tmp[i] = splitData[i];
}
こんな感じですが、tmp[i]のような書き方はできないようです。
どのように書けばループに出来るでしょうか。

689:デフォルトの名無しさん (ワッチョイ 37ce-D0fg)
16/09/18 08:50:24.05 Dby0x7420.net
public class ListValue {
public string[] Cols;

public SetSize(int len) { Cols = new string[len]; }
public string this[int i] {
set { this.Cols[i] = value; }
get { return Cols[i]; }
}

(略)
var tmp = new ListValue();
tmp.SetSize(splitData.Length);
for(略) {
  tmp[i] = splitData[i];
}
listAdd(tmp);
(略)
かな?

690:デフォルトの名無しさん (ワッチョイ 83dc-U9f6)
16/09/18 08:58:10.66 FLMBUfED0.net
>>678
メンバに順序は無いので、何らかの手段で順序情報を付加してやる必要がある。
その上で、リフレクションを使って動的に値をセットする。
たとえばカスタム属性を使って以下のようにする。(動くかどうかは知らん)
public class OrderAttribute : Attribute {
 public Order(int value) { this.Value = value; }
 public int Value { get; private set; }
}
public class ListValue {
 [Order(0)] public string Col1 {get; set;}
 [Order(1)] public string Col2 {get; set;}
}
public static class TsvLoader {
 public static IEnumerable<ListValue> LoadFromFile<T>(string filename) =>
  File.ReadLines(filename)
   .Select(line => line.Split(‘¥t’))
   .Select(DeserializeRow);
 public static T DeserializeRow<T> where T : class, new() (IEnumerable<string> row) {
  var propvals = typeof(T).GetProperties()
   .OrderBy(prop => ((OrderAttribute)p.GetAttribute(typeof(OrderAttribute))).Value)
   .Zip(row, (prop, val) => new { Property = prop, Value = val });
  var obj = new T();
  foreach (var propval in propvals) { propval.Property.SetValue(obj, propval.Value); }
  return obj;
 }
}
こんなことするより素直に>>679の方がいいと思うけど

691:デフォルトの名無しさん (ワッチョイ 03cb-D0fg)
16/09/18 10:43:54.66 Vs//CHex0.net
>>679
ありがとうございます。
列名を配列にするとLINQが使いにくいのかなと思っています。
以前にLISTのLISTを作った時にそうだったので、配列も同じかなと。
ですが、考え方は勉強になりました。

>>680
ありがとうございます。
こちらは列名がそのまま使えるのでいいかなと思ったのですが、
ハイレベルすぎてついて行けませんでした。

結局のところ私のようなレベルであれば、数十列あったとしても
全部書いてる方が間違いがないようです。
列が増えた時に忘れそうですが・・・

ありがとうございました。

692:デフォルトの名無しさん (ワッチョイ 37ce-D0fg)
16/09/18 11:08:30.68 Dby0x7420.net
受け渡しがstring[]のままなら、
さっきの[]だけ定義して、コンストラクタで
public ListValue(string[] Cols_) { Cols = Cols_; }

list.Add(new ListValue(line.Split('\t')));
で1行に

693:デフォルトの名無しさん (ブーイモ MMbf-eXu6)
16/09/18 12:47:11.68 Yxs7/HnaM.net
今だったらCSV読み込み用のNuGetライブラリを使う場面だろうけど
初心者で自作したいならCSVを読み込んでDataTableに詰め込む処理を作る
これは自前のファイル解析処理でもいいしOleデータアダプタを使ってもいいしなにか別の方法でもいい
そしてデザイナーで型付データテーブルを定義する
少し前までは平凡な現場ではこういう事をよくやっていたものだ

694:デフォルトの名無しさん (ワッチョイ 333c-eXu6)
16/09/18 19:05:10.98 7K/Z8eac0.net
C#でおしゃれなUIをデザインしたいんだけどどうしたらいいですか?
Visual studioのwindowフォームだと味気ないデザインしか出来なくてこまってます
どなたか教えてください

695:デフォルトの名無しさん (ワッチョイ 175e-9vqT)
16/09/18 19:11:21.49 4IEY4Cwd0.net
>>684
コントロールを自分で描画する
URLリンク(dobon.net)
変えるのが背景くらいでいいのならデザイナで設定できるけど

696:デフォルトの名無しさん (ワッチョイ 83dc-wJFc)
16/09/18 19:21:44.92 FLMBUfED0.net
>>684
UWP使えば

697:デフォルトの名無しさん (ワッチョイ 97d4-EMlz)
16/09/18 22:44:04.59 dUd9O0RL0.net
共変性についてよく理解できないのですが・・・・
class A : B {}
の時に、
B b = new A();
のようなことができると入門書などに書かれていますが、
A b = new A();
とした場合と何が違うのですか?

698:デフォルトの名無しさん (アウアウ Sa9f-8sPh)
16/09/18 22:59:05.90 tyXWdZhGa.net
>>687
とりあえずそれは共変と全然関係ないよw

699:デフォルトの名無しさん (ワッチョイ 83dc-W8Ns)
16/09/18 23:11:20.92 FLMBUfED0.net
>>688
共変で間違ってないよ
URLリンク(msdn.microsoft.com)

700:デフォルトの名無しさん (アウアウ Sa9f-8sPh)
16/09/18 23:16:40.64 tyXWdZhGa.net
>>689
いや間違ってるからw

701:デフォルトの名無しさん (ワッチョイ 97d4-EMlz)
16/09/18 23:25:08.86 dUd9O0RL0.net
共変なのかどうかよくわからずに言葉を使ってしまい申し訳ないのですが、例の2つはどういう違いがあるのですか?
型がAでもBでも変わりがないように見えてしまいます

702:デフォルトの名無しさん (アウアウ Sa9f-8sPh)
16/09/18 23:34:59.86 tyXWdZhGa.net
>>691
どのメンバーにアクセス可能かはオブジェクトの型ではなく変数の型で決まる。
だから上のbはAのみで実装されているメンバーにアクセスできない。

703:デフォルトの名無しさん (ワッチョイ 333c-eXu6)
16/09/18 23:45:27.02 2anw7PLb0.net
>>686
UWPってスキンとか変更できますか?

704:デフォルトの名無しさん (ワッチョイ 97d4-EMlz)
16/09/18 23:51:38.54 dUd9O0RL0.net
今試しに手元でやってみたのですが確かに派生先のメンバにはアクセスできませんでした
b is Aみたいなことをした時にtrueが返ってくるために同じではないかと勘違いしてたのがやっと理解できました
ありがとうございます

705:デフォルトの名無しさん (ワッチョイ c730-4e/M)
16/09/19 01:50:22.29 x6oYh1MF0.net
>>693
そんなもん標準では備わってない
せいぜいテーマ変えるくらい
URLリンク(msdn.microsoft.com)

706:デフォルトの名無しさん (ワッチョイ 2351-chWY)
16/09/19 07:26:38.08 byZSyyWN0.net
Formsから移行するならWPFだろうが、なんでいきなりUWPなんて話になるんだろうか。

707:デフォルトの名無しさん (ワッチョイ 333c-wJFc)
16/09/19 07:56:49.85 R4yOZzeH0.net
>>696
なぜいまさらWPF?

708:デフォルトの名無しさん (ワッチョイ 4723-chWY)
16/09/19 08:21:41.59 G088RuKS0.net
>>697
先週からUWP始めたけど、C++のDLLが呼び出せないとか右クリックメニューが出来ないなど
面倒なこと沢山有るよな
コントロールが増えて楽しいってのはあるんだが

709:デフォルトの名無しさん (ワッチョイ 2351-chWY)
16/09/19 08:23:12.93 byZSyyWN0.net
>>697
Formsからの移行だから。
なんで見た目を変えたいってだけで制約の多いUWP薦めるのか理解不能だわ。

710:デフォルトの名無しさん (ワッチョイ c730-4e/M)
16/09/19 08:31:37.25 x6oYh1MF0.net
WPFにしろUWPにしろ過疎過ぎて死亡

711:デフォルトの名無しさん (ワッチョイ 03cb-wJFc)
16/09/19 10:06:22.68 bJUofi690.net
>>697
オワコン確定なの?

712:デフォルトの名無しさん (ワッチョイ 83dc-W8Ns)
16/09/19 10:10:16.99 jZTV89ee0.net
始まったことすらありません

713:デフォルトの名無しさん (ブーイモ MM9f-eXu6)
16/09/19 10:10:26.90 vuaz7X22M.net
需要がなさすぎて終わる前に始まってすらいない
一般向けはブラウザかスマートデバイス向けのアプリばっかりだし
業務用デスクトップアプリは保守要員のスキル考えるとFormsしか採用できない

714:デフォルトの名無しさん (ベーイモ MMff-qrXn)
16/09/19 10:35:49.15 bIVnttmtM.net
XAMLがいけないのだよ

デスクトップ アプリを UWP アプリに変換する
URLリンク(developer.microsoft.com)

715:デフォルトの名無しさん (アウアウ Sa9f-8sPh)
16/09/19 10:36:25.30 dWsrNIgMa.net
むしろWPFは細々続いていくと思うけど...

ストアアプリみたいにまたいつ梯子を外されるかわらからないUWPなんか
覚えようって人は余程お人よしかMSラブとしか思えない

Petzoldとか、ストアアプリで本書いた人も恐らく相当怒ってるよねw
あんなことされたら今度はUWPで本書いてやろうって気にはなかなかならないはず

716:デフォルトの名無しさん (ベーイモ MMff-qrXn)
16/09/19 10:39:32.10 3DxG+ajbM.net
Microsoft、デスクトップアプリをUWPアプリへ変換するツールをWindowsストアで公開
URLリンク(pc.watch.impress.co.jp)

DesktopAppConverter
URLリンク(www.microsoft.com)

717:デフォルトの名無しさん (スプッッ Sdbf-wJFc)
16/09/19 10:50:32.07 CIKkLThgd.net
>>705
むしろ書くネタを投入してくれてると考えないと

718:デフォルトの名無しさん (エムゾネ FFbf-kmwO)
16/09/19 11:13:31.53 ezNHULaGF.net
下火も下火だもんな

719:デフォルトの名無しさん (ワッチョイ fbc0-chWY)
16/09/19 11:21:15.22 9tbHw/9w0.net
>>703
>保守要員のスキル
業務はこれだよな
WPFで作ってBinding楽すぎ!と使ってもらおうとしても、XAML見ただけで拒否反応示す人多すぎる

720:デフォルトの名無しさん (ワッチョイ c730-4e/M)
16/09/19 11:34:18.93 x6oYh1MF0.net
XAMLは書いても書いても頭に定着しなくてさぁ…

721:デフォルトの名無しさん (ワッチョイ 179d-chWY)
16/09/19 11:47:52.91 Jh8jv4fs0.net
つまりForms最高最強ってことですね?
これからも末永くよろしくお願いします

722:デフォルトの名無しさん (ワッチョイ 23ba-eXu6)
16/09/19 13:38:51.97 VY3VanBz0.net
WPFだけでなくVBScriptにSilverlightも
他ブラウザでは機能しない
つまり使えない

OS支配が偉大すぎだが
得意の後追い商法も効果なし
迷走Microsoft

723:デフォルトの名無しさん (オッペケ Sr1f-wJFc)
16/09/19 13:46:57.70 4tgdktKzr.net
Linqも全然使われてないですよね?
やっぱ処理が見にくいから?

724:デフォルトの名無しさん (ワッチョイ 477b-chWY)
16/09/19 15:52:15.40 MNVYkncZ0.net
見にくくはないだろ
オッサンが読めないから使うなって言われてるだけじゃね

725:デフォルトの名無しさん (ワッチョイ c3d6-9vqT)
16/09/19 15:56:12.87 Z/E4vnsc0.net
>>713
定期巡回お疲れ様です

726:デフォルトの名無しさん (ワッチョイ 03cb-wJFc)
16/09/19 16:18:19.01 bJUofi690.net
>>713
圧倒的に読める奴は減るな

727:デフォルトの名無しさん (アークセー Sx1f-wJFc)
16/09/19 16:34:06.70 eOwBF3hLx.net
>>713
はいっ!

728:デフォルトの名無しさん (ブーイモ MM9f-eXu6)
16/09/19 16:56:56.28 fik9yetTM.net
今でもたまにLinqが無かった時代のコードを保守する機会があるがあれは苦痛だ

729:デフォルトの名無しさん (アウアウ Sa9f-8sPh)
16/09/19 17:18:34.97 dWsrNIgMa.net
>>715
ラムダ式を出さなくなっただけ彼も進歩してるw

730:デフォルトの名無しさん (オッペケ Sr1f-wJFc)
16/09/19 18:27:21.89 4tgdktKzr.net
誰のこと言ってんのかわからんけど、おれどちらかというとプログラマじゃないからここでアホみたいな質問すると思う

731:デフォルトの名無しさん (ワッチョイ bf73-chWY)
16/09/19 20:49:54.41 DKrTn01q0.net
TabControl1のtabPage3にLabel1を追加したいのですが
Label a1 = new Label();
this.tabControl1.Controls.Add(a1);

this.tabPage3.Controls.Add(a1);

と試してもうまくいきませんどうしたらよいでしょうか?

732:デフォルトの名無しさん (ワッチョイ 175e-9vqT)
16/09/19 20:58:18.08 wipHk/080.net
>>721
デザイナで設置しないのはなにか理由があるの?
Label a1 = new Label();
this.tabPage3.Controls.Add(a1);
a1.Text = "hoge"; a1.BringToFront();
最後の行は表示確認用

733:デフォルトの名無しさん (ワッチョイ bf73-chWY)
16/09/19 21:18:25.46 DKrTn01q0.net
>>722
ありがとうございます。
tabControl1にたいしてtabPage1~かと思ったら
tabControl1,2,3含めてtabPage1~が増えるんですね。

データが固定じゃないのでデータによって
tabControl1のtabPageを増やすのをできるようにしたかったのです。

734:デフォルトの名無しさん (ワッチョイ bf73-chWY)
16/09/19 21:19:03.49 DKrTn01q0.net
>>722
解決しましたありがとうございます。

735:デフォルトの名無しさん (ワッチョイ 175e-9vqT)
16/09/19 21:36:38.88 wipHk/080.net
とりあえずデザイナで設置してみてDesigner.csの中身を見てみればよかったな。
他のコントロールでも同じだけど
721も自分のDesigner.csの中身を見て書いただけだしw

736:デフォルトの名無しさん (ワッチョイ 179f-AKTw)
16/09/20 13:59:33.52 qGlVjJF90.net
>>723
デザイナでタブコントロール複数設置すれば一目瞭然だが
tabContorol変わってもtabPageは1に戻らないよ

tabControl1.TabPages[ページIndexまたはタブのName].Controls.Add(a1);

737:デフォルトの名無しさん (ワッチョイ 1742-SOVl)
16/09/20 22:11:37.32 G5yMgC3y0.net
>>709
俺、昔、HTML見ただけで拒否反応出たわ
Web系なんて一生やらんと思ってたのに今やってるわ

738:デフォルトの名無しさん (ワッチョイ 1742-chWY)
16/09/21 16:00:32.26 2I665Pjk0.net
ツリービューの幅をジャストフィットさせる方法を教えてください
ノードの右端の座標とか水平スクロールバーが現れる幅とかが取得できればと思うのですが

739:デフォルトの名無しさん (ワッチョイ a319-tp8f)
16/09/21 17:35:44.35 b0Nua/000.net
表示されてるノードを走査してそれぞれのBounds.Rightを確認すればいいんじゃね

740:727 (ワッチョイ 1742-chWY)
16/09/21 18:35:23.37 2I665Pjk0.net
>>729
ありがとうございますピッタリできました
Bounds 見過ごしてました
これからはもっとよく確認します

741:デフォルトの名無しさん (ワッチョイ 333c-D0fg)
16/09/21 21:58:19.91 lQOLvI1I0.net
>HTML見ただけで拒否反応
これは解らんが

>Web系なんて一生やらんと思ってたのに今やってるわ
これは解る

742:デフォルトの名無しさん (ワッチョイ c35b-NmdU)
16/09/21 23:08:54.93 JVLqoW6f0.net
c#のお作法的に、フィールドに初期値をもたせるのって宣言と同時に直接代入するのとコンストラクタで設定するのってどちらが良いのでしょうか

743:デフォルトの名無しさん (ワッチョイ 333c-D0fg)
16/09/21 23:22:23.88 lQOLvI1I0.net
親クラスのコンストラクタで、子クラスのフィールドを利用する事があるなら
フィールドの宣言時に初期値を持たせておく

744:デフォルトの名無しさん (ワッチョイ 977b-a0dx)
16/09/21 23:47:25.62 o5hoVk+q0.net
string hoge = "hogehoge";
string fuga = hoge;

とした場合、fugaにはhogeのオブジェクトがコピーされて入るのですか?
それともhogeの参照のみがコピーされるのですか?

745:デフォルトの名無しさん (ワッチョイ 83dc-W8Ns)
16/09/21 23:48:50.32 bQEJ8r3q0.net
>>732
一般論として、プログラムはなるべく宣言的に書くのが良い
その意味でベストなのは宣言時代入かつreadonlyで、それができる場合は迷わずそうするべき
readonlyにできない場合は好みの問題だな
初期値だけを特別扱いするのは不自然だと感じる人もいれば宣言時代入の方が宣言的で見やすいと感じる人もいる

746:デフォルトの名無しさん (ワッチョイ 175e-9vqT)
16/09/21 23:51:34.59 49I69gX00.net
>>734
変数の場合は値が代入される
クラスの場合は参照になる

747:デフォルトの名無しさん (ワッチョイ 83dc-W8Ns)
16/09/21 23:53:56.45 bQEJ8r3q0.net
>>734
参照のみがコピーされるけど、Stringに関しては実用的にはそれを区別する必要はない
なぜならStringオブジェクトはイミュータブル(変更不能)なので、
インスタンスに対する変更の影響が同じインスタンスを参照する他の場所に波及するようなことは起こらないから

748:デフォルトの名無しさん (ワッチョイ 1690-5q76)
16/09/22 00:26:12.39 QaFi4YJK0.net
さて、某月額費用の掛かるアダルトサイトの

動画をDLするプログラムを頑張って作ります。

ハマったらここに質問するので宜しくね!

ちまちま手動ダウンロードに付かれた。
出来たら便利で公開したいけど、公開したら俺ってばれるwww

749:デフォルトの名無しさん (ドコグロ MMf4-xdvH)
16/09/22 08:50:28.86 pXuo09J0M.net
http通信あたりから勉強したらどうだろう?

750:デフォルトの名無しさん (ワッチョイ cd5b-aBDa)
16/09/22 11:50:22.29 TiDB0J3t0.net
>>733>>735
ありがとうございます
参考になりました

751:デフォルトの名無しさん (ワッチョイ 595b-xjL4)
16/09/22 13:01:39.48 R6k9xPvT0.net
オラクルのプロシージャの引数を結合配列(構造体配列)とした時、C#(というか.NET)でどういう風にパラメータを設定すればいいのかご存じの方いますか?
たとえば、下のような結合配列の型「TEST_TBL」をパッケージの仕様部で定義して、プロシージャの引数にした場合、
これを.NETから呼び出す時、DataTableやListを引数に指定することはできるのでしょうか?

TYPE TEST_REC IS RECORD(
A varchar2(8),
B number
);

TYPE TEST_TBL IS TABLE OF TEST_REC INDEX BY BINARY_INTEGER;

PROCEDURE TESTPROCEDURE(
prmTBL IN TEST_TBL
)

ググっていろいろ試しているのですが、なかなかうまくいきません。
単項目(numberやvarchar2)の配列なら実現できたのですが、項目数が多くなると煩雑になるので、上記のようなやり方ができるととても便利なのですが・・・。

752:デフォルトの名無しさん (ワッチョイ d7e2-NoHY)
16/09/22 16:37:30.73 wTxDVkWz0.net
private async Task PageLoad()
{
TaskCompletionSource<bool> PageLoaded = new TaskCompletionSource<bool>();
webBrowser1.DocumentCompleted += (s, e) =>
{
if (webBrowser1.ReadyState != WebBrowserReadyState.Complete) return;
if (PageLoaded.Task.IsCompleted) return;
PageLoaded.SetResult(true);
};
while (PageLoaded.Task.Status != TaskStatus.RanToCompletion) { await Task.Delay(10) }
}

webbrowser1.navigate(URL)の読み込みを待つ関数なんですが、これはどういう原理で動いてるんですか?
DocumentCompletedのイベントにawaitタスクを挟んで非同期にして処理の終わりを待つんですよね?
でもDocumentCompletedはドキュメントの読み込みの処理の終わりにしか呼ばれないなら
ラムダ内部はSetResult()だけでいいのかと思えば、そうするとエラーでます。

753:デフォルトの名無しさん (アウアウ Sa25-S2gS)
16/09/22 18:25:46.65 Xy0e3ZYia.net
ゲームや家電のUIでよくある、背景色には透過がかかってるけど文字だけは
不透明みたいなウィンドウってWindows Formでは実現難しかったっけ?

754:デフォルトの名無しさん (ワッチョイ 1c5e-xjL4)
16/09/22 18:36:07.99 BI5UtsIL0.net
>>743
コントロール個別は無理だがForm全体は透過を設定できる。Form.Opacity

755:デフォルトの名無しさん (ワッチョイ d78c-xjL4)
16/09/22 19:09:11.54 9JyT007J0.net
初歩的な質問ですみません

実行したら
アプリ(さんぷるA)にフォーカスが移り
F5
Ctrl + v
Tab
Enter

の順にキー入力するにはどうすればいいのですか?
また実行後アプリを終了するようにするにはどうすればいいのですか?

756:デフォルトの名無しさん (ワッチョイ 1c5e-xjL4)
16/09/22 19:17:50.59 BI5UtsIL0.net
>>745
多分この辺
URLリンク(whoopsidaisies.hatenablog.com)
終了はProcess クラス
URLリンク(msdn.microsoft.com)
CloseMainWindow()かKill()

757:デフォルトの名無しさん (ワッチョイ d78c-xjL4)
16/09/22 19:24:09.54 9JyT007J0.net
>>746
ありがとうございます

758:デフォルトの名無しさん (フォォーッ MM1f-5q76)
16/09/22 19:42:42.51 Kf3JakCfM.net
>>743
バックカラーを透明色に指定すればできる


Label1.BackColor = Color.Transparent;

759:デフォルトの名無しさん (ワッチョイ 9f49-Pb1R)
16/09/22 20:16:17.95 c0uylKlH0.net
>>743
Opacityプロパティを設定すれば半透過には出来るけど、文字も含めてウィンドウ全体がそうなっちゃう.。

>>748
ウィンドウやコントロールに対しては設定できないよ。実行時にArgumentExceptionが出る。

760:デフォルトの名無しさん (ワッチョイ 1c5e-xjL4)
16/09/22 20:31:26.88 BI5UtsIL0.net
ああ、全ての表示が透過になるんだったなw>>744はダメだ
>>749
フォームかパネルの背景が見えてコントロールが透けるだけでいいのなら>>748で良くないか
一部Transparentにできないコントロールはあるけど

ボタンとかはできてトラックバーは反映されなかったと思う

761:デフォルトの名無しさん (フォォーッ MM1f-5q76)
16/09/22 20:50:15.82 Kf3JakCfM.net
>>743さんのやりたいことのバックがなんなのかわからないけど
PictureBox1.Controls.Add(Label1);
とやればピクチャーボックスが見えつつラベルの背景色を透明にできるけどどうなんだろう

762:デフォルトの名無しさん (ワッチョイ 7e9f-djfZ)
16/09/22 21:20:00.93 TQKVxpQC0.net
背景を透過にする時は文字を縁取りしないとまともに読めないから面倒だよな
文字の描画を独自で作らないといけなくなって、「やってられるか」って手を抜くと
使えない機能が残って、結局ゴミアプリ度が上昇して終わる

763:デフォルトの名無しさん (ワッチョイ 613c-UBrL)
16/09/22 21:24:26.75 yLq2H4nH0.net
WPFでやれって話になるわけか

764:デフォルトの名無しさん (アウアウ Sa25-S2gS)
16/09/22 21:30:46.76 s0Lz39vRa.net
>>751
画像検索でググっても適当なのがなかなか見つからないけど、
例えばこれのメッセージ表示部のような感じ。
URLリンク(userdisk.webry.biglobe.ne.jp)

>>744,>>748,>>749
とりあえずレスどうも。
やっぱりWindows Formでは少なくとも簡単は方法はなさそうですね。

昔調べてWin32API使う必要があるのは知ってましたが、上のようなUIもメジャーになってるし
さすがに今はもっと簡単な方法が提供されれるかもと思ったんですが、メンテナンスモードの
Windows Formにそういうのはやはり期待する方が間違ってるか。

まあ、WPF使えばいいんでしょうけどね。個人的に嫌いだからw

765:デフォルトの名無しさん (フォォーッ MM1f-5q76)
16/09/22 21:43:19.99 q3QSoo39M.net
>>754
その画像ならこれでできますよ
PictureBox1.Controls.Add(Label1);
Label1.BackColor = Color.Transparent;

766:デフォルトの名無しさん (フォォーッ MM1f-5q76)
16/09/22 21:47:08.11 q3QSoo39M.net
もう少し詳しく書くとこうです
PictureBox1.Controls.Add(PictureBox2);
PictureBox2.Controls.Add(Label1);
Label1.BackColor = Color.Transparent;

PictureBox1に背景画像を入れてPictureBox2にメッセージ画像を入れれば参考画像のようになりますよ

767:デフォルトの名無しさん (フォォーッ MM1f-5q76)
16/09/22 21:56:40.44 q3QSoo39M.net
あ、半透明ですかw

ここにサンプルありますよ
URLリンク(dobon.net)

768:デフォルトの名無しさん (フォォーッ MM1f-5q76)
16/09/22 21:57:49.20 q3QSoo39M.net
>>757 + Label1.BackColor = Color.Transparent;でできると思います

769:デフォルトの名無しさん (アウアウ Sa25-S2gS)
16/09/22 23:02:13.93 s0Lz39vRa.net
>>756
ああ、確かにウィンドウ内の一部の領域ということなら方法はありそうですね。

トップレベルウィンドウの背景の一部または全部を他のウィンドウに対して
透過する方法はやっぱりないですよね。

770:デフォルトの名無しさん (ワッチョイ dddc-IfJd)
16/09/22 23:06:35.01 P28LZX5F0.net
>>742
バグってるぞこれ
イベントハンドラを追加しっぱなしで削除してないから、PageLoadを呼ぶたびにイベントハンドラが増える
だからIsCompletedの条件を削除するとSetResultの2度目の呼び出しが発生してエラーになるはず
最後の馬鹿みたいな完了待ちループといい、これ書いた本人がTaskを正しく理解してないからこんなもん真似しちゃダメ
正しくはこんな風にする
private Task PageLoad(Uri uri) {
TaskCompletionSource<bool> pageLoaded = new TaskCompletionSource<bool>();
EventHandler handler = (s, e) => {
 if (webBrowser1.ReadyState == WebBrowserReadyState.Complete) {
  webBrowser1.DocumentCompleted -= handler;
  pageLoaded.SetResult(true);
 }
};
webBrowser1.DocumentCompleted += handler;
webBrowser1.Navigate(uri);
return pageLoaded.Task;
}

771:デフォルトの名無しさん (ガックシ 0694-pbYT)
16/09/23 15:45:17.32 LY9xYEOG6.net
下記のページで紹介されている
同じレベルのコントロールを含めて透明に表示するということをやりたいんですが
URLリンク(mitsu.three-atmarks.com)
僕の理解力がないせいで、上のページで言われている
要は、背面のコントロールを描画するときに、
Graphicsの原点を背面のコントロールの位置にずらせれば、
直接コントロールに描画出来るはず。
という部分について、なぜこのようにすれば直接コントロールに描画できるのか
理解できないです。もう少し分かりやすく説明していただける方が
いらっしゃればありがたいです。

772:デフォルトの名無しさん (アウアウ Sa25-S2gS)
16/09/23 17:38:10.48 pqhQamNta.net
>>761
コントロールAがForm上の(50, 50)、コントロールBが(100, 100)にある時、
Bから見て、つまりBの左上を原点とする座標系では、Aの位置は(-50, -50)
になるのは分かる?

つまり、Bの背景にAを画像として描画するとき、�


773:カ上が(-50, -50)になる位置に 描画しなければならない。 全部は読んでないけど、君が引用してる部分が言ってるのはただそれだけの話だと思うけど。



774:デフォルトの名無しさん (ガックシ 0694-pbYT)
16/09/23 18:23:52.80 LY9xYEOG6.net
>>762
なるほどです
分かりやすい説明ありがとうございました!!
難しく考えてたみたいです

775:デフォルトの名無しさん (ワッチョイ b4ce-UBrL)
16/09/24 03:08:32.58 y416C6jo0.net
Win7とWin10でFormに動的に配置したコントロールの位置が変わってしまうんですが
10のバグでしょうか

776:デフォルトの名無しさん (アウアウ Sa25-S2gS)
16/09/24 03:11:46.60 iY+8jZQKa.net
>>764
まずは問題を再現可能なサンプルをプリーズ
こういう場合はまず間違いなくバグってるのはユーザーコードだと思うけどw

777:デフォルトの名無しさん (ワッチョイ b4ce-UBrL)
16/09/24 08:56:19.69 y416C6jo0.net
↓のようなコードです。10の最新版だと下側のボタンがTextBox1に隠れてしまう
using System;
using System.Windows.Forms;
public partial class Form1 : Form {
public StatusBar StatusBar1;
public Button Button1, Button2;
public TextBox TextBox1;
private void Form1_Load(object sender, EventArgs e) {
StatusBar1 = new StatusBar();
StatusBar1.Text = "StatusBar1";
this.Controls.Add(StatusBar1);

Button1 = new Button();
Button1.Left = 5; Button1.Top = 5; Button1.Width = 100;
Button1.Text = "Button1";
this.Controls.Add(Button1);

TextBox1 = new TextBox();
TextBox1.Multiline = true;
TextBox1.ScrollBars = ScrollBars.Vertical;
TextBox1.Left = Button1.Left;
TextBox1.Top = Button1.Bottom + 5;
TextBox1.Width = ClientSize.Width - 10;
TextBox1.Height = ClientSize.Height - (TextBox1.Top + StatusBar1.Height + Button1.Height + 10);
TextBox1.Anchor = (AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Right);
TextBox1.Text = "TextBox1";
this.Controls.Add(TextBox1);

778:デフォルトの名無しさん (ワッチョイ b4ce-UBrL)
16/09/24 08:57:08.71 y416C6jo0.net
Button2 = new Button();
Button2.Left = TextBox1.Right - Button1.Width;
Button2.Top = TextBox1.Bottom + 5;
Button2.Width = Button1.Width;
Button2.Anchor = (AnchorStyles.Bottom | AnchorStyles.Right);
Button2.Text = "Button2";
this.Controls.Add(Button2);
}
public Form1() {
this.Load += new EventHandler(this.Form1_Load);
}
[STAThread]
private static void Main(string[] args) {
Application.Run(new Form1());
}
}

779:デフォルトの名無しさん (ワッチョイ b4ce-UBrL)
16/09/24 10:10:10.95 y416C6jo0.net
すいません気のせいでした。
スクリーンサイズが小さくなった時にウィンドウのボタンが画面外にあったのをを勘違いしてました。

あと別件ですが、Win7と10のバイナリを共通にしたいのですが、
OSデフォルトのNET3..5とNET4共通バイナリを作る方法ってないでしょうか。
ネイティブだと1本で済むのにOSランタイム毎にビルド管理とかちょっとやってられない、
そんな気がして。

780:デフォルトの名無しさん (ワッチョイ 8dd6-xjL4)
16/09/24 11:13:46.90 oK3h3qVH0.net
3.5で作るかインストールPCにランタイム入れれば良いじゃん
それが嫌なら.Net Frameworkは使うな

781:デフォルトの名無しさん (ワッチョイ a030-PAdl)
16/09/24 11:29:43.09 hsY2X9yo0.net
(そんな方法は)ないです

って答えればいいんだよ
欲しがりは成長と進化の基礎だからいいの

782:デフォルトの名無しさん (アウアウ Sa25-S2gS)
16/09/24 11:52:58.88 JwK8cJB+a.net
ありますよw
厳密には指定できるのは.NET FRameworkのバージョンじゃなくてCLRのバージョンみたいだけど
URLリンク(msdn.microsoft.com)(v=vs.110).aspx

783:デフォルトの名無しさん (ワッチョイ d7c0-5q76)
16/09/24 12:00:45.52 Of8aeM470.net
こういうの見るとMSがテロ紛いでWin10にしたがる気持ちが判らんでもないな

784:デフォルトの名無しさん (ワッチョイ 9f49-cp+5)
16/09/24 14:46:53.85 1AtHYWO90.net
>>768
WindowsUpdateはしないの?
Windows7でも最新のWindowsUpdateまで適用すれば、Windows10と変わらんぞ。

785:デフォルトの名無しさん (ワッチョイ d77b-su3J)
16/09/25 15:25:


786:15.21 ID:fq9dYi1p0.net



787:デフォルトの名無しさん (ブーイモ MMad-Px3x)
16/09/25 16:36:01.47 4xz/DsvPM.net
破滅的なコードのせいでマイグレートできないので古いシステムをごまかしごまかし使うしかないんだよね
我々も反省しなければならない

788:デフォルトの名無しさん (ワッチョイ 5b5b-7Sel)
16/09/29 00:23:18.02 +0Qp1kVd0.net
C#の勉強を始めたのですが
オープンソースでいいお題(アプリ)が置いてあるところ無いでしょうか

789:デフォルトの名無しさん (ブーイモ MM57-LGiF)
16/09/29 01:40:43.54 /9QwJEmmM.net
Githubとかかな

790:デフォルトの名無しさん (ワッチョイ 5b5b-7Sel)
16/09/29 12:47:00.61 +0Qp1kVd0.net
>>777
ありがとうございます
GitHubで探してみましたが自分の探しかたがいけないのかいい感じのものがヒットしませんでした
また何かあれば宜しくお願い致します

791:デフォルトの名無しさん (ワッチョイ 4742-RPp1)
16/09/29 15:02:11.83 Rdq+cK8X0.net
C# で作られた他のソフトにある
ステータスバーのパネルの文字を取得する方法を教えてください

こちらを参考にしましたがパネルの情報が取れないよう
URLリンク(www.pinvoke.net)

792:デフォルトの名無しさん (ワッチョイ 7b19-GPCj)
16/09/29 15:07:55.35 DKzjXM9a0.net
まずそのステータスバーのパネルの文字ってのは
spy++でウィンドウ辿っていって見つかるかどうか
見つからなかったら無理 IAccessibleでワンチャンあるかも

793:デフォルトの名無しさん (ワッチョイ 1f13-rzru)
16/09/29 15:28:30.93 VK4C2vGz0.net
>>776
MSDNのサンプルコード
URLリンク(msdn.microsoft.com)(v=vs.120).aspx

794:デフォルトの名無しさん (ワッチョイ 27ce-ETlQ)
16/09/30 03:42:26.49 j/prnWis0.net
>>779への回答にはならないけど
昔ロボワードって製品があって、マウスカーソルがフォーカスするテキストを
GDIのTextOutを横取りする離れ業で文字列を取得して翻訳をポップアップ表示してた
今ってそういう事はできないかねえ
Spy++で取ってこれる程度ならいいんだけど
上相当を行う仕組みって用意されてないのかな

795:778 (ワッチョイ 4742-RPp1)
16/09/30 10:44:19.74 IP2ANi1b0.net
>>780 >>782
ありがとうございます
素人なのでちんぷんかんぷんですが
StatusStrip はステータスバーではないため SB_GETTEXT 等が反応しないようです

>>780 さんのいう通り IAccessible だと可能なようですね
他のコントロールや他言語での情報が見られました
粘ってチャレンジすれば素人の自分でもいけそうですが時間がなくてすぐにはムリそうです

>>782 さんの通り描画や極論 OCR みたいのでというアプローチも調べていましたが
実現できたとしても相当大変そうですね

皆様方にご検討いただき感謝しておりますが時間の関係上諦めることにします

796:デフォルトの名無しさん (ワッチョイ 4fe1-rzru)
16/09/30 11:09:21.12 sdeI0aJe0.net
今はIAccessibleよりUIAutomationでは

797:デフォルトの名無しさん (ワッチョイ 27ce-ETlQ)
16/09/30 17:32:46.15 j/prnWis0.net
デバッガでステータスバー描画時に文字列を何のAPIを使って描いてるのか調べて
そのAPIを挿げ替えるか、下のようなのを試してみるとか
テキスト取得DLL※シェアウェア
URLリンク(www.vector.co.jp)

798:デフォルトの名無しさん (ワッチョイ 477b-RPp1)
16/09/30 18:00:54.22 Uo+9x4Cm0.net
C#の質問ではないのですが、ラベルが最大100個必要とします。
その都度の場面で1個必要であったり、10個必要であったり、100個必要であったりします。
ラベルの最大数を抑える為に、ラベルの若い順に多用し、コードを書く方法と、
最大数が数倍に増えてたとしても、その場面専用のラベルを作成し、コードを書く方法はどちらが適切なんでしょうか。
C#の質問というより、プログラムの質問になりましたが、よろしくお願いします。

799:デフォルトの名無しさん (ワッチョイ 4b6a-PJif)
16/09/30 20:00:11.33 JoKU75pb0.net
負荷が問題になるまでは見通しのよいコードを選ぶわ

800:デフォルトの名無しさん (オッペケ Srb7-Xr8z)
16/09/30 20:35:09.51 gcbWMuu4r.net
>>786
日本語で頼む

801:デフォルトの名無しさん (ワッチョイ 27ce-ETlQ)
16/09/30 20:48:47.86 j/prnWis0.net
>>786
表示する度に毎回作成するつもりだとしたら誤り。
最大100なら100個最初から用意して不要なのは非表示にしとく。
それとラベルは1個1個定義するんでなく適当なコンテナにまとめて管理する。

ただ子ウィンドウが100枚は環境によってはチラつきが目立ったりする要因になるから
1枚パネルに100枚分直接描画する事も検討した方が良い。
手間はラベル100個管理するより掛かるけど直接描画は圧倒的に処理が軽い。

802:デフォルトの名無しさん (ワッチョイ c7d4-js6q)
16/09/30 20:50:39.14 FOsPpkI40.net
配列のメモリがいつ確保されるのかについて教えて欲しいのですが
int[] i = new int[10000];
このような配列の宣言とメモリの確保した場合、参照用変数10000個分のメモリは確保されていてもint型10000個分のメモリは未だ確保されていないという認識であっているのでしょうか?

803:デフォルトの名無しさん (ワッチョイ 9bdc-rzru)
16/09/30 20:56:17.43 4hxo3I+i0.net
>>790
intは値型だから参照を介さない
int型1000個分のメモリが確保され、配列オブジェクトへの参照がiへ入る

804:デフォルトの名無しさん (スププ Sd8f-rzru)
16/09/30 22:20:33.12 Fmt1sBQdd.net
>>786
そういうのはListViewコントロールに任せちゃうね

805:デフォルトの名無しさん (ワッチョイ 177b-RPp1)
16/10/01 02:32:14.82 wBNDJc4Z0.net
>>787-789
説明下手および説明不足ですみません。
見通しの良いコードを選ぶということは、分割したほうがいいということでしょうか。

ラベルだけだと説明が足りないので、ボタン3個も追加します。
ラベル100個とボタン3個で色々なパターンの処理を書いた場合についてですが、

例1
ボタン1のクリックイベントにラベルを10個表示するコードを書きます。
そして、ボタン2のクリックイベントにラベルを50個表示するコードを書きます。
最後に、ボタン3のクリックイベントにラベルを100個表示するコードを書きます。

例2
ボタン1のクリックイベントに、if文を書いて、もし場面1ならラベルを10個表示し、
もし場面2ならラベルを50個表示し、もし場面3ならラベルを100個表示する。
というようなコードを書いたとします。


この2つの処理は、例1だと処理を分散することによって読みやすくなると思います。
例2だとボタンを2個削減することができますが、コードが長くなって読み難くなると思います。
行数が増えれば増えるほど、例1が扱いやすくなって、例2は扱いにくくなると思います。
みなさんは、例1と例2ではどちらの書き方を選ぶのでしょうか。
もしくは、もっと管理しやすい別の書き方はありませんでしょうか。

806:デフォルトの名無しさん (アウアウ Sa17-uEQG)
16/10/01 02:39:53.61 zlQj50UYa.net
>>793
結局何を聞きたいの?
そういう処理が本当に必要なわけ?
たぶん違うよね?

実現する必要もない処理の実現方法を聞いて何になるの?

807:デフォルトの名無しさん (ワッチョイ 9730-PJif)
16/10/01 02:54:00.68 MIaIeT8n0.net
そんなコード書かないからどちらも選ばないね

808:デフォルトの名無しさん (ワッチョイ 4fe1-rzru)
16/10/01 02:56:03.71 tNbhSEQ70.net
>>793
利用者目線で使いやすい方を選ぶ
どっちのパターンでも見やすくすることは簡単

809:デフォルトの名無しさん (ワッチョイ 177b-RPp1)
16/10/01 03:03:54.21 wBNDJc4Z0.net
>>794
似たようなコードを何度も再利用する場合、どうコードを書けば最適なのか聞きたいです。
最初は、例1のような書き方をしていて、同じ物を何度も使うのなら、例2にしたほうが無駄が省けるんじゃないかと思い、現在例2で書いてるところなのですが、
現状でも凄い長さになっていて結構読み難いと思い始めてここへ質問にきました。

>>795
似たような処理が不規則に発生する場合、どのように書いてますか?。

810:デフォルトの名無しさん (ワッチョイ 177b-RPp1)
16/10/01 03:07:50.73 wBNDJc4Z0.net
>>796
なるほど、利用者目線ですか。
個人で開発していて、利用者側のほうは考えてませんでした。
どちらでも見やすくできるのですか!。
どう工夫すればどちらでも見やすくすることができるのでしょうか?。

811:デフォルトの名無しさん (ワッチョイ 27ce-ETlQ)
16/10/01 03:44:10.04 q3q/lNQ30.net
そもそもラベル100個表示して、それを見てユーザーがどう思うか考えろ
ユーザーの感想は恐らく「うわーナニコレ気持ち悪い」だよ
まずラベル100個から離れろ
次にユーザーが使う事を前提に考えろ
このままだとまるで頭のおかしい子だぞ

812:デフォルトの名無しさん (ワッチョイ 1f13-rzru)
16/10/01 03:48:04.09 rH9xy5Nb0.net
だからラベル100個も必要ならListView使えっつうの

813:デフォルトの名無しさん (アウアウ Sa17-uEQG)
16/10/01 04:18:56.28 zlQj50UYa.net
言っちゃ悪いけど、アホな中学生が友人に「お前○○(アイドル)に告られたらどうする?」
って聞く類のバカ話にしか聞こえんね。

814:デフォルトの名無しさん (ワッチョイ 47b5-RPp1)
16/10/01 07:10:23.61 VMhdEcdj0.net
C#と直接関係ないんだけどzipで配布するような単純なユーティリティソフトの場合
設定を保存する場所と形式ってどこが良いのかな?

一応Environment.SpecialFolder.ApplicationData以下にXMLで保存する方法と
exeと同一フォルダにiniで保存する2通り作ってみた
VS的にはapp.exe.conifgなんだろうけどなんか気持ち悪い
個人的にはiniの方がファイルが分散しないので好きだけど
今時iniで大丈夫なのか不安もあるので諸兄の意見を聞かせてくれまいか

815:デフォルトの名無しさん (ワッチョイ 9bdc-rzru)
16/10/01 07:51:06.67 rAdXsmVI0.net
>>802
ファイル形式と場所は別問題だろ
俺ならJSONでexeと同じ場所

816:デフォルトの名無しさん (ワッチョイ 47b5-RPp1)
16/10/01 08:05:14.50 VMhdEcdj0.net
>>803
iniの方がじゃなくて同一フォルダの方がだね悪かった
同一フォルダでやります

817:デフォルトの名無しさん (ブーイモ MM57-LGiF)
16/10/01 08:35:09.10 ERiJSEHrM.net
>>797
例題の設定がよくわからない
1つの画面がある
画面の状態によって画面内のラベルの数が変わる
画面の状態を変えるボタンが3つある
これで良いのか?

818:デフォルトの名無しさん (オッペケ Srb7-Xr8z)
16/10/01 10:04:44.50 5I4x+GEMr.net
ラベルとボタンに対応するオブジェクトを、それぞれItemsSourceにBindingで解決。

819:デフォルトの名無しさん (ワッチョイ 177b-RPp1)
16/10/01 12:47:01.78 wBNDJc4Z0.net
>>791
例には書いてませんが、位置、カラー、フォントなどがその場面場面で変わるので、ListViewではできないんじゃないでしょうか。

>>805
その解釈で間違いないです。

>>806
これからやってみます!

820:デフォルトの名無しさん (ブーイモ MM57-LGiF)
16/10/01 13:13:07.74 qYztZe37M.net
ボタンの配置方法に規則性がないなら
パターン毎にカスタムコントロールを作りそのコントロールの要素としてラベルなどを貼り付ける
作成した幾つかのカスタムコントロールを画面に配置する
押されたボタンによって各カスタムコントロールの表示非表示を切り替える

821:デフォルトの名無しさん (ワッチョイ 1723-RPp1)
16/10/01 14:21:29.02 7+OjnMag0.net
>>807
1.xamlで書く
2.オーナードローを使う
俺は1がお薦めだな

822:デフォルトの名無しさん (ワッチョイ 177b-RPp1)
16/10/01 18:45:47.86 wBNDJc4Z0.net
>>808
処理が重過ぎなければ、その方法で管理したほうがよさそうですね!。

>>809
xamlで書くとはどういうことですか。

823:デフォルトの名無しさん (ワッチョイ 1f13-rzru)
16/10/01 20:44:27.08 rH9xy5Nb0.net
>>810
WPFとかXamarinとか ->XAML

824:デフォルトの名無しさん (ワッチョイ 1f20-rzru)
16/10/01 21:36:18.35 8pjQj2AO0.net
C#好きなんだけど
Windowsが落ち目気味だし
そもそもプログラ厶作る人間は
賤業従事者みたいな空気が
なんか辛くなってきました

そんなC#最大の問題を
皆さんどう考えてますか

825:デフォルトの名無しさん (ワッチョイ 1f20-rzru)
16/10/01 21:39:36.33 8pjQj2AO0.net
面接で
C#やってました
と言っても

言語とか底辺の覚えることだし
興味ないから
SEとかやったことないの?
使えねえ

という空気が苦しいです

826:デフォルトの名無しさん (ワッチョイ 9ba6-68Ay)
16/10/01 21:55:14.00 oaKP8GxL0.net
それC#じゃなくてお前自身の問題じゃね?

827:デフォルトの名無しさん (ワッチョイ 1f20-rzru)
16/10/01 22:07:43.59 8pjQj2AO0.net
大手Sierの従兄妹の結婚式に出たら
彼女の上司が
○○ちゃんもプログラマを卒業して
SEになり と祝辞を言ってた

プログラムする人間なんて
社会経験の浅い若造ってことだなと
痛感したよ

少なくとも25歳超えてプログラマとか
IT業界じゃ負け犬という認識なんだなと思った28歳の秋

828:デフォルトの名無しさん (ワッチョイ 1f20-rzru)
16/10/01 22:09:38.38 8pjQj2AO0.net
プログラマの給与基準が
新卒レベルなのが
現実を物語ってるわ

829:デフォルトの名無しさん (ワッチョイ eb3c-ETlQ)
16/10/01 22:17:36.09 j4WTV/sN0.net
PGに限らず、国の体質として技術屋の地位が低い事については確かに思う所はあるが

まあなんだ マ板でやれ

830:デフォルトの名無しさん (ワッチョイ 27cb-rzru)
16/10/01 22:27:05.88 RzLhZEUm0.net
>>817
それでも品質No.1なんだなぁ

831:デフォルトの名無しさん (ワッチョイ 1f20-rzru)
16/10/01 22:27:24.97 8pjQj2AO0.net
マ板は、多重請負が酷すぎるという
書き込みしか見なくなった

LINQの機能に感動すら覚えるほど
C#が好きなのに
プログラマが先行きの怪しい業種と化していて悲しい

832:デフォルトの名無しさん (ワッチョイ 1f13-rzru)
16/10/01 22:38:25.09 rH9xy5Nb0.net
プログラミングやめたいならもうム板にもこなくていいだろ

833:デフォルトの名無しさん (オッペケ Srb7-Xr8z)
16/10/01 22:39:25.90 FxQOa5OAr.net
LINQ毛嫌いする人いるよなあ。
あんなに便利なのに。
ほんの少しの努力はいるけど。

834:デフォルトの名無しさん (アウアウ Sa17-uEQG)
16/10/01 22:47:05.90 IEObNzvoa.net
>>819
今はだいぶ少なくなったんだよw
前は本当にそういう恨み言だらけだった

正直、あの手の連中は自分の問題を企業や業界の問題に
摩り替えているだけにしか思えない。

プログラマって職業を舐めてる。
昔デモシカ教師って言葉があったけど、何を勘違いしたかデモシカでプ
ログラマになってる奴が多すぎるんだな。

835:デフォルトの名無しさん (スププ Sd8f-rzru)
16/10/01 22:47:20.08 UJVgAevHd.net
>>821
だってWhere().Select()で書いた方が短く書けるもん

836:デフォルトの名無しさん (ワッチョイ 1f20-RPp1)
16/10/01 23:25:00.17 8pjQj2AO0.net
LINQ便利だけど
統括する若い女SEが理解できないという理由で
Datasetとか使う羽目になった

多次元配列に二次元配列突っ込む大卒のSEと
Micro-ORMとLINQを使う中年高卒プログラマの俺

大卒とか、高卒中年の俺が目を回すような
新技術とか使ってくるのが普通だと思ってたんだけど
今の大学はプログラムなんてまともに教えてないんだろうなと感じた

まあ、底辺の賤業なんて、大学で学ぶ価値無いもんな

837:デフォルトの名無しさん (ワッチョイ 1f20-RPp1)
16/10/01 23:28:39.54 8pjQj2AO0.net
つか、女SEは、デリゲートどころか継承すら忌避するんだけど
大学ではもうプログラムの授業は必須じゃないのかね?

高卒中年には事情が分からんよ

838:デフォルトの名無しさん (ワッチョイ eb3c-rzru)
16/10/01 23:33:06.55 R05VqS280.net
>>825
そんな職場で働く自分を恨め
嫌なら転職しろ

839:デフォルトの名無しさん (ワッチョイ 1f20-RPp1)
16/10/01 23:37:51.58 8pjQj2AO0.net
>>826
プロジェクトが終わるまでは
付き合わないとダメかなと思うおれは、
やはり昭和の人間か

今の若者は、見切りが早そうだしね

現状に最適化されてるんだろう

840:デフォルトの名無しさん (ワッチョイ eb3c-rzru)
16/10/01 23:41:07.40 R05VqS280.net
>>827
継承を避けるのはまだわかるけどね

841:デフォルトの名無しさん (ワッチョイ 9bdc-dvmP)
16/10/01 23:45:00.08 rAdXsmVI0.net
>>827
お前の仕事はモノを納品することか? 違うだろ?
プログラマとして労働力を提供することだろ?
勘違いするな、黙って言われた通りに手を動かせ

842:デフォルトの名無しさん (ワッチョイ 475e-RPp1)
16/10/01 23:49:41.63 wYwnqMss0.net
ここ質問スレなんだから弁えてくれよ
ワッチョイ表示されているのにやめとこうとか思わないのかな
検索したら他の書き込みも見つかるんだよ

843:デフォルトの名無しさん (ワッチョイ 1f20-RPp1)
16/10/01 23:50:00.46 8pjQj2AO0.net
>>829
古い技術で冗長に作るのは構わないけど
それで完成を急がせるとか悪夢なんだよな

プログラマでも、夜10時には帰りたいんだよ

IT業界最底辺のプログラマの癖に
生意気な発言かも知れんけど

844:デフォルトの名無しさん (ワッチョイ 1f20-RPp1)
16/10/01 23:52:27.12 8pjQj2AO0.net
つか、最近この業界は女が多いな
元請けにだけど

SEの6割くらい女だ

845:デフォルトの名無しさん (スププ Sd8f-rzru)
16/10/02 00:10:23.06 7Va7E79+d.net
ウジウジ気持ち悪い奴だな

846:デフォルトの名無しさん (ワッチョイ 177b-RPp1)
16/10/02 02:04:45.52 6e8EcOa10.net
>>811
.NET以外を使うってことですね!。
レスありがとうございました。

847:デフォルトの名無しさん (ワッチョイ 4349-xqgw)
16/10/02 02:58:07.19 wunJRFms0.net
>>834
WPFは.NETなんだけど。

848:デフォルトの名無しさん (ワッチョイ 7fc6-JF6f)
16/10/02 04:46:38.35 HmiRIMtE0.net
>>827
それじゃプログラマじゃなくてコーダーじゃん

849:デフォルトの名無しさん (ブーイモ MM57-LGiF)
16/10/02 12:12:47.44 VPKGbKQDM.net
>>824
DataSetで書かれた難解で長いプログラムはわかるのにLinqで書かれたシンプルで短いプログラムはわからないなんて不思議だよね

850:デフォルトの名無しさん (ワッチョイ 6748-uvlU)
16/10/02 12:41:22.23 Y2xoqUni0.net
単純だから容易というわけではない、シンプルとイージーの違いネ

851:デフォルトの名無しさん (ワッチョイ 9730-PJif)
16/10/02 12:47:36.32 O3UtDhl/0.net
先週この板で一番狂ってるのはjavascriptスレって書いたけど
ここ2~3日はふらっとC#とC#相談室の両スレもいい蒸留してるよ

852:デフォルトの名無しさん (アウアウ Sa17-uEQG)
16/10/02 12:55:43.94 XDiD4uyfa.net
というより、他人(あるいは数か月後の自分)視点を意識してコードが書けるかどうかの違いでしょ。
読みづらいコードもそれなりに可読的なんだよ。
書いてる時に書いてる本人にとっては。

使う技術は関係ない。
クエリ式もラムダ式もこういう意識がない奴にかかったら読みづらくてしょうがないものが出来上がる。

853:デフォルトの名無しさん (ワッチョイ 27cb-rzru)
16/10/02 13:45:15.31 rG0Iec2X0.net
>>840
このスレでlinqやらラムダ式やらひたすら質問しまくってるくせに
他人


854:がそれをわからない可能性を欠片も想像できないんだよな 彼はお前のコードは読みにくいって言われたときにそれを受け入れることはできるんだろか?



855:デフォルトの名無しさん (ワッチョイ 4b90-fN+R)
16/10/02 13:47:23.31 qYaftGvG0.net
Dockのようなランチャーを作りたいんですが何を使って作ったらいいのか検討もつきません
何を使えばいいでしょうか?

856:デフォルトの名無しさん (ワッチョイ 475e-RPp1)
16/10/02 14:30:26.31 eLKM9Z4N0.net
>>842
どういうことをしたいのかまとめるのを先にやらないと
C#のForm内で実行する外部アプリのウィンドウを表示させるのは多分出来ない
複数のアプリの起動・終了・アクティブ化くらいならProcessとかで出来る

857:デフォルトの名無しさん (オッペケ Srb7-rzru)
16/10/02 15:56:40.74 y4aGXedMr.net
たまにプログラム書いたことないSEっているよね?
どういう経緯でSEになれるの?
あと仕事になるの?
女でもプログラム書けないSEがいるんだが…

858:デフォルトの名無しさん (ワッチョイ c7d4-js6q)
16/10/02 16:20:08.90 U5FzGUog0.net
日本の一部の会社では営業のことをSEって言ってるんだと思えばいいんだよ
営業だと総合職になるので出世コースを用意させられそうなところ、技術職の名目で用意しないって寸法よ

859:デフォルトの名無しさん (ワッチョイ eb3c-RPp1)
16/10/02 16:41:27.15 laSZMLZ30.net
ふらっと C#,C♯,C#(初心者用)

860:デフォルトの名無しさん (オッペケ Srb7-rzru)
16/10/02 17:02:42.62 y4aGXedMr.net
>>845
そういうことなのか…
可愛い顔してSEっていうからプログラム脳なのかと思ったら違ったから意味不明だったわ

861:デフォルトの名無しさん (ワッチョイ 4349-xqgw)
16/10/02 21:00:35.43 wunJRFms0.net
実際、会社説明会行ったら、進行役の人がSEを紹介する時にシステム営業って呼んでたことがあった。
言われた瞬間のSEの人の顔が面白いことになってたが。

862:デフォルトの名無しさん (ワッチョイ 5b17-fN+R)
16/10/02 21:05:09.85 nHcCPZ2m0.net
別に SE に限らず、外に出る人は全て営業て認識は間違いではないような。そういうのを理解してないのが多すぎるけど。
完全にスレチだが。

863:デフォルトの名無しさん (ワッチョイ 27cb-rzru)
16/10/02 21:37:39.14 rG0Iec2X0.net
>>849
そういうのいいんで営業通してもらえます?

864:デフォルトの名無しさん (ワッチョイ c7d4-js6q)
16/10/02 21:39:31.23 U5FzGUog0.net
外に出ればなんでも営業の側面があるのは確かだろうけど、働く側にしてみれば総合職なのか一般職なのかの違いは重要だろう

一般的にいう営業 = 総合職で雇った新人の取引先へのお披露目を兼ねてるセールスマン
名ばかりSE = 技術職の名前でおだてられている出世なしのセールスマン

865:デフォルトの名無しさん (ワッチョイ eb3c-ETlQ)
16/10/02 21:46:08.51 iDLKJ1fp0.net
マ板でやれって

866:デフォルトの名無しさん (アウアウ Sa17-uEQG)
16/10/02 23:28:14.98 i2p2EOqEa.net
昨日も書いたけどさ、くだらない恨み言を書いてる奴は
本人は会社や業界の問題点を指摘してるつもりかもしれないけど、
他人から見たらうだつの上がらない自分自身を語るに落ちてるだけに見えてるって
いい加減気が付いた方がいいと思うよw

867:デフォルトの名無しさん (ワッチョイ 9730-PJif)
16/10/02 23:29:21.56 O3UtDhl/0.net
配列(int[10000])のメモリを確保する仕事を繰り返してるうちに頭がやられたんだろ
そんな忠告通じるかい

868:デフォルトの名無しさん (ワッチョイ 1f20-RPp1)
16/10/03 00:26:29.74 AAbakoPq0.net
C#を勉強していて
インターフェースなる概念を学んだのですが
メソッドの実装が無い時点で
インターフェースを継承したクラスを作る各人が
好き放題実装を書くことになるんですよね?

実装方法の違う同名メソッドを
みんなで作るのは工数の無駄のように思いますし
収集もつかなくなるような気がするのですが
理解が誤っているでしょうか?

869:デフォルトの名無しさん (ワッチョイ fb3a-RPp1)
16/10/03 00:57:50.23 DydELLCK0.net
>>855
インターフェイスは名前通り、モジュールとモジュール(或いはクラスとクラス)の境界を定義する機能
同じ意味合い(データを取得)の別メソッド(顧客データをDBから取得/顧客データをファイルから取得)みたいなものを作って、
柔軟に差し替えができる。
使う側はインターフェイスだけ意識すれば良い。

使い捨てで柔軟性を必要としないプログラムを作ってるなら、工数の無駄かもね。

870:デフォルトの名無しさん (ワッチョイ fb3a-RPp1)
16/10/03 01:01:47.75 DydELLCK0.net
あれ?釣られた?

871:デフォルトの名無しさん (ブーイモ MM57-LGiF)
16/10/03 01:01:53.62 IYpgz1/LM.net
言語的には確かにインターフェースにはメソッドの呼び出し規約しか存在しない
でも設計書にはこのインターフェースを実装するクラスは何々しなきゃダメよといったより抽象的な規約が書かれているはずだ
インターフェースを使う側は規約のみに依存すれば良い
インターフェースを実装するクラスは規約を満たすことのみを考えれば良い
インターフェースがあれば各クラスの領分をハッキリと分離できるんだ
そして規約を満たしていれさえいればインターフェースの実装方法に制限はないため強い互換性が獲得できる
つまりプログラムにSOLIDな特性が発生して強靭でしなやかな作りになるんだ

872:デフォルトの名無しさん (アウアウ Sa17-uEQG)
16/10/03 01:27:29.89 Pw6tjCZia.net
>>855
うだうだ考えてるより実例を見た方が早いよたぶん。
とりあえずIComparableあたりがBCLでどうやって利用されてるかでも調べたらどうかな

873:デフォルトの名無しさん (ワッチョイ 27cb-rzru)
16/10/03 01:28:57.92 DRFx4tO40.net
まあ、もちろん
インターフェースの提供側と使用側が金銭レベルで分かれてる環境でしか機能しない
自分や隣の席に座ってる奴にインターフェースなんてこさえてやっても時間の無駄だ

874:デフォルトの名無しさん (ワッチョイ 27cb-rzru)
16/10/03 01:40:30.28 DRFx4tO40.net
現実的な話として作成中に
インターフェースの引数じゃたりないんすけど?
ってなったら増やすしかない
じゃ、いつもの関数と変わんねーじゃんなにが柔軟なんだよってのもその通りで提供側と使用側がはっきり分かれていないと
恩恵は全くわからない   はず

875:デフォルトの名無しさん (ワッチョイ 1f13-rzru)
16/10/03 02:08:33.30 0EHB0e2M0.net
いやいや、自分一人でコーティングするプロジェクトでもインターフェイスは多用しますって

876:デフォルトの名無しさん (ワッチョイ 477b-eUFH)
16/10/03 02:30:26.02 a2PPRqH/0.net
インターフェースとは、ダックタイピング。
アヒルのように鳴くものは、アヒルとみなす

呼ぶ側は、cry を呼ぶから、
呼ばれる方は、cry を実装しておいて下さい、という決め事

A.cry, B.cry が実装してあれば、A, B はアヒルとみなす。
ここで、A, B は一般的に、継承関係のないクラス

継承関係のないクラスに対して、同じ関数名を強制する

877:デフォルトの名無しさん (ワッチョイ c77b-JF6f)
16/10/03 04:30:45.81 hKZ6axFq0.net
>>863
ところがだ
最近はdynamicを使う

878:デフォルトの名無しさん (ワッチョイ 27cb-rzru)
16/10/03 06:23:38.11 DRFx4tO40.net
>>862
意味ねー
関数の引数なんて必要とあらばいつでも変更すればいいだろ

879:デフォルトの名無しさん (ワッチョイ 4742-RPp1)
16/10/03 06:24:45.16 xbCUt/Ve0.net
多態するだろw

880:デフォルトの名無しさん (ワッチョイ 27cb-rzru)
16/10/03 06:28:14.08 DRFx4tO40.net
>>866
インターフェースの本来の使い方何だろか?

881:デフォルトの名無しさん (ワッチョイ 4742-RPp1)
16/10/03 07:14:57.14 xbCUt/Ve0.net
そうだよ!w
本来というのが何を指すのか知らんが大きなメリットのひとつ

それに多態しなくても依存性を断ち切っておけば
その後のコードの切り回しのしやすさが段違い
一人でも使いまくる

882:デフォルトの名無しさん (ワッチョイ c394-6fmH)
16/10/03 12:09:00.68 sK18CVwJ0.net
自分でインターフェース作らない人でも恩恵には預かってるんじゃないの
IEnumerableとか

883:デフォルトの名無しさん (アウアウ Sa77-7Sel)
16/10/03 12:39:51.14 wG2YSR7Ja.net
道具っつーもんは使い方を覚えて初めて便利だと思えるもんだからなぁ

884:デフォルトの名無しさん (ドコグロ MM2f-rzru)
16/10/03 14:40:25.35 UhPwVzIDM.net
>>868
ひとりで組んでるときにそんなことするの無駄じゃない?
組み方や仕様に迷いがあるからくだらない汎用性付けようとするわけで

885:デフォルトの名無しさん (ワッチョイ 4f90-RPp1)
16/10/03 14:42:17.86 2dHs/sIj0.net
IEのユーザエージェントをいじってスマホにして遊んでました。
その後、サイトにアクセスすると見づらいので元のIE(PC)のユーザエージェントに
戻したいのですが、どうすれば最新のIEのユーザエージェントが分かりますか?


ネットでぐぐってもIEの最新バージョンのユーザエージェントを公開しているところがありません。

886:デフォルトの名無しさん (ワッチョイ 7b19-GPCj)
16/10/03 14:44:44.28 whgMhbbL0.net
スレ違いなのでWindows板のInternet Explorerスレ辺りに行ってきて
どうやってUA変えたかも書くんだぞ

887:デフォルトの名無しさん (スププ Sd8f-rzru)
16/10/03 17:21:41.87 pR9GPAtgd.net
>>867
多態使わないのかよw
if文シコシコ羅列してクラス型ごとに動作変えるのは大変でしょうに

888:デフォルトの名無しさん (ササクッテロ Spb7-LGiF)
16/10/03 17:47:34.85 OopphbkDp.net
>>863
ダックタイピングはアヒルの様に見えアヒルの様に振る舞うならばそれはアヒルであるとみなす考え方で、C#ならばdynamicを使う
一方インターフェースはアヒルの様に振る舞うとしても「アヒル」インターフェースを実装してなければアヒルとは認めないという考え方

どちらも多態性を提供するが混同すべきじゃない

889:デフォルトの名無しさん (アウアウ Sa67-uvlU)
16/10/03 18:21:37.63 BG7c9nZ4a.net
ガンダムでお願いします

890:デフォルトの名無しさん (ワッチョイ eb3c-ETlQ)
16/10/03 18:37:30.20 WmAakHDe0.net
「アイカメラがツインアイ + ブレードアンテナが額から伸びる2本の角型」 なら何でもガンダムと見做すのがダックタイピング
「外観を問わず、(鉄オル準拠で)ガンダムフレームが組み込まれている物」 をガンダムと定義するのがインターフェース

891:デフォルトの名無しさん (ワッチョイ eb3c-ETlQ)
16/10/03 18:37:57.43 WmAakHDe0.net
尚、ブレードアンテナの形状について
∀を持ち出しての反論は受け付けない物とする

892:デフォルトの名無しさん (ワッチョイ c7d4-js6q)
16/10/03 18:38:07.30 debxKRu60.net
オンラインIDEでC#の補完がちゃんとできるやつってないかな?
一度入力したオブジェクト名やメンバ名を保管してくれるのはあっても、ローカルIDEみたいに全て補完してくれないのだらけだ・・・・

893:デフォルトの名無しさん (アウアウ Sa67-uvlU)
16/10/03 18:58:31.57 BG7c9nZ4a.net
C#諦めました…

894:デフォルトの名無しさん (ワッチョイ 27cb-rzru)
16/10/03 18:59:14.80 0mzqHUL00.net
>>874
いや、逆に分岐条件を明示しないことで何やってるのか組んだ奴にしかわからんほうが嫌なので

895:デフォルトの名無しさん (ワッチョイ eb3c-ETlQ)
16/10/03 19:05:52.04 WmAakHDe0.net
ええ……

896:デフォルトの名無しさん (ワッチョイ fb7b-S4Np)
16/10/03 19:35:51.50 DGeMMOSU0.net
そんな現場やだ

897:デフォルトの名無しさん (オッペケ Srb7-rzru)
16/10/03 19:44:54.54 2NCq6u8sr.net
動けばいいんだよ

898:デフォルトの名無しさん (ササクッテロ Spb7-LGiF)
16/10/03 19:47:20.06 OopphbkDp.net
>>881
うわぁ…

899:デフォルトの名無しさん (ワッチョイ 5b5b-9qEq)
16/10/03 19:57:52.60 HeYPjqdu0.net
新人でも自分で理解できる可読性を優先させるのはありっちゃあり

900:デフォルトの名無しさん (ブーイモ MM57-LGiF)
16/10/03 20:11:25.46 SRnyVZlvM.net
>>881
君の釣り針はいつもデカいな

901:デフォルトの名無しさん (ワッチョイ fb42-RPp1)
16/10/03 20:24:02.26 E6Z8Y8f50.net
>>871
まあそのとおりなんだが

いっときInterface病にかかって全部のクラスにIFつけてた
今見ると無様

でも迷ってても実装が進むし柔軟性はあったぞ!

902:デフォルトの名無しさん (ワッチョイ 27cb-rzru)
16/10/03 21:14:05.48 o5lyUn4M0.net
>>887
正論過ぎて反論できないだろ?

903:デフォルトの名無しさん (ブーイモ MM8f-LGiF)
16/10/03 23:35:40.82 lhwmhlCDM.net
テスタビリティ考えると1人作業でもアプリケーションコードではインターフェース必須なんだよね
インターフェースが必要ないのはPOCOで依存がないドメインオブジェクトとかFCLのようなコアライブラリだけ

904:デフォルトの名無しさん (ワッチョイ 27cb-rzru)
16/10/04 00:33:22.83 /FCIPvE20.net
>>890
それやるのに実装まで影響がでるってとこに納得行かない
方針が間違ってるんじゃねーの?
ぶっちゃけ俺も誰がどんな場面想定してこんなゴミ作ったのか知らんけど

905:デフォルトの名無しさん (スププ Sd8f-rzru)
16/10/04 01:02:29.71 UQnVBbe6d.net
インターフェイスがゴミとか言ってんのお前だけだぞ
>>891

906:デフォルトの名無しさん (ワッチョイ 4742-RPp1)
16/10/04 06:38:56.74 hihlaoI70.net
>>891
文章のパーサを切り替えたり
AIのコアのアルゴリズムを入れ替えたり
ゲームのキャラを一括で扱ったり
DIしたり
もうないと生きていけないレベルで必要

907:デフォルトの名無しさん (ラクッペ MM37-rzru)
16/10/04 07:24:11.99 hVjLfR/3M.net
インターフェイスの使いどころを
質問した者ですが
インターフェイスは継承した
クラスで内容の違う同じ名称の
メソッドを作る
つまりオーバーライドのように
使う物と考えて良いのでしょうか

908:デフォルトの名無しさん (ワッチョイ 27cb-rzru)
16/10/04 07:28:36.70 /FCIPvE20.net
>>893
わざわざこんな仕組みでやる必要ねーし
っていうかそんな仕様あったの?
どうせいつもの妄想だろ?

909:デフォルトの名無しさん (ワッチョイ 4742-RPp1)
16/10/04 07:42:39.26 hihlaoI70.net
え…仕様って…

910:デフォルトの名無しさん (アウアウ Sa77-7Sel)
16/10/04 07:48:20.97 tSzkB+1za.net
兄より優れた弟など存在しねぇでお馴染みのジャギさんきてんね

911:デフォルトの名無しさん (ドコグロ MM2f-rzru)
16/10/04 07:55:32.96 rdpgIcW9M.net
>>896
だから、実際そういう需要(仕様)があったうえでの話をしてるの?

912:デフォルトの名無しさん (スッップ Sd8f-rzru)
16/10/04 08:10:36.41 8gRIuvr1d.net
>>898
インターフェイス便利だよ。
ReaderとWriterだけでも。
中身気にせずパイプ的な感じで多段の処理書ける。
出口がコンソールでもファイルでも気にせずwrite出来る

913:デフォルトの名無しさん (アウアウ Saff-uEQG)
16/10/04 09:52:54.27 Jehw2I/Ta.net
>>894
筋が悪いお方
だから、うだうだ考える前に実例を見てみた?

914:デフォルトの名無しさん (オッペケ Srb7-rzru)
16/10/04 10:31:36.54 mvK6O6xLr.net
だから!
動けばいいんだよ

915:デフォルトの名無しさん (アウアウ Sa17-RPp1)
16/10/04 10:32:30.59 2uMugtE2a.net
みんなUIフォントを何にしてる?
メイリオがいいよね?メイリオがいいよね?

916:デフォルトの名無しさん (アウアウ Sa77-7Sel)
16/10/04 12:24:47.15 BdiZqdxfa.net
メイリオがいいけど、XPで崩れるのが嫌だなぁ

917:デフォルトの名無しさん (ワッチョイ fb3a-RPp1)
16/10/04 13:15:35.75 Ii0olsrw0.net
>>894
Sortに対するIComparerの役割考えてみ

interface は class に『実装する』ものであって、
『継承する』ものではないよ

918:デフォルトの名無しさん (ワッチョイ 1717-RPp1)
16/10/04 17:28:27.23 15dXMmmi0.net
Yu Gothic UI...

919:デフォルトの名無しさん (ブーイモ MM8f-LGiF)
16/10/04 18:15:29.26 5GHWHTroM.net
なんとなくわかったぞ
インターフェース使わない人って関数型プログラミングしてるってことか

920:デフォルトの名無しさん (ラクッペ MM37-rzru)
16/10/04 19:35:41.31 PfynBLRqM.net
>>906
自分は勉強で小さいプログラ厶しか
組んでいないので
一つのクラスにメソッドを複数
作って呼んでるだけです

ゲッターセッターも
作り方しか知りません

インターフェイスや抽象クラスなど
使いどころに困っています

921:デフォルトの名無しさん (アウアウ Sa3f-RPp1)
16/10/04 19:50:12.09 6z/A7PWoa.net
インターフェイスはオブジェクトが他のオブジェクトを使う場合に必要となるものなので
自作オブジェクトの中で使う必要がない場合が多い

初心者は.netフレームワークを使う中で要求されて実装することがあるぐらい

922:デフォルトの名無しさん (スップ Sd0f-rzru)
16/10/04 20:20:56.44 kGjg20Jhd.net
最近Xamarinでプラットフォームごとに実装分ける時はよく使うな

923:デフォルトの名無しさん (ワッチョイ 4742-RPp1)
16/10/05 00:22:15.46 75mjlcKq0.net
かたっぱしからインターフェース付けて
メイン関数でレゴブロックみたいにくっつけるの楽しい

インターフェース使わないと
自分でこさえた部品の再利用とか全然できなくないか?

924:デフォルトの名無しさん (スププ Sd8f-rzru)
16/10/05 01:16:22.12 Vyx32qgzd.net
必要になったらあとでインターフェイス追加する派

925:デフォルトの名無しさん (ワッチョイ 27cb-rzru)
16/10/05 01:25:15.80 IoO2jnrO0.net
>>910
設計した時点で決まってるだろ普通

926:デフォルトの名無しさん (ブーイモ MM57-LGiF)
16/10/05 01:31:08.90 1NkBv1zKM.net
その物次第としか言いようがないな
StringBuilderみたいなそれだけで完結しててインフラへの依存もないなら抽象化は別にいらない
インフラ依存のクラスなら注入のために抽象化して欲しい
IEnumerableみたいにバリエーションが豊富で多態のメリットが大きければ抽象化したい
フレームワークぐらいの規模ならカスタムクラスのための抽象モデルを用意すべき

927:デフォルトの名無しさん (ワッチョイ 27cb-rzru)
16/10/05 07:00:17.83 IoO2jnrO0.net
>>913
そんな開発があってたまるか
設計した時点で決まってるだろ

928:デフォルトの名無しさん (ワッチョイ 9730-PJif)
16/10/05 07:19:45.11 EDqQ344L0.net
お兄さん宇宙クジラでも釣るのかぃ

929:デフォルトの名無しさん (ブーイモ MM57-LGiF)
16/10/05 07:26:43.73 v2hJAbmaM.net
>>914
どんな開発のことを言ってるの?
君が言うようにインターフェースは設計時に概ね決まってるよ

930:デフォルトの名無しさん (ワッチョイ 9bdc-dvmP)
16/10/05 07:30:41.56 R0+6OfJG0.net
設計時に決まってるからこそインターフェースが使えるんだよ
インフラを抽象化(というかプラガブルに)するのは基本的に単体テストのため
実際の運用で差し替えるというのは、ミドルウェアの類なら無くはないけどアプリでは現実にはまず無い

931:デフォルトの名無しさん (ワッチョイ 4742-RPp1)
16/10/05 07:41:19.00 4VDP98LD0.net
個人のちっこいマクロ程度のプログラムでも結構使うぞ
つけときゃいつでも内部の処理を他を修正することなく差し替えられる

行き当たりばったりのときこそ必要だろ

932:デフォルトの名無しさん (ワッチョイ 9bdc-rzru)
16/10/05 08:16:36.43 R0+6OfJG0.net
>>918
汎用的なコンポーネントを作ろうとするのは典型的なアンチパターンだ
ちゃんと設計しないんならベタに実装して後で必要に応じてリファクタリングする方が効率がいい
・インターフェイスを定義してみたものの、後で変更が入ってその度に影響範囲の大きい修正が発生した
・インターフェイスを定義してみたものの、後で実装が増えることは無かった
・インターフェイスを定義してみたものの、むしろ差し替えたいのはプラガブルにしてなかった箇所だった
・インターフェイスを定義してみたものの利用側の要件に合わず、辻褄合わせの汚い処理や重複が発生した
心当たりはないかな?

933:デフォルトの名無しさん (スッップ Sd8f-rzru)
16/10/05 12:08:30.16 djABpgcvd.net
俺は既に継承関係が決まってて継承使えないときだけ使ってるな
IEnumerableみたいなイケてるインタフェース設計は超人に任せる

934:デフォルトの名無しさん (アウアウ Saff-uEQG)
16/10/05 12:45:41.97 X1NPzznla.net
もはや元の質問そっちのけのやりとりだな

インターフェイスの設計で俺が時々悩むのは、最大公約数的な物がいいのか
最小公倍数的な物がいいのかだな。

基本的には最大公約数が正解だと思うんだが、でもBCLの中にも
平気でNotImplementedException投げるメソッドがあるからなあ。

935:デフォルトの名無しさん (ワッチョイ 1f13-rzru)
16/10/05 13:28:11.90 +Mzxp0lF0.net
絶対インターフェイス


936:使わないとか言ってんのはCOBOLかVB6から入ったプログラマーだな



937:デフォルトの名無しさん (ワッチョイ 5b5b-9qEq)
16/10/05 18:55:50.81 +d6vVLNb0.net
>>903
>Windows XP 向け ClearType 対応メイリオ
URLリンク(www.microsoft.com)

938:デフォルトの名無しさん (ブーイモ MM57-LGiF)
16/10/05 19:32:14.92 Gemt2Ly0M.net
>>919
そういう苦い思い出があるならそれって君が残念な子ってだけなんじゃ…
道具のせいにする人って結構いるよね

939:デフォルトの名無しさん (ワッチョイ 4f90-RPp1)
16/10/05 19:33:55.37 dDDwv4Tw0.net
ランサーズに仕事だしたら糞グラマばかりでうんざり。

940:デフォルトの名無しさん (ワッチョイ 4b35-PJif)
16/10/05 20:56:39.52 TApQaAYe0.net
ランサーズの思い出なんて
「遅れてるくせに仕事中にランサーズ見てんじゃねえよお前!!!!」って督戦先の会社でキレた思い出しかない
その程度の意識の奴しかいないと思ってる

941:デフォルトの名無しさん (ワッチョイ 4742-RPp1)
16/10/05 22:00:38.22 tHsuIkay0.net
俺にぴったりだ!!www

942:デフォルトの名無しさん (ワッチョイ a3e2-f+x4)
16/10/05 22:30:06.28 OwO3ociO0.net
int k = 100;
int a = Enumerable.Range(0, 10).Where(x => x % 2 == 1).Select(x => k = k + x).Sum();
label1.Text = string.Format("k={0} a={1}", k, a);
aが555なのはわかりますがなんでkは125なんですか?なんで100 + 1+3+5+7+9
みたいな計算になるんですか?

943:デフォルトの名無しさん (ワッチョイ 4742-RPp1)
16/10/05 22:38:04.32 tHsuIkay0.net
KはSumで合計されてないよ
Selectが(1,3,5,7,9)で走って
k = k + 1 = 101
k = k + 3 = 104
k = k + 5 = 109
k = k + 7 = 116
k = k + 9 = 125

944:デフォルトの名無しさん (ワッチョイ a3e2-f+x4)
16/10/05 22:46:08.43 OwO3ociO0.net
>>929
わかりましたありがとうございます

945:デフォルトの名無しさん (ワッチョイ 9e90-lsIp)
16/10/06 00:04:55.93 Fc4cuwun0.net
ランサーズでかなりレベルの高いプログラマがいたよ。
仕事は出来るがあまりにも常識が無いヤツだった。

946:デフォルトの名無しさん (アウアウ Sa43-TInN)
16/10/06 01:35:54.20 x4N6nEfma.net
HttpClient.GetAsyncを途中で強制的にキャンセルする方法はないでしょうか。
以下のコードでGetHtmlAsyncメソッドででかめのHtmlファイル(10MBくらい)を取得してみたのですが
client.GetAsyncが待機中にキャンセルボタンをクリックして_cts.Cancel()を呼んでも
即時キャンセルされません。
結局ファイルを完全にダウンロードするまで止まってくれないようで、困っています

private CancellationTokenSource _cts;

private async Task GetHtml(string url)
{
_cts = new CancellationTokenSource();
using (HttpClient client = new HttpClient())
{
try
{
HttpResponseMessage res = await client.GetAsync(url, _cts.Token);
string html = await res.Content.ReadAsStringAsync();
}
catch (OperationCanceledException e)
{
Debug.WriteLine(

947:デフォルトの名無しさん (アウアウ Sa43-TInN)
16/10/06 01:37:33.35 x4N6nEfma.net
catch (OperationCanceledException e)
{
Debug.WriteLine("cancel");
}
catch (Exception e)
{
Debug.WriteLine("例外発生:{0}", e);
}
}
}
public async Task GetHtmlAsync(string url)
{
await Task.Run(() => GetHtml(url));
}

948:デフォルトの名無しさん (ワッチョイ a685-TInN)
16/10/06 01:54:05.56 Mzv6j6zu0.net
HttpResponseMessage res = await client.GetAsync(url, _cts.Token);
string html = await res.Content.ReadAsStringAsync();
clientのGetAsyncはレスポンスヘッダを受信したらreturnするんじゃねぇの?
レスポンスボディは読みこむ前に。

だから、実際、君がキャンセルしてるのはres.Content.ReadAsStringAsync()の最中で
すでに手遅れ。

949:デフォルトの名無しさん (ワッチョイ a685-TInN)
16/10/06 01:57:11.53 Mzv6j6zu0.net
ストリームで読み込んで自分でキャンセルするしかない。
var stream = await res.Content.ReadAsStreamAsync();
while (var bytesRead = await stream.ReadAsync() != -1)
{
 _cts.Token.ThrowIfCancellationRequested()
}

950:デフォルトの名無しさん (ワッチョイ a685-TInN)
16/10/06 01:58:21.32 Mzv6j6zu0.net
await client.GetAsync(url, _cts.Token);
のキャンセルはサーバーがなかなかレスポンス自体を返さないような時の
キャンセルでしょ。タイムアウトする前にキャンセルするとか。

951:デフォルトの名無しさん (ワッチョイ f4cb-xaNP)
16/10/06 02:08:33.27 8JIhT6+t0.net
>>924
そもそも要求されたわけでもないのに作るインターフェースって全部変になる
それお前が組みやすい機能しか提供してねーだろ的な

952:デフォルトの名無しさん (アウアウ Sa43-Nuoi)
16/10/06 02:09:29.62 x4N6nEfma.net
レスありがとうございます。
それが、
HttpResponseMessage res = await client.GetAsync(url, _cts.Token);
で本体も取得しているような感じなんです。
ブレークポイントを貼ってみましたが、GetAsyncで10秒くらい止まった後に
string html = await res.Content.ReadAsStringAsync();に移ります。
(ReadAsStringAsyncは一瞬で終わります。)
そしてGetAsync中のCancelが効きません…

953:デフォルトの名無しさん (ワッチョイ d9c9-gCaQ)
16/10/06 11:00:29.01 bdU4oXz50.net
ツールバーのような(MS-IMEのような)フォームを作りたいのですが
どのようにしたらいいのでしょうか。
メインのフォームがあって、最小化するとツールバー化するようにしたいのです。
どなたかよろしくお願いします。

954:デフォルトの名無しさん (ワッチョイ fc5e-lsIp)
16/10/06 18:39:28.71 sSah5I1h0.net
>>939
SizeChangedのイベントで見てFormWindowState.Minimizedだったら望む大きさにフォームのサイズを設定してFormWindowState.Normalにする
戻す時にどういうUIにするかの方がメンドクサイ

955:デフォルトの名無しさん (ワッチョイ c62a-xaNP)
16/10/06 22:36:48.00 ZQZztg7H0.net
>>938
ヘッダだけとるのはオプション指定しないと。

956:デフォルトの名無しさん (ワッチョイ 98d4-lsIp)
16/10/07 16:01:09.05 egEWpdwg0.net
VBをC#に移植してるんですけど
下の拡張メソッドは、C#だとどうやって書きますか

 <System.Runtime.CompilerServices.Extension()>
 Public Function AppendLine(ByRef text As String, ByVal appendtext As String) As String
  text &= appendtext & Microsoft.VisualBasic.vbCrLf
  Return text
 End Function


Stringを拡張してあって
Dim A As String = ""
A.AppendLine("ABC")

とかやると、AにABCが改行付きで入っていく拡張メソッドらしいのですが。

  public static string AppendLine(ref this string value , string text)

ってやろうとしたら叱られてしまいました。

957:デフォルトの名無しさん (ワッチョイ 1030-VEeh)
16/10/07 16:16:11.06 /rv9SwD50.net
これ嫁
URLリンク(msdn.microsoft.com)
refが余計

958:デフォルトの名無しさん (ワッチョイ 6f85-TInN)
16/10/07 16:45:30.93 33b7S5w40.net
それはわかってんじゃねぇの・・
VBはrefつけれる?のかしらんが付いてるからC#ではどうやって同じ事するのかと。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch