ふらっと C#,C♯,C#(初心者用) Part132
レス数が1000を超えています。これ以上書き込みはできません。
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part131
http://mevius.5ch.net/test/read.cgi/tech/1504861931/
■関連スレ
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
http://mevius.5ch.net/test/read.cgi/tech/1492843013/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured いちおつ
これの意味がわからない
998 返信:デフォルトの名無しさん[] 投稿日:2017/10/09(月) 19:02:26.16 ID:qEhozSMZ [18/18]
>>995
だからそれは間違ってるって言ってらだろバカ 早速だけど、インターフェイスってどんな感じで使ってますか?
抽象化は便利だと思うんですけど、皆さんどんな感じで活用してるのか気になります >>3
無視していいの?
どう考えても間違ってるのはむこうなんだけど
なにか理由があるのか知れないよ >>5
煽り文句なしで指摘して来てるなら付き合えばいい オブジェクト指向なコードを見て、驚愕した。どうしたら直列コードから卒業できるのですか? >>5
内容についてわからないの??
間違ってるって理解出来ないんだ >>9
>?
>間違ってるって理解出来ないんだ
議論に不要な記述 >>4
普通の使い方と
似たようなクラスがたくさんあってなおかつ継承が利用できない非常にめんどくさい場合
インターフェイスに拡張メソッドをつけたりしてる
本来は使うべきじゃないのかもしれないけど自分でしか使わないからえいやってやってる >>12
何度も利用者側に秘密鍵があれば改変したデータを作ってアプリに使えるって言ってるんだけと??
いい加減自分の間違いを認めましょうね >>13
それは説明になってない
秘密鍵は暗号化されたデータを解読するものなんだよ
Bは秘密鍵でAからのデータを解読するんだよ
そもそもそこはあってるだろ?
いつどのタイミングで何を改変するんだ?
AからのデータをBが改変する意味は何だ? >>13
>いい加減自分の間違いを認めましょうね
議論に必須でない記述 >>14
もしかして秘密鍵から公開鍵が作れるって知らないの??
だとしたら物凄いバカ >>16
>だとしたら物凄いバカ
議論に不要な記述 >>16
質問に答えてほしい
まったく意味がない回答はやめてくれ バカが説明を理解出来ないわけがやっとわかった
秘密鍵から公開鍵を生成するって知らないんだな >>4
これ、テンプレのFAQに入れた方がいい気がするw
今年に入ってから3回ぐらい見た気がするけど俺個人のデジャビューかな
叩く意図はないよ念のため。
俺の回答は、結局実際にどう使われているのか実例を見るのが早い。
>NET Framework(BCL)だってインターフェイス多用してるんだから >>11
ありがとうございます
似たようなクラスがあって継承ができない場合ってどんな感じかイメージつかないですが、集団でプログラミングやると割りと起こる感じなんでしょうか >>19
>バカが説明を理解出来ないわけがやっとわかった
議論に不要な記述 相手がボケだしたんだけど
勝利宣言していいの?これ? >>18
手元にある秘密鍵から公開鍵作って任意の偽データを作成
それをアプリだで不正使用
わかったかなバカ >>23
>相手がボケだしたんだけど
>勝利宣言していいの?これ?
議論に不要な記述 >>23
ボケてるのはお前の頭
はやく反論してみろ >>28
>ボケてるのはお前の頭
>はやく反論してみろ
議論に不要な記述 >>24
答えになってないよ
いつどのタイミングで何を改変するんだ?
AからのデータをBが改変する意味は何だ? >>20
インターフェイスのメリットをどんな感じに活用してるのか知りたかった感じでした
ありがとうございます 最初から書いてるけど
公開鍵は公開されてもいいもの世界中の誰が知っててもいい
公開鍵で暗号化されてるからセキュアだと思ってるならレベルが低いよ >>34
>まだやっとってワロタ
議論に不要な記述 >>30
いやお前が理解できてないだけ
タイミングなんてアプリがデータを利用するときに偽のデータをわたすだけだろ
理解しろバカ >>36
>いやお前が理解できてないだけ
>理解しろバカ
議論に不要な記述 半分以上あぼーんされてて笑える
ワッチョイが捗るわ >>39
>半分以上あぼーんされてて笑える
>ワッチョイが捗るわ
議論に不要な記述 >>32
アプリの不正な使用方法を考慮しない頭のお前は最底辺レベル >>38
まともに答えてるのに理解できないバカ
そうやって逃げるのかな?? >>43
>まともに答えてるのに理解できないバカ
>そうやって逃げるのかな??
議論に不要な記述 このバカは早く自分の間違いと無知さを認めてごめんなさいしような >>45
>このバカは早く自分の間違いと無知さを認めてごめんなさいしような
議論に不要な記述 >>24
暗号化されたデータが例えば有料コンテンツとかなら、利用者(Bを持ってる人)が偽のデータを作る意味はない
利用者が偽のデータを作るのを良しとしないなら、配布者が別に署名すれば良い
ただし、利用者はそもそもアプリBを改造して、任意の動作をするようにすることが可能なので自分が偽データを作る意味はない話 >>41
前から書いてるけど公開鍵のデータが復号できたからそれが正しいデータとは保障されない
正しいデータかどうかを保証するのは別の段階の話
クライアントで不正なデータを基に何をやってても
サーバサイドの情報と不整合なら不正が起こったと判断されて終わる
クライアントで預金を1億に増やしてもサーバでは元のママ >>47
一行目はその通り。でも違うケースだって考えららる。なら、それを考慮するのは当然のこと
二行目は質問者への答えてではない
最後についても一行目と同様 ブラウザに秘密鍵はないって前スレで言い張ってたけど
ブラウザは秘密鍵を持ってる
それとhttpsの認証局の仕組みを使ってそれで安全に通信できてる >>48
不正な使用をできることが問題になるケースもあるだろバカ じゃあ秘密鍵を使わないで生活するんだな
ブラウザも使えないけどいいのか? >>51
そっちの理論通りならこちらはプログラムBとブログラムAの公開鍵をもってるじゃないかw
そっちの理論だと改ざんし放題だねw >>54
>は?
>話を理解出来ないバカ
>その密鍵
議論に不要な記述 >>57
>勝利宣言
>もうレスしないw
議論に不要な記述 >>50
その秘密鍵云々は本来サーバーにありばき秘密鍵をブラウザが持ってるという例えて間違ってると言ってるんだけど理解出来ないのバカ 注意:
議論に勝ち負けはない
正解があるだけである
その正解に到達したら終了すること >>63
>道で淫乱鍵見つけた
意味不明な記述
議論に不要 >>55
はあ?頭悪すぎ
秘密鍵は外部にあって複合化は外部で行う意味も理解出来ないの?? >>68
>バカが逃げたようでスッキリした
議論に不要な記述 公開鍵暗号方式の話題は荒らせると学習してしまったな >>70
ぜひ彼には公開鍵秘密鍵を使わないで生活してもらいたい さきほどXmlシリアライズについて質問したのですがシリアライズ可能なクラスはデフォルトコンストラクタとクラス変数のみのクラスという理解でいいでしょうか? C#で組んだごく一般的な業務ソフトで1万行ってボリューム的にどんなもんですか? >>72
https://msdn.microsoft.com/ja-jp/library/bb552764(v=vs.120).aspx
このページの「次の項目は、XmLSerializer クラスを使用してシリアル化できます。」以下 >>72
関係ないけどjava, python, rubyなどにあるクラス変数はc#では静的フィールドというもので
宣言にstaticがついててクラス自体に付随するものでシリアライズの対象じゃないです
インスタンスごとにある変数はインスタンスフィールド MSDNライブラリ、過去のバージョンのドキュメントが選択できなくなったり
2.0以前の古いバージョンのドキュメントがごっそり削除されたり、知らん間にいろいろ改悪されてるな
MSって本当いらんことするよね >>77
.NET Framework 1.1のMSDNも未だ見えてるけどね? 2.0じゃなくて1.1以前か
たとえばちょっと前に話題になったこれとかなくなってる
https://webcache.googleusercontent.com/search?q=cache:WQiXtXkwbR0J:https://msdn.microsoft.com/ja-jp/aa691135(v%3Dvs.71)+&cd=1&hl=ja&ct=clnk&gl=jp&lr=lang_en%7Clang_ja
読みたきゃローカルにダウンロードして読めとさw
Win10で田ミ + F1押した時に近い怒りを感じるね >>49
それを言いたいなら「全てのケースに対応できる方式は存在しない」と主張しないと
初心者が完全な要求仕様を一発で提示するのは難しい
不完全な要求仕様が提示されたら、ある程度補って「これでやりたいこと満たせる?」って確認してみるのはよくあるパターン
もし「B側が改ざんしたデータを読み込ませるのを防ぎたいです」と言われたら署名を追加提案するし、「アプリが改ざんされると困る
というなら、耐タンパのハードウェアを用意するしかないんじゃないというし TreeViewクラスだとGetNodeAt関数にマウスのx、y座標を渡せば対象のTreeNode返してきますが
TabControlにはGetなんとかで探してみましたが見つかりませんでした、そういった関数はないのでしょうか? どこの座標を指定した時に何を手に入れたいのか
タブ部分だけを指定してTabPageが手に入れば良いの? 俺が公開鍵云々書いた後ここまで荒れたのか
スゲーな
休みなのに他にすることなかったのか? 公開鍵の中に、別の署名入れときゃ良いだけなのにな。 Format8bppIndexed形式のBMPファイルをpictureboxに読み込んで、
それをリネームして同じくFormat8bppIndexed形式のBMPファイルで保存したいのですが、
どのようにすればよいでしょうか。
PictureBox.ImageLocationプロパティではFormat8bppIndexed形式は蹴られてしまいます・・・
また、形式を変えてpictureboxに表示させることは出来たのですが、
それをまたFormat8bppIndexed形式に変換して保存するところでつまづいてしまいました。 >>87
試してみた
>PictureBox.ImageLocationプロパティではFormat8bppIndexed形式
読み込める
そしてそのままPictureBox.Imageを保存(pictureBox1.Image.Save)するとインデックスカラーになった
元の画像のフォーマットが間違っているか特殊では?
別の画像で試してみろ
あとGDI+で24bpp/32bppにした画像はインデックスカラーに可逆で変換できないはず
自分でパレットテーブルと画素データ作らないといけない >>84
すいません
MouseDownイベントでどのクリックされたTabPageが欲しかったのです
結局自分でGetTabPageAt(int x, int y)をコピペして作りました >>89
タブ以外のところなら各ページのMouseDownイベントのsender
タブのところならTabControl.SelectedIndexChangedイベントでSelectedIndexかSelectedTab.Nameで取れる
そっちはx,yにしているから目的は違いそうだが >>90
ありがとうございます。TabControl上でどのタブの上でクリック、中クリックされたのかが知りたかったのです。 実現したいことを質問すればいいのにピンポイントでやり方だけ聞き続けるのがうまくねぇな
なんかあんまユーザーも望んでないようなことやってそう 回りくどくなってしまってすみません
趣味で自分用に作っているアプリなのでユーザーは自分だけです >>95
タブコンってタブのフォントをでかくするとバグるよね >>88
わざわざ確認していただいてありがとうございます。
確認してみます。 入力する ???
もう1度入力する!!!
???と!!!の和は---
???と!!!の積は--- TabControlとTabPageがあり、TabPageの中にWebBrowserコントロールがあるのですが、TabControlを触るとWebBrowserのフォーカスが外れてしまい
一度WebBrowserの中をクリックしないと動きません、マウスポインタがWebBrowser上にある場合クリックしなくても自動的にフォーカスを移したい場合どうすればいいでしょうか? マウスポインタがWebBrowser上にあるかどうかを判定するコードと
フォーカスを移すコードを書けばいいんじゃね
しつけーよお前 あーでもその動作はきっとやめておいたほうがええなー
使いやすいと思うやつおらへんで >>100
TabPage.Enterで(this.Activate()と)Tabpage.Focus()ですねw
>>101
同意するけど自分で使うだけらしいからw
>>99
>TabControlを触るとWebBrowserのフォーカスが外れて→TabControlを触ったあとでWebBrowserをFocus()
質問の時点で答え出ている気がする。Focus()は知っているだろうし
それよりもTabControl触っただけでTabPage上のコントロールのフォーカスは外れない
右クリックからコンテキストメニュー呼出しても別のタブでMouseDownイベント起こしても
WebBrowserが影響しているかもしれないが、それを調べないと対策しても後から別の問題が多分出てくる visual studio for macを昨日から使い始めました
コンソールプロジェクト その他→.NETを選択してソリューションを作成しているのですが.NET内のクラスを呼ぶとエラーが出ます
using Systemの記述以外に必要なことがあれば教えていただきたいです >>103
何呼び出そうとしたのかくらい書いてほしい
まずそのクラスが入っているコンポーネントの参照設定が必要
https://msdn.microsoft.com/ja-jp/library/7314433t(v=vs.90).aspx
次にusingが記述されていないクラスを呼び出すには名前空間からの記述が必要。もしくはusing (名前空間);を追加 使い始めていきなり参照追加が必要になるとは思えないから、恐らくusingが足りないんだろ。 >>104-106
参考書を読みつつ進めていて
DateTime today = DateTime.Today;でエラーが出ます
呼び出したいのは構造体でした
MSのリファレンスではこのように書かれています
名前空間: System
アセンブリ: mscorlib
レス書きながら参照の編集→アセンブリ弄っていたらエラー吐かなくなりました
もしかするとusing System;を書いていなかっただけかもしれません、申し訳ないです
エラーメッセージも今後は載せます formのサイズに合わせて、
labelが拡大縮小するのってどうすればできますか? >>108
おれも手軽な方法知りたい。
面倒な方法としては、formサイズとlabelのフォントサイズに比例式作って判定させるメソッド作れば実装はできる。 >>108
煽り抜きで真面目な話、そういうのはまず要件を厳密に定義しないとね。
「formのサイズに合わせて、labelが拡大縮小」っていうのは曖昧だよね >>109
ありがとうございます。
そういう機能があると思ってましたが、
簡単にはできないのですね。 >>110
画像の拡大縮小のような感じで、
フォームの大きさに合わせて、
ラベルの文字が大小するという感じです。 C#でpyplotみたいにフォーム作らなくてもお手軽にグラフ表示する方法ってないですか? ずっとグラフコントロール見てたけど
前だったら商用が一番おすすめだったけど
今はもうwebのフリーのコントロールに負けてるので金を払ってまで使う必要あるのかと思う >>113
だよな。コントロール並べるだけじゃ満足できないならwpfやuwpに移行したほうが効率いい
もうオーナードローなんかやりたくないよ >>119
フォントまで対応してたっけ?
今PCってフォント125%とかデフォルトで設定して売ってんじゃん グラフって表示するだけじゃなくてインタラクティブなのものを求められたりするんで困る >>120
拡大したいコントロールをViewBoxってコントロールで囲えば、何でも拡大縮小してくれる >>122
フォントサイズやフォントの倍率変えても行ける? 使い勝手がいいかどうかは別だけど
スクロールバーありものも突っ込んだら悲しいことになる >>120
PCうんぬんはフォントじゃなくてスケーリングじゃないかな。
WPFは元々システムのDPIに依存しないから、スケーリング対応は簡単。 >>125
コントロールパネルの画面の
テキスト、アプリ、その他の項目のサイズを変更する
は影響受けない?
これが125%になってんだけど 質問者に言っておくけど、要件を厳密に定義しないとこういう流れになっちゃう。
「formのサイズに合わせて、labelが拡大縮小」
「ォームの大きさに合わせて、ラベルの文字が大小するという感じ」
これどっちも曖昧だって。
要件っていうのは解釈や忖度や妄想の余地がないように厳密に定義しなきゃ 使ってみればいいよ
ViewBoxは使いどころが難しいと思う
マウス操作するものはなるべく突っ込まないほうがいいと思う スペースが事前に決めてあってその中いっぱいに表示したいならviewbox
サイズを細かく指定したいなら向いていない
左右に二個並べてあって中身が違うにもかかわらず左右の表示を会わせたい→死 >>126
それがスケーリングね。
スケーリングが125%になっているなら、ウィンドウ全体(コントロールも文字も)が125%に拡大された上で綺麗に表示してくれるよ。 >>127
実際に作るものはともかくここでの流れまで初心者に言っても
最初から要件を細かく定義できるのならググったほうが速いし
質問の仕方から見て>>109>>113で十分かと
>>108
WPFはわからないのでWinForm+>>109で仮に作るとこうなる(Labelだけ対応)
https://ideone.com/BWg19a
ここまでは簡単で破綻しないように調整しようとすると面倒。自分では使わないw
この段階でたぶん座標とサイズがintでフォントサイズがfloatのせいで最後の文字で時々失敗する Windows10のOS寄りの話になっちゃうかもしれませんが、
タスクバーとかその上にくっ付いてるコントロールの透明化を一時的にでも止める方法あったら教えてください。 >>132
設定→個人設定→色→透明効果→オフ
と同じことをプログラムからやりたいってこと?
C#の範疇じゃないので、聞くならWinAPIスレかなぁ UWPだと、画面のサイズに依ってフォントのサイズどころかコントロールのレイアウトから何から何まで変更することが可能です
VisualStateManagerとAdaptiveTriggerってのを使うんだが、ちょっと説明には骨が折れるから興味ある人はググってね
単純なものでも、この複雑さだからね
https://blog.naotaco.com/archives/840 >>133
そうです。スレ違いでしたね
透明の箇所はスタートメニューから全部無効化したいですね
急ぎじゃないんで適当に調べてみます >>130
おお、大丈夫なのか
ありがとう
原因を分けて対応しないと駄目だな〜 二つの同じ長さの配列A,Bの末尾から5つを取り出してその全ての要素がA>BならTrueを返す
↑これってLINQでうまく書ける? >>139
友の会行けよ
明らかに初心者スレじゃねぇよ LINQの定義次第っていうか
LINQ to ObjectsならTakeLast拡張メソッドを自分で実装すればいける >>139
A.Reverse().Zip(B.Reverse(), (a, b) => new { a, b }).Take(5).All(ab => ab.a > ab.b)
>>141
十分初心者レベルだよ
自分がわからないからスレ違いってw すまん
わかると思うけど下のアンカは>>140の間違い なんで推敲する程度の余裕すらないんですかね…
寿命が近くて生き急いでるのかな? >>142
こんなコード見やすいと思ってる時点で頭がイカれてる >>148
ちょっと興味あるから同じ処理をわかりやすいように書いてみて >>145
勢いで書いて後から見てワケワカランで
こんな糞コード誰じゃと調べたら自分だった事が多々あるw >>148
LINQ難しくて嫌いだからってケチ付けるなよwwwwwwwww メソッドチェーンってそんなに見づらいか?
クエリー構文はキモくて嫌いだが。 >>153
テトリスを一行で書きました(改行コードがないだけ)
みたいな臭いがして臭い >>142はLINQ好きじゃない俺でも十分読める
ちょっと思ったけど
A.Reverse().Zip(B.Reverse(), (a, b) => a > b).Take(5).All(x => x);
こっちの方がいい気が
Tがboolの時predicatorじゃなくて要素そのものを評価するオーバーロードってないんだね >>142
ありがとうありがとう
なんでかTakeLastが使える(最近追加された?)んでリバースなくて行けました
けどめちゃくちゃ遅かった…
ちょっとLinqでやるんが無理だったんかな、でもすごくためになりましたありがとう >>155
こんなに普及してるjQuery全否定か >>155
頼む、アウアウオー Sa63-qY8Gなりの同じ処理のコードを書いてくれ
そっちのほうが分かりやすかったら味方も増えるだろ しかも最近流行りの状態を持たない関数型プログラミングだし SQL使ってた人にはLINQは分かりやすいけど長いと読む気なくすのはSQLも同じ >>161
linqのクエリ式とsqlは別もん。
sqlを知らない方が良いかもね。 TrackBar のツマミを、タッチ操作用に大きくしたいんですが、どうすればいいんでしょうか。
検索しても解決に至っていない質問がちらほらあるぐらいです。もしくはこれでもかってぐらい
自分で書いたオリジナルのトラックバーとか。
そこまでしなくても、ツマミが大きくできるだけでいいのですが。 >>162
別物(キリッ)とか言われても
同じだなんて言ってないけど
ただ取っ掛かりの部分でSQLの知識が活かせるから個人的には学習コスト低かったし、
逆にSQL知らない子に教えて慣れさせるのには苦労したわ >>164
自分の場合はSQL知っててクエリ式を見たときは何じゃコリャと思ったもんで^^;
冗長だけどメソッド式が好み。 >>165
そう思ってるのお前だけだからクエリ式があるんだろ
悟れよ >>166
面食らうのはわかるけどすぐ慣れるでしょ >>168
linqの出始めの頃はクエリ式を多く見かけた気がするが、最近のグーグル先生ではメソッド式を多く見かける気がする。
どっちが主流なんだろ? 今はメソッド式のほうが主流なんじゃない
最初は皆珍しがってクエリ式使ってたけど
今はほとんど見ない >>171
vb.netだと状況が違うかも。
メソッド構文が冗長過ぎるよ。 >>167
クエリ式で可能なことは全てメソッド式で可能。逆は成り立たない。 >>167
充分の意味がわかってないということは中卒かな? >>113
>>131
コードも書いて頂いてありがとうございました。
恐縮しております。
いろいろいじってみたところ、
WPFでできそうなのでやってみます。 >>172
Functionがウザすぎてクエリ式使うわ リファクタリングって実際にやる事って多いのでしょうか?
とりあえず動くものを作ると手直しが大変で、設計を考えてから作るならそんなにリファクタリング起こらない様な感じもしますが
後から機能追加していくと分割しようとかってのもあるのでしょうか むしろそんなんばっかで嫌になる
最初の仕様書もっぺん見てみろや禿げと言いたくなるね >>174
じゃあお前はILで書ければC#要らないんだろうな高学歴さん
そもそも糖衣構文なんてどれも使い方次第だろ
言われないとわからんか? >>180
ILがc#並に使い勝手良ければそうだろうね 教科書見ても全然わからんかったのにスイスイ理解できる >>177
それって誰の金でやってんの?
次の開発なんかあるかどうかわからないのに無駄じゃない? >>177
設計を考えてから作ったあとにリファクタリングとか、設計が糞だからやり直すようなもんだわな >>177
一度書いたコードは問題なく動いている限りリファクタリングなんてすることは無いよ。
リファクタリングする工数なんて何処にも無いからね。
元のコードを大きく改変する必要があるとか類似システムを作るときは
思い切ってリファクタリングするけどね。そっちの方が品質も安定するし早いから。
ま、そんだけ元のコードが酷いって事さwww >>184
主力製品の機能変更で売ってくようなスタイルだと機能追加の度にコードが増えてくけど、その度に仕様変更でバグが混入する可能性があるからコード直ししたいとかあるってパターンもあると思います
既に基底が整備されてるとかプロジェクト毎に違う製品作るパターンならこういうことは無いと思いますが >>188
でもお客の要望がリファクタリングの方向とズレてる場合って
かけたコストが丸損じゃない? >>189
あくまでお客とのやり取りではなく、コードは会社の資産という観点でリファクタリングするという考えですね
お客の要望で機能追加する前提のものなので、そこで保守するコストやバグによる信用低下からプログラムそのものの価値が下がるって概念になると思います
まぁ実際はリファクタリングするには大きすぎるので理想はあっても実行は中々できないと思いますが >>173
letとSelectManyの連鎖はクエリー式でないと辛すぎるですたい リファクタリングのやり方がおかしいんじゃないかな
リファクタリングでコードがシンプルになればその後の開発工数が激減する レガシーシステムに手をつける前に必ずリファクタリングするって常識でしょ
レガシーシステムは恐ろしいスパゲティの塊なのでそのまま手を出すとあっという間に破綻する
まずはリファクタリングで保守可能な状態を作らなければならない
最悪でも拡張する機能をテスト可能な状態にすること
顧客がバカでコミットできない場合でも知識を得るためにリファクタリングが最適
腐ったコードはどれだけ読み込んでも理解できない >>190
いや今まで設定ファイルから読んでたけど
ネットワークから取得するわ
一括ではなく個々のデータを使用するときに常に最新データを個別に取得するわ
ってなったら絶対無駄になるよね? >>192
それは改修時にする設計だよね
それは理解できる
でも、動いてるところをわざわざぶっ壊して作り直すって
お客に見積り通らないよね >>194
それで無駄になるケースってどういう場面でしょうか?
設定ファイルとコードが依存してなければ設定ファイルの取得部分の追加変更でリファクタリング自体は無駄にならないと思いますが
変更できないような設計なら確かに無駄になると思いますが・・・ >>196
設定ファイルを読み込む前提でリファクタリングしたなら
ネットワークからデータを個別に取得するようになるわけだから無駄だよね? 無駄になる可能性もあるけど無駄にならない可能性もある
汚いコードだった場合ほど無駄にならない 設定ファイルは起動時に1回一括で読み込むだけかも知れないね
でもネットワークからデータが必要になるたびに個別に最新を取得だから
ぶっちゃけ対応できないんじゃないかな? >>199
そう?
逆にこれが対応できるほど汎用性を上げたら明らかに無駄なコードだと思うよ ID:BTwHB29Waが何言ってるかわかるエスパーいる? >>203
簡単にいうと仕様変更がかかったらリファクタリングなんて意味ねーじゃんってこと >>204
仕様変更ってリファクタリングしててよかった〜って一番実感するときだろ
まあやったことない人にはわからない感覚だとは思う
リファクタリングに工数かかるのは事実だから
目の前のコストしか見えない人だってそりゃいるよね >>207
設定ファイル一括読み込みクラスをリファクタリングして
設定問い合わせインターフェースにする
設定ファイル一括読み込みクラスは設定読み込みインターフェースを実装する
設定読み込みネットワークになったわー読み取りは毎回取り直しだわ〜ってなったら
設定テーブルセレクトクラスを作る
設定テーブルセレクトクラスは設定読み込みインターフェースを実装する
DIの設定を変更して終わり
簡単だろ? >>208
誤字訂正
>設定ファイル一括読み込みクラスは設定読み込みインターフェースを実装する
設定問い合わせインターフェースを実装する
>設定テーブルセレクトクラスは設定読み込みインターフェースを実装する
設定問い合わせインターフェースを実装する 設定ファイル一括読み込みクラスは会社の資産とのことだけど
どこ行くの?
また、設定ファイルから読み込むこともあるかも知んないから残しとく?
別の会社に売ったら
「うちはいちいちネットワークなんて繋げなくていいよ」
って言うかもね
こっちもサポートし続ける?
捨てちゃう? >>195
業態によるんじゃないかな
客先の社内に入ってる常駐型とかweb開発では継続的インテグレーションが当たり前
納品して終わりのシステムなんて大手は少ないんじゃないかな? リファクタリングしてないと組み直しになる
ネットワークから取ってくるって機能に切り替えたいだけなのに
なぜか設定読み込み処理そのものやそれを呼び出してるところを一生懸命調べたり直さなきゃならない
本当にやりたいことはそんなことじゃないのに!
リファクタリングしてあればまさにネットワークから取ってくる処理を追加するだけで済む
既存の処理はそのまんま
やりたいことを過不足なくやるだけ
解放閉鎖原則ってやつだね >>212
継続案件でも納得してリファクタリングに金払う客居たら見てみたいわ
どうにもならなくなった糞コードを何とかする手段としてリファクタリングを使うケースは偶に見かけるけど >>212
京都市とシステムズが争ってんじゃん
11億円の案件らしいけど
次の仕事あると思う? >>213
浅はかだな
一部設定ファイルから
一部ネットワークから
って可能性もあるよ
改修仕様が決まってから出ないとリファクタリングもゴミだなって気づけよ >>211
必要な顧客と不要な顧客が居るなら取っておいたほうがいいね
インターフェースで綺麗に分離されてるから機能有効化無効化の管理も超簡単 てかマ板でやれよ
底辺チンカスコーダーの分際でうるさいわ >>218
ネットワーク状態によって分岐するかもしんねーぞw
どこまでインターフェースで対応できんだ?w >>217
それもリファクタリングしてあれば簡単にできるよ
単に設定ファイル読み込みクラスとネットワーク問い合わせクラスのミックスインを作るだけ
実装するのにまあ15分もかからないと思うね
リファクタリングしてなかったらこれは絶望的だよ >>214
MacはOSを途中で変えた
古いOSは改修に次ぐ改修で複雑に絡み合いリファクタリングすらできず
将来性がなかったから
windowsだって10までバージョンがあがったけど
そこまでのOSの変更費用は利用者が払ってる
将来性や利点があるならちゃんと説明して金をとるべき リファクタリングは組み直しだろ。
なんでやるのかっつーと、いろんな意味でその次を楽にするため。
次の改修だったり、次の案件に使いたかったり。
ただし、それは改修と併せてやってはいかん。
改修、つまり「今より良くするもの」「悪いものを直すもの」の正しい評価ができん。
会社でやるなら、金の出処は研究開発扱いとしてやるしか無い物だと思うわ。
機械で言うと「新素材の研究が一段落していい感じだったんで、それ使ってネジのコストカットしました」とか「量産安定してきたんで金型のランナーをちょっと樹脂ケチる感じに引き直しました」とかそんなレベルの話。
もし客にバレたなら、単なる不具合の改修でしかない。 >>220
それも簡単に対応できるね
ネットワークの状態を見てスイッチングするデコレーターを作るだけでしょ
リファクタリングしてなかったらあっという間に炎上する案件だよねこれって >>221
どのデータがネットワークからでどのデータが設定ファイルからかわからないのに?
自由に変えられるように組んであるの? >>223
だから次の仕様が明確にならないと意味ないって >>224
そもそもそれは俺が言ってから君がリファクタリングの方法を変えてるだけで
実際はもう対応できてないじゃん アウアウオー Sa63-qY8G
ワントンキン MMd3-pbEI
板違いで真っ赤とかNG推奨 >>225
仕様はあるんだろ?
それ見て作ればいいだけ
なんならそれも設定から読むようにしようか?
ルート設定情報を見てファイルかネットワークか選ぶ
ネットワークが死んでたら何回かリトライ
それでもダメならファイルから
ファイルがダメなら埋め込みデフォルト値
みたいな感じで
リファクタリングしてれば簡単にできるぞ >>193
不思議なもんで、理解はできるが、なんでこうなってんのかわかんねえ、って半日悩んで、スクラッチすっか、と最低限の条件からだんだん込み入った事書いてくと最終的に「これ最適解じゃん。すげぇ」ってなる事あるな。
Fortranの処理系のメンテしたほうがマシ、と言う結論に至った事がある。
>>226
次の仕様に合わせてやるのは、対応。
そうじゃなくて、「これ事故りそうだな、今手が空いてるから直しとくか」がリファクタリング。
フツーに仕事してたら納期次第で不味い手を打たざるを得ない事もあるしな。
32767回目で死ぬ事がわかってる、年に100回しか打たれないはずのコマンド、とか。
何故かそういう物に限って変な活用されたり、10年生きてたりする。 そもそも設定ファイルの読み込みルーチンだけど
すでに納めた客の対応はどうするの?
変えちゃうのはいいけどさ
動いて無いとまずいんちゃう?
インターフェースで対応できるの? お前ら、プログラムの仕様を変えたらリファクタリングじゃねーわw >>231
出しても出さなくても良いのがリファクタリング。 >>226
仕様が曖昧なときほどリファクタリングは有効だよ
リファクタリングしてないと全く身動き取れない
リファクタリングしてあれば暫定で進められる
確定したらごく僅かな工数で本実装に切り替え可能
仕様が確定するまでの待ち時間の金は誰が払うんだ?
あれがこれが決まってないから進められないなんて泣き言は顧客は聞いてくれないぞ? >>228
あ〜それは悪かった
専ブラだとスレタイが目に入らないんだよね
オブジェクト指向スレかなんかと勘違いしてたわ そんなパッケージ販売みたいの視野に入れるなら
○○様向け読み込み処理とか
すっげー勢いででき続けるけどな
すでに動いてる部分をぶっ壊すなんて最早正気ではないな 充分にモジュール化されてれば、可換な筈だからな。
それが仕様。
中身がどう変わろうが、口はUSBです。これも仕様。
口がどう変わろうが、テキストの電文でやりとりしてます。これも仕様。
どんなキーボード繋いでもHIDデバイスとして認識出来れば文字が打てます。そんなもん。
ボタンの改良でパソコン買い替えてたら世話無いだろ。 >>237
でもね
メモリだけ増やしたいなぁって思っても
SSDにしたいなぁって思っても
マザボごと全部交換必須
これが現実 >>236
パッケージ売りするなら、で全然パッケージ売りしてねえじゃんw
普通は帳票パックとか売るんじゃねえの?ソフト屋って。
コストで悩むのは理解できるが、だから研究開発費なんだよ。 >>238
全然現実じゃなくない…?
どんな商売してるの? バグだらけでリファクタリングできない頭の見本市がこちらです >>239
マジで
個別対応で金貰う商売だと思ってたぜ >>242
なんで個別対応で金取れるかわかってる?
個別対応部分が可換だからだろ?
単に経験浅すぎて仕組みがわかってないだけだと思いたいな。 >>246
いいけど
すべての個別対応を一つのソースにぶち込みつつ保守してくって無理だと思うぜ
扱うデータ自体が違うのにインターフェースもクソもねーし >>247
なんで一つのソースにしちゃうかな?
インターフェイスが統一されてれば、違うソース、違うリポジトリで充分でしょ?
扱うデータが違うのに云々ってのは、コンテナ形式のファイル見たら皆がどうやって回避してきたか理解できると思うわ。
DICOMまでガチの話でもなく、tiffファイルのフォーマット眺めるだけで充分わかる。 >>248
だからされねーだろ
データが違うんだから
始点と幅と高さでもっても
中点と幅と高さでもっても
四角は四角なんだよ >>249
内容に惑わされ過ぎだろ。
始点と幅と高さでできてる四角(四角A)と、中点と幅と高さで出来てる四角(四角B)であろうと、
ただのデータなんだから。
「四角」ってスーパークラス切り出して、「どちらかはわからんが、四角には変わりない。どっちかはそれぞれ読み手が考えるように。」ってデータ型を用意するのがリファクタリングだよ。
そしたら、図形ってデータ型が出来たり、面積のある図形ってインターフェイスが出来たりするだろうね。
typeof演算子の存在意義に疑問を持ってる類の人間なのかな。 インターフェイスについて突っ込まれそうだけど、シリアライズしてXMLにでもしときゃ、容量は食うだろうけど、C#でならだいたい何とかなる。 >>251
あめーんだよ
お前想像力がたんねーから
インターフェースでなんでも対応できる気がすんだよ
ちなみに中点、右幅、左幅、上幅、下幅指定は中点で回転するからその指定で回転角も付く
同じ四角だってすでに別もんの場合もある
こういうのたくさんあり過ぎて現実にはインターフェースなんてなんの役にもたたねーだろ インフラも依存性もないたかが四角形クラスでインターフェース否定した気になっちゃったの? >>254
じゃあ、さっきのネットワークからデータをとる話にしたってバカがインターフェースで対応できるとか言ってたけど
実際はデータ毎に取得日時も保存しておかないと
最新かどうかわからないよねw
アホだからこんなもんで対応できると思うんやで >>256
( ‘д‘⊂彡☆))Д´) パーン
>>257
( ‘д‘⊂彡☆))Д´) パーン
(*゚∀゚)なんで殴られたか言ってみろ! 伸びすぎだろ
おまえらってこういう話題になるとイキイキするのな
会社ではモテない頼りない無能社員のくせに >>253
だから、統一できるコンテナフォーマットな形式のデータ入れに突っ込んでしまって、
必要な奴が必要な分だけパースするんよね。
ホントに実務経験あるの?甘くない?
>>255
横からだけど「取得したデータ」は「取得した何か」を継承してたり、「取得した日付」を取得するインターフェイスがあれば充分でしょ。
無知でした、ごめんなさい。が言えるのもエンジニアとして大切だと思うが、いかがなもんかのう。 スレチ指摘されても理解できない頭のヤツにリファクタリングの必要性説いてどうすんの 最近独学で勉強始めたんだけど難しすぎる…
自分で考えたり工夫する能力がないんだろうな
自分がやりたい事と全く同じサンプルが無いと何も出来ない
みんなどうやって見につけたんだ?
やっぱアホには無理なのかな >>269
できることからやればいい
できないことをやろうとすると達成感が得られなくてやる気が無くなるループになる
自分の頭の中で必要な要件を切り分けられないものには手を出すな
サンプルは全く同じものがあるはずがないので近いものを探す。一つだけでなくいくつも探す >>269
c#ってかなり難しいと思うよ。
抽象的な概念がかなりある。
今は、ひたすら写経に励めよ。 c#がそれなりに使えるのには5年は掛かるね。
表面上使いこなせるのには他の言語を知ってりゃ3か月だ。 >>269
やりたい事を初めて見た他人が代わりにできるくらいのメモにまとめて、それをコードに落としていけば良いんじゃない?
最初は言語の機能全部使う必要無いんだから。
そのうち、これ毎回書くな…とか思ったら、そういう機能があるかどうか調べたら良い。大体ある。 >>269です
レスありがとう
最近仕事で使うことになって人生初のプログラミングを経験中なんだけど何もかも分からないから質問も出来ないし、しても分からないし、何回か聞くともっと自分で考えてやれみたいな感じだから毎日悩みっぱなしだ
出来ることから地道にやれたら良いんだけど仕事だからなかなか厳しいね…
とりあえず独習って本を読んだり試してまずは基礎をしっかり理解するようにしてる
みんなもひたすらサンプルを書いたりして理解して行った感じなのかな C#難しいのかなあ?
自分はこんな便利なのか!と感動したけど >>274
作りながら覚える本のがいいよ
俺は
まあ、人によるけど C#が難しいってオブジェクト志向な設計が難しいってこと? C#が難しいんじゃなくて、
オブジェクト指向が難しいとかプログラミング自体が難しいって話だな >>281
上の人は、C#特有の要素がどうこう以前に
プログラミングその物で躓いてるからなあ
多言語経験者がC#特有の要素で躓くとしたら、デリゲートじゃないの >>274
おれも独学だけど、ここの人達は何だかんだで面倒見いいから、頼るといい。 最初、文法だけを説明している入門書(猫でも〜)で勉強したけど
「インターフェース? 規約だけを定めたもの? 具体的に何の役に立つんだ?」
「構造体? クラスとどう使い分けるんだ?」
「デリゲート? C/C++の関数へのポインタみたいなもの? Cなんて知らんがな」
みたいな疑問が次々と湧くのに解決されないまま、文法の丸暗記だけしてる感があってしんどかった
サンプルコードも、最低限の説明用のシンプルすぎるもので、実用性っぽいものが皆無だったし
もう少し丁寧に解説してる本から始めればよかった >>284
ありがとう
馬鹿だから質問すらなんて聞いて良いか分からないんだけどね
入門書みたいなのは何冊か読んだり試したりして、コード見ればぼんやりこういう事してるんだなっていうのは分かるんだけど、いざ自分で1からやろうと思うと何も書き出せなかったりする
>>285が言うようにこれが何に活きてくるんだ?っていうような疑問も沢山あるし…
実務だとアプリ作ってって仕様書渡されてデータベースから値をとって加工してグリッドに表示させたりとか、何かたった一行でも表示させるのに丸一日かかって結局分からないとかも多々ある
機転が利かないっていうか自分で考えてこういう風に組み替えたり応用したりしようってのが出来ない…
知識が付けば出来るようになるのかな
愚痴吐いてごめん
勉強してきます とりあえずデータベースとグリッドの事は忘れてコンソールアプリを作るべきだ
最近の若者は順序がめちゃくちゃ Webだと仕組みを理解すれば案外コンソールと変わんなかったりするけどね 「言語その物の機能」と
「外部の物にアクセスする手段」とは、分けて学習するべきだわな 非常に申し訳ないんですがLINQの質問いいですか?
インデックスが対応する二つの配列A、Bがあります
Aには氏(string)、Bには性(bool)が入っていて
女性で田中が何人いるってのは、どう書けばいいですか? >>290
A.Zip(B, (a, b) => new { a, b }).Where(ab => IsFemale(ab.b) && ab.a == "田中").Count() >>285
「猫でもC#」は「スッキリわかる Java入門 第2版、2014」で、
オブジェクト指向を学んだ人向け
本当の素人には、向いていない >>291
ありがとうございます
結構難しいですね。解読して勉強させて頂きます >>291
Whereいらない Countが条件節取れる >>288
ASP.NET Coreはコンソールアプリだしね >>293
A.Zip(B, (a, b) => new { a, b })
.Where(ab => IsFemale(ab.b) && ab.a == "田中")
.Count()
改行するだけで随分理解しやすくなるはず
A.Zip(B, (a, b) => new { a, b })
.Count(ab => IsFemale(ab.b) && ab.a == "田中")
Where要らないの意味も解りやすくなるはず >>286
上級者がどうやって作ってるかを見て、自分が思ったやり方と違う部分を見つけて意図を聞くのがいいかも
まぁ相手が付き合ってくれることが前提だけど
どのみち初学者の場合、学習曲線はある程度学んだ時点から一気に上昇するもんなので、最初はコツコツ疑問を潰すしかないよ あと同じような内容でも入門書は評判の高い順に何冊か読んだ方がいい
自分に合った説明が一冊の中に全部詰まってる事なんてないから >>290
name[100], age[100] みたいにデータを列持ちするのは現代的なプログラミングにおいては非常に悪い作法なので今すぐやめたほうがいい
クラスを作って行単位で持つのが基本 >>290
氏名と性別を持ってるクラスのListにしたほうがいいよ >>304
処理を付加したかったり読み書き制限したりしたかったらクラスと言うか、構造体でできることはクラスで全部できるからあえて構造体を選ぶ場面は少なくないか >>304
win32api呼び出す時以外は使い道ないかも。 別に構造体でないとPInvokeできないということはないはずだが
StructLayoutはクラスのレイアウトも制御できるわけで ポインタじゃなくて構造体のコピー寄越せって関数とか >>304
十分小さい時は構造体の方がパフォーマンスがいい >>304
C/C++連携かパフォーマンス最適化か
1. Microsoft (2008)
1) It logically represents a single value, similar to primitive types (int, double, etc.).
2) It has an instance size under 16 bytes.
3) It is immutable.
4) It will not have to be boxed frequently.
https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/choosing-between-class-and-struct
2. Effective C# 2nd(2010)
1) Is the main responsability of the type data storage?
2) Is its public interface defined entirely by properties that access or modify its data members?
3) Are you sure your type will never have subclasses?
4) Are you sure your type will never be treated polymorphically?
3. とあるStackOverflowの回答
1) You use structs for performance when stored in arrays.
2) You need them in code passing structured data to/from C/C++
3) Do not use structs unless you need them:
https://stackoverflow.com/a/598268 >>304
ゼロ初期化で良いものでshort3つとか小さいものは、クラスより遥かに軽いので、万の桁で呼ぶなら構造体にする。
あとGCで回収させずに、メソッド終わったら即捨てたいものとか。これもそのメソッドを頻繁に呼ぶ時に。
小さい構造体はヒープではなくてスタックに置かれて、抜けたら無くなるので効率とかより、GCが呼ばれてる暇がなくてもちゃんと開放される。
よく使うのは、挙がってるの以外だと描画周りに使う事ある。
ちなみに、処理を付加すると言うか、メソッド生やすのは拡張メソッドで無理が効くようになったから、関数載せたい、でも関数の参照持たせたくない!もかなりなんとかなる。 ふと思ったのですが、メソッドで匿名型クラスのインスタンスを返すことってできますか?
返すことができるなら返り値の型になんて書けばいいのでしょうか?Typeはだめでした あえていうならdynamicだけどメソッド超えるなら匿名型は諦めよう 文字列型のIdプロパティも持つクラスHogeのリストList<Hoge>からIdのカンマ区切りの文字列を求めたいのですが、
普通にやると
string.join(",", items.Select(i => i.Id));
とループが2回走るんですが、これをLINQか何かで1回のループで求められるでしょうか?? >>319
string.JoinにIEnumerable<string>渡してるから、そのままでループは1回になるんじゃないか >>320
items.Select(i => i.Id)
あれ、このSelectでもう1回ループまわる??
よくわかんなくなってきた vb.netを何年か使って仕事してたのですが、c#に移行していくことになったのでc#の学習を始めようと思っているのですが、おすすめの書籍はありますか? >>324
Effictive C#とか
古いけど 実戦で役立つC#のイディオムなんちゃら
割とよかった
基本をサッと把握するにはこれで良いと思う
基本を抑えたらCLR via C#とか読むべき
dotnet coreならマイクロソフトのドキュメントかな
アップデートが速すぎて本が出ない >>325
>>326
ありがとうございます。
基礎を理解するのに、独習C#かオライリーのC#の購入も検討していたのですが、その2冊についてはいかがでしょうか?
あまり役に立たない様なら、おすすめいただいた3冊を購入してみようと思います。 >>327
正直最初の一冊は好きなの選べばいいよ
それで足りないと思ったらここを含めてお勧めされてる本をレビューなんかで評価の高い順に読めばいい
どの本の内容があんたに合ってるかはあんたにしかわからんのだから 誤植がない本がいいよ
C#始めた頃に買った入門本で、「なんでこうなるんだろう・・・」と嵌まって時間浪費したことがある
誤植に気づけるまでのレベルなら流せる問題が、一言一句読み解きながら進めてるときに
誤植にあたると学習コストが無駄に跳ね上がる
まぁ、読む前にそれを気づくのは至難の業だから、評価高い本と初版避けることくらいしか方法ないけど >>324
VB何年かやってたなら@ITの記事を一通り斜め読みするだけでも十分でしょ >>329
そう言うのこそ
なんでこうなるのだろう?
って思った時にここで聞けばいいんじゃね? この業界歴史が浅いから本が必ず正しいことを言っているとは限らない点も注意だな
長くたって結局将棋とか過去の棋譜を使わないほうが強くなったらしいし
未来は自分で切り開くんだよend >>333
ある意味、正論だな。
ここで回答してる奴でここで質問したことのある奴は殆ど居ないんじゃないのかな。 >>335
してるよ!
c#の構文解析でいいライブラリねーの?
って聞いてから返答ないままだよ! >>334
StackOverflow英語版かな? >>336
凄いアバウトな聞き方w
じゃ、.NET Frameworkって回答しとく。 >>338
あんの?
確かに計算式はやってくれんだよね 具体的には処理フローを出力したい
reflectionでやれればそれでもいいし
ソースの文字列から構文木的なものを返してくれるならそれでもいいし >>339
Roslyn関連のライブラリって構文解析してくれるんじゃないの? >>341
おお!
行けそう!行けそう!
ありがとうございました!
まさかこんなものが出てるとは 偉そうなこと言っときながらRoslynも知らないとはwww >>346
c#の追っかけしてるファンじゃないと知らんわ >>347
少なくとも追加されてから
c# 構文解析
でググり続けた俺にはかすりもしなかったねw VSで使われてるコンパイラだろ?そんなの俺でも知っとるわ。 >>349
うん、普通に出るね
多分1年前ぐらいにググって
無かったから2〜3番目ぐらい見て
華麗にスルーしてたんでは無いかと 構文解析に興味を持つようなやつがRoslynすら知らないとは >>347
じゃあ構文解析なんて無理だから諦めた方がいいよ ヒストリカルに字句解析と構文解析が何故分かれているのか疑問に感じるバカは多いと思う。
俺もバカの一員として分けなくてもエエやん?と思い実際に作ってみたら、何故分かれているのか体感したという。 忙しい現代社会。
すぐレスしてくれそうだからではないか。 >>352
実際あんまり興味無い
こんな言語マニアしか食いつかないようなもんで
人生費やすのはゴメンだった
だからアイディアはあったけど
構文木作成部は保留にしてお蔵入り状態にしてた >>360
Excel方眼紙に出力してくれ。
低レベルのSIerに納品する資料に使える。
スマン、低レベルはSIerのデフォだったかwww >>361
それも考えたんだけど
自宅にexcelってないんだよね
なんで文字と図形と線を出力できるような簡単なベクトルデータってないんけ?
と思ったら笑っちゃうぐらい無くてさ
とりあえず画像データでええかー
的な
機械的に処理フローを
描画するc#のコードを吐き出して
画像で保存 >>362
XPS, SVG, PostScript知らんのんけ? >>363
だから編集できねぇじゃんそれじゃ
画像と変わんないよ
個人でwordとかフォトショとかイラレとか持ってるなら別ですが ここは初心者の質問スレです
雑談したいのなら他へ行ってください >>365
じゃ、Open XML SDKを使ってExcel出力すれば?
Open XMLの仕様書ってpdfで6000ページほどあるが君なら楽勝たろ。 じゃあ、最後、svgならincscapeでいけんだね
こいつ日本語扱えた覚えがないからスルーしてたけど
時代は変わったのかとりあえずフォーマット知らねーけどやってみるわ 末尾に#どう思いますか?という行を付け加えれば質問風に雑談できるのでは? >>362
Windows なら Enhanced Meta File でいいんじゃね?
c# emf 作成
とかでググれば作り方はわかると思う >>373
ありがとう
svgと合わせて調べてみます
>>374
なんか話したい話題があるなら質問しろ >>375
御託はいいから新小岩駅に行ってNEXに飛び込んで死ね >>377
スレ違いどころか
板すらあってないじゃんw プロパティとメソッドの使い分けってどうするのです?
例えばクラスが持ってるリストの件数を返すCountとか、ある項目が存在するかどうかを返すIsItemExistとか
こういうのはプロパティかメソッドかどっちで実装するのです? >>379
クラスの内部状態を返すのならプロパティでしょ。 DIでInjectしたServiceは、フィールドに保持する?それともプロパティに保持する?
どっちも見かけるから、皆さんどういう風に使い分けてるかなと 困ったら全部getなんちゃらでメソッドにしちゃえばいいじゃん(適当)
Isなんちゃらはプロパティでね、大抵 >>381
オレはパブリックはプロバティーでプライベートはフィールドってのが軸だな
勿論例外もある
つまりコンストラクター使ってDIならフィールドかな >>385
確かにw
Isなんちゃらはプロパティ、なんちゃらExistはメソッドってイメージがあるな >>388
ごめん
確かに、はそれが変だなってことにかかってて、そのあとは俺が持ってるイメージの話
分かりにくかったな >>389
よこからついでに突っ込むけど、メソッドでexistって動詞を使うこともまずないと思うよ
存在しろって言われても困るでしょうw
〜Exitsというプロパティなら普通にある なんか突っ込みどころが多すぎて
登場人物全部抜けてる気がする
File.Exists メソッド
String.IsNullOrEmpty メソッド >>391
どっちも静的メソッドだよねそれ
どっちも機能的には明らかにプロパティじゃないのにプロパティ風の名前になってるのは
妥協の産物でしょう。 >>379
原則状態はプロパティ、動作がメソッド
ただし、利用者はプロパティはループ毎にキャッシュせず読んでもいいくらいに軽い処理だと考える場合があるので、時間がかかるならメソッドにしたほうがよいかも プロパティはもちろん取得系のメソッドも何度も呼んでいいよ
実測した結果、遅くなってると分かったらキャッシュを導入する
パフォーマンスだけのために説明変数を追加するのはNG >>396
初心者スレでマウントとりたいだけのバカは邪魔なのでわんくまにでも行ってどうぞ >>395
var cachedUnko = GetBigUnko();
こういうやつ - IsItemExitsはHasItemに
- Existsは引数を取るので基本メソッド
- IsNull、IsEmpty, HasValue等の問い合わせ系は悩ましいので選択基準を規約で決めておく
問い合わせ系については引数不要で十分チープなら
.NET Frameworkでは基本的にプロパティが使われている
ただメソッドにしないといけないケースも少なからずあるので
個人的にはメソッドに統一しといたほうがいいと思ってる
https://msdn.microsoft.com/en-us/library/ms229054(v=vs.100).aspx 回帰分析とかで説明変数って聞くけど他じゃあまり聞かない HasItemってどんなときつかうんだろうか
もしそれがコレクションならContain使うよ
引数ないならプロパティって暴論あるけど リファクタリングやリーダブルコードにも説明変数って出てくるぞ それはないと思うよw
説明変数なんて割とよく聞く言葉だと思う。
まあどうでもいいので終了。 bool HasItems => _items.Count() >= 0; >>401
if (treasureBox.HasItem) {…} 仕事で統計の説明変数という言葉を使うので
全然別の定義の説明変数という言葉があるなら知っておきたい >>406
オブジェクト指向の原理主義的には典型的なアンチパターンだよそれ
空なら何もしないとかアイテムが入ってればプレイヤーのアイテム袋に入れるとかは宝箱のOpenメソッドの中に実装するべき >>408
要するに可読性を上げるためだけに使用される一時変数のこと
数学だったら「ここで〜をxとおくと」みたいなあれ
var count = 3;
var sum = a + b + c;
return sum/count; >>410
「プログラミング 説明変数」でググってみては? >>411
うん、そこは論点じゃないから
IsItemExistな名前はHasItemに変えられるよってこと
>>401はItemという名前からコレクションの要素を連想してるみたいだから
そうじゃないのをイメージしやすい例を出したの
HasSomethingでもいいよ >>394
ポリモーフイズムの関係で実測があてにならん状況も多いんだよね
Countは実装依存でo(1)だったりo(n)だったり、データベース呼び出しが走る可能さえある
それに対してLengthプロパティはo(1)でインライン展開されるだろうと高をくくってもだいたい問題ない
ネックになればそのときに測定 >>415
ポリモー関係ないじゃん
もしかしてストップウォッチ派? >>415
CountプロパティをO(n)で実装するのは良くない
ガイドラインに反してる
CollectionのCountはプロパティで
EnumerableのCountはメソッドになってる理由と同じ >>413
今ググったらプログラミングで説明変数って使い方をしてるのはごく一部だという印象
一般的に使われてない 統計の説明変数はexplanatory variable
リーダブルコードの人がExplaining Variableという名前を付けて書籍に残した
日本語訳するときに適当な言葉が思いつかなかったので説明変数にした
翻訳者に学がなかった >>419
酷い言い掛かりw
違う分野でダブってる専門用語なんていくらでもあるだろうに
そもそも変数だって関数だって数学からの借り物だが全然別の意味で使ってる いやそーいうことじゃなくて日本では同じ表現だけど向こうじゃ別だから厄介
国内でも説明変数で通じるかどうか >>421
フツーに考えてexplanatory とexplaining が別の言葉だと思えませんけどw
現に"explanatory variable" "explaining variable"でググると結構混用しちゃってる例が見つかるよ ついでに、思いっきり脱線で申し訳ないけど、前から疑問に思ってたけど
プログラミングの世界の分割統治はdivide and conquer、
古代ローマの植民地支配戦略の分割統治はdivide and ruleというが、
これもたぶんどっちでも通じると思うんだよね 自分の知らない言葉が出てきた時に
その人の性格が現れるのかもしれないねw 396の時点で
馬鹿が一丁前に発狂してしばらくは荒れるんやろなと思っとったが
やはりだろう
まったくクソボケは期待を裏切らないな IList<T>の中身をソートしたいのですがどうすればいいでしょうか?
SortメソッドはListクラスにあってIList<T>インターフェースにはありません。
LINQのOrderByは元のコレクションの中身をソートしませんよね??
IList<T>の中身を直接入れ替えたいのです。 >>428
var sorted = ilistobj.OrderBy(...).ToArray();
ilistobj.Clear();
foreach (var item in sorted)
ilistobj.Add(item); 入力フォーム画面から入力されたデータを集めてDBなり別の出力クラスに渡すプログラムを.NET2.0の頃に作った時は、入力フォームとデータクラスの関連付けにBindingとか使ってた記憶あるんだけど、今もその辺は変わってないの? WinFormなら.NET 2.0のあとで機能追加されたのってChartぐらいじゃないっけ
BindingSourceは.NET 2.0でもう入ってたよな >>430
ToArray→Array.Sort→書き戻し
のほうが速いはず >>433-434
Web漁ってもWPFネタばかりだったわ・・・ Formのバインディングはずいぶん前だけどわんくまの人が結構まとまった記事書いてたはず
コードはVBだと思ったが >>439
intの変数とテキストボックスをバインディングして
実行時にテキストボックスに「うんこ」って入れると死ぬじゃん
普通どうやって作るの? >>440
普通にフォームのTextプロパティと同じ型にするんだろ 前から変なレスしているアウアウオーがいる
アウアウオー Sae2-jbpI
これNGしとけ >>442
でもさ、入れる値は数値なのに一旦文字列にしないとじゃん? >>444
文字列にしないと Text プロパティに値を設定できないじゃん? テキストボックスのコントロール側でバリデーションしろよ >>445
数値が欲しくても入力チェックの必要があるときは一旦文字列でもてって言ってる? >>447
Text プロパティは文字列なんだからバインド云々以前に一旦文字列にするのは当たり前
(どこかで 数値 <--> 文字列 の変換が必要)
って意味で言った
でも ErrorProvider 使えば数値型プロパティでいい感じにバインドできるんじゃないかと今思った list<list<string>> hoge
このようなデータ構造のものをdatagridviewに表示させたいのですが、datasorceにhogeをセットすると入れ子のlistのcount数が表示され、肝心の中身が表示されません。
解決方法おしえてください つか、数値入力はカスタムコントロールかビヘイビア作って対応しろや
Valueプロバティーなど作ってintやdoubleと直接バインド出来る NumericUpDownさんの立つ瀬がない
>>449
適当なクラス作ってList<string>をそっちに移し替えるのが一番楽だよ >>451
WPFにそれ無くて愕然としたわ
Nugetから拾ってねってことなんだろうけど、流石にForm時代のコントロールは用意しとけよと 今更好きになる必要はない
死んだプラットフォームだよ Formを拡張してくれてもいいのに、
新機能はWPFを使えとかだからなぁ 明らかにビジネスニーズを外してると思うんだが
やっぱり海外でも同じなんだろうなって思う 質問に関係ない雑談は他でやれ
>>449
Listを直接表示する機能はないのでDataTableにしてからDataSourceとして代入してください
MSDNでもそうなっている
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.datagridview.datasource(v=vs.110).aspx >>457
class作る場合はcolumn数固定だし、この方法が良さそうです。
ありがとう。 多次元配列について
二つの変数i,jを代入したときに三次元ベクトルの値が帰ってくるような多次元配列の書き方を教えてほしいです。 大学の研究で使いたいですorz
どこのサイト調べたら乗ってますか、、、 >>463
たぶん俺だけじゃないと思うけど、何言ってるのか全然わからないよw >>465
要件を切り分けよう。そうしたら自分でググれる
>>463の内容だとC#以前に日本語として通じない for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
??? = Vector3; //Vector3はiとjで定まるベクトル
}
この???に入る関数の正しい形がわからなくてずっとエラー吐き出してます f(a, b) -> (a, b, a・b)
これを配列でやりたいんかねえ
無茶言うな >>468
多次元配列ならarray[i, j]
ジャグ配列ならarray[i][j] >>468
Vector3ってx,y,zがいるよね。そこでi,jから算出したいって言われてもわからないよ
クラスまたは構造体にそれを格納したいの?
>>471のように配列にしたいの? var array[,]=new ベクトル型の名前[100, 200];
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
array[i, j] = ベクトルオブジェクト;
}
} >>473は間違えてCみたいに書いちゃった
var array=new ベクトル型の名前[100, 200];
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
array[i, j] = ベクトルオブジェクト;
}
} ベクトルの各成分は既存のプログラムで決まっています
説明不足ですみません ダメだ、、
やっぱりエラーはでないけど描画に意図しないものがでます。
UNITYとリープモーションを使っているのですが、以下の一文が入るとおかしくなってしまいます。
boneText.GetComponent<BoneText>().bonL[i][j] = sphere.position;
この一文でsphere.positionの値は変わらないですよね、、 よくこんな何言ってるのか訳分からん質問に回答できるな
エスパーなのかw つーかこれ日本のIT業界の縮図を見る思いだよw
客側は仕様を決める能力がない。
受ける側も客が欲しい物を聞き出す能力がない。
だからああでもないこうでもないと不毛なやり取りが延々に続く。
どちらの側に「まず最初に問題を明確にしよう」って言える奴がいれば効率は何倍にもなるのに
それが出来ない。 visualstudioと参考書を使ってC#の簡単なプログラムを作りながら学んでいるのですが
ちょっと難しいプログラムを作ろうとネットにあるサンプルコードをコピペしても
アセンブリ参照を確認してくださいの連発でうまく動きません
参考書だとイベントハンドラの作り方とかがひとつひとつ載っているのですが
ネット上のサンプルコードだとそういうのが省略されていることが多いです
やはり経験不足なのでしょうか?地道に簡単なものをたくさん作っていった方がいいのでしょうか?
コピペしただけではプログラムが作れないというのが難しいです >アセンブリ参照を確認してくださいの連発でうまく動きません
それで悩んでる様だと、全く基礎が出来ていないと思われるので
ちゃんと基礎から学習した方が良い 「c# アセンブリ参照を確認」で検索しても探せない
一言一句、正確なエラーメッセージで検索すべき。
エラーメッセージを少しでも、変えたらダメ!
検索できなくなるから
「c# アセンブリ参照」で検索! foamアプリケーションを使ってるのですが、例えば配列に格納されたデータをプリンターで印刷したいって時はどうしたらいいのでしょうか? >>488
三浦雄一郎なんて85歳だけど未だ山に登ってスキーの滑降に挑戦すると言ってる。
日本のit業界でそんな人居るか? >>486
>>487のページを参考に
pd_PrintPageメソッド内の
if (printingPosition == 0)
{
printingText = printingText.Replace("\r\n", "\n");
printingText = printingText.Replace("\r", "\n");
}
を
if (printingPosition == 0)
{
printingText = string.Join(",", sringArray);
}
に置き換える。(stringArrayは印刷したい文字列配列) >>486
>>490はミスった。
>>487のページを参考に
pd_PrintPageメソッド内の
if (printingPosition == 0)
{
printingText = printingText.Replace("\r\n", "\n");
printingText = printingText.Replace("\r", "\n");
}
を、
if (printingPosition == 0)
{
printingText = string.Join("\n", sringArray);
}
に置き換える。(stringArrayは印刷したい文字列配列) 言語仕様を軽く調べて良さそげだったのでC#使ってみたいんだけど
既に簡単なプログラムや重い処理はC/C++
計算系はscilab、DNNはPython、サーバ系はnode.jsてな感じで使い分けしてるので
どういう用途で使うとgoodなのか分からない
C#て何に使える?Unity? その簡単なプログラムというのをc#に持ってくるのがいいんではないかな
あとそこで上がってないのはPC上のGUI使ったものだけど
それには向いてる
window向け
.net framework向け
VS使って開発したい人向け >>487>>491
ありがとうございます!参考に頑張ってみます もともとGUIを実装するのが難しい環境で育った人達はGUIを毛嫌いするけど
それはクソだった環境を恨むべきでGUIは無罪 >>492
Windowsのアプリケーション開発に使える。
c#のIDEほどユーザーに至れり尽くせりなのは無いと思う。 >>492
一般のウィンドウ付きGUIソフトウェアの開発はC#+VS一択 >>493,496,497
GUIプログラムか……
C++WINAPIでのトラウマから今の所HTML+JSで作る事が多い
主にFormとWPFの2つ方法があるらしいけど(ストアアプリは作らないのでUWPは除外)
WPF資料少ないし流行ってないし仕様が難解なのだけど
それでもこっち使うメリットある? >>498
WPFは男前なUIが比較的簡単に作れる。
html知ってりゃ画面デザインのハードルは低い。 >>498
両方やればいい
最初はformsで次にWPF
両方使えたらいろいろ面白い >>501
難しい
学ばなければいけない新概念が多すぎる
いついつまでに作らないといけないとか
こういったものを確実に実装したいなど
ゴールが決まってる場合選ぶべきじゃない
特に適切な学習テキストがないのが致命的
手間や時間をかけて徐々に学習してステップアップしていける人向け >>502
Electronの方が簡単だと思ったけど >>504
求める機能と開発者のバックグラウンドで様々 男前なUIは魅力的だけどやはり難しいのか…
WPF勉強しつつ何か作らなきゃいけない時はForms使うって感じでやってみます >>504
入門レベル以上のモノを作ろうとするとハードル高くないか? >>508
そんな事を言いながら読んでレスまでしていると >>503
学習コストの低いプログラム環境なんて飯の種にはならない。それ以前にいまどき学習コストの低いものなんて無いし。 wpfはMaterial Design In XAML Toolkitなんか使えば、単にコントロール並べるだけでも格好いいの出来る
https://github.com/ButchersBoy/MaterialDesignInXamlToolkit
並べるだけならGridの仕組み覚えれば何とかなりそうだし、言うほど敷居が高いわけじゃない 【1位は3年連続Scalaの424万円!】2017年版プログラミング言語別給与ランキング
http://hrog.net/2017102655819.html MVVMと関係ないだろw
FCUで鳴り物入りで始まった新デザインは放置されてるよな >>514
先入観持たなければ、バインド自体は半日もネットで勉強したら理解できる範囲
難しいのはスタイルとかアニメーションとかビジュアルステイトマネージャとかビヘイビアあたり リストの項目を複数選択してそれぞれの属性値を使って処理しようとしてもWPFだと難しい 単純に1つのアイテムをクリックした時にその要素のデータに対応した処理をしようとしてもなかなか出来なかった気がする 確かにListBoxとListBoxItemと実態データの関係はわかりづらいし、それをしっかり説明している文書も見たこと無いな
あと、ListBoxを理解するのに必須のItemContainorStyleとItemTemplateの解説とか
ノウハウだけはいくらでもネットに転がっているから、最初は単純にコピペから始めるしか無いかもね その辺は、"WPF ItemsControl"辺りでGoogle先生の御神託を受けると
なるほど!なサイトが啓示される WPFは簡単とは言わないが
慣れると「楽」ではある >>489
歳とともに新しい概念を吸収する能力はどうしても衰えるからな
日本だけに限った話ではない
日本だと竹内郁雄あたりが一番の古株 以下のサイトを参考にAccord.NETで画像判定を行いたいのですが
https://www.ipentec.com/document/document.aspx?page=csharp-accord-net-create-simple-classification
コピペだけでは上手く行かなくて悩んでいます。
NuGetでAccord.NET frameworkは導入済
フォーム名をFormMainにして
デザイナからボタン3つのイベントハンドラを作って
残りはコピペしたのですが赤線エラーが連発です。
何が足りないんでしょうか? 見た目ではわからんない変な見えない文字でもあるんじゃね? 昨夜のヤツか
だから何でもかんでもコピペで済ませようとせずに、ちゃんと基礎を学習しろって
>赤線エラーが連発です。
>何が足りないんでしょうか?
先ず、そのエラーの内容を全部正確に書き出せ
何が足りないっつーなら、人に物を訊ねるのに提示する情報が足りてない 入門書は作って覚えるvisualC#2017という本を買い
コピペではありますが本に載っているプログラムを一通り作ってみました。 >>527
usingでエラー出ているから手の付けようがないんだが
Accord.MachineLearningがあってその下のAccord.MachineLearning.VectorMachines;が無いって出ているのだから
Accord.NET frameworkやらの導入に失敗しているか拡張か何かが必要なのにそのことが書いてないか
検証するには同じように導入しなきゃならないけど俺には無理w
身もふたもないこと書くけど、コピペでしかやらないのならプログラムじゃなくてソフトウェア板でツール探したほうがいいと思うよ while文を使って「10000」を「2」で何回割ると
「100以下」になるかを調べるプログラムってどう記述すればいいですか?
教えてくださいお願いします >>531
int count=0;
int x=10000;
while (x>100)
{
x=x/2;
count++;
} >>530
俺は実際にやったんだがまず最新バージョンだとダメだった
サイトに書いてるバージョンをインストールしたら名前空間未解決は全部消えたけどImageItemクラスが見つからないって出たわ >>531-532
Math.Log使って算術的に求めればいいのに、と一瞬思ったけど底の変換で誤差が出るからだめかw
でも解析的に溶けるはずの問題を力技でやるのは面白くないな馬鹿っぽくて 1000/(2^x)<=100
∴x>=-ln(100/1000)/ln(2)
整数単位なら
ceil(-ln(100/1000)/ln(2))
C#なら
(int)Math.Ceiling(-Math.Log(100.0/1000.0)/Math.Log(2.0)) 質問です
WPFで、MenuのItemSourceをXMLとデータバインドして、ItemContainerStyleでXMLに書かれたアイコンのパスからアイコンを表示してます
テキストはうまく並びますが、アイコンは現在最後の1個だけ表示される状態です
試行錯誤したのですがなんかうまくいきません
教えてください! >>534
ありがとうございます
バージョンをサイトのに合わせたらエラーが以下の7つにまで減りますね
https://pastebin.com/a3enEffB
ちょっと希望が見えてきました >>533
俺なんか、実際プログラミングの授業さっぱりわからなかったから気持ちはわかるw
卒業して全然違う職に就いてから、独学で勉強して業務アプリ作ってるけど
やっぱ理系の大学教授って教えるの下手だよなぁ >>542
ありがとうございます!
x:Sharedを調べてきます
>>541
もうちょっとがんばってみます >>544
画像のようなリソースは共有できないのだ。 >>543
正直、工学部のレベルが落ちてると思うよ。 できましたありがとう!
ResourceDictionaryにx:Shared="false"でできました!
本当に感謝です! これでスマートに書けます! >>549
それデザイナーだと、ちゃんと出るからたちが悪いよ。
エッセンシャルWPFとか読んでないとわからんと思う。 WPFのグリッドコントロールが死ぬほど遅いのって解消された? いいえ
WPFの思想を正しく理解してたらグリッドコントロールなんか必要ないとわかるはず
それを面倒に感じるようなタイプのアプリならWinFormsかASP.NETで作るべき >>551
EnableColumnVirtualizationプロパティをTrueにする Gridが遅いなんて話聞いたことないからわかるだろ つか、DataGridに数千数万突っ込む仕様がどうかしている
どうせ使う人もそこまでスクロールするはず無いんだがなぜか作らされる理不尽さ >>559
役所のアプリってそのぐらいの人数
簡単にいくじゃん
どういう画面にするか迷う 某大手に依頼されたログ閲覧ツールも
200機近くある機械がそれぞれ秒単位で
ログ出すから一万とかあっという間に超える
こういうのいい作り方ない? とりあえずDataGridもDataGridViewも
10万件ぐらいなら余裕で表示できるよ
でも無限に表示するわけにも行かないのに
3年ぐらいのデータはみたいとか言うんだよな
役所のアプリに限っては住民だから
全員並列でデータに上下がなくて
完全にどうやって表示したらいいかわからない >>562
elasticsearchに突っ込んで終わり 全部表示しないでクエリで絞り込んで表示したらいい
何万件目視する必要はないと思うけど 能力のない人が要件定義するとそういうアホなことになるよね
客からすれば大抵そういうのはその場のノリで適当に言っただけのどうでもいいことで、
それが生み出す価値と引き換えになる品質やコストを天秤に載せれば明らかにやるべきではないような要件を「やりません」と言えない どうせユーザーは全部のデータは見ないから〜、とか
適当に絞り込んだ表示にしろとかいう意見ははさすがにちょっと頭悪すぎると思うw
んなアホな
っていうか仮想化すれば済む程度の話で客や上司を無能扱いする奴って
どんだけ図々しいバカだよ string型に行番号とかの変数を追加したいのですが
シール型で継承できないとエラーになりました
こんなときどうしたらいいでしょうか >>570
Stringじゃなくてクラス作って行番号や行の情報を変数として持つのは駄目なの? class Line {
private readonly string _contents;
private readonly int _lineNumber;
public Line(string contents, lineNumber) {
Contents = contents;
LineNumber = lineNumber;
}
public string Contents {
get => _contents;
set {
if (value == null) throw new ArgumentNullException(nameof(Contents));
_contents = value;
}
}
public int LineNumber {
get => _lineNumber;
set {
if (value <= 0) throw new ArgumentOutOfRangeException(nameof(LineNumber));
_lineNumber = value;
}
}
} >>572
いたる所に行番号やらが必要になったstring変数があってあんま変えたくないのですが、
結局そうするしかないんでしょうかね >>574
そのメソッドが所属するクラスにはプロパティorメンバー宣言出来ないって書いてあるかな? 1行挿入したらそれ以降の行を全部更新しないといけないけど
そういう心配は不要な使い方なの? >>575
手を動かす(コードを書き始める)前によく考えなかったツケとしか言いようがないね
修正箇所が多いことは間違った設計を正当化する理由にはならんでしょう。
>>576
拡張メソッドの実体はただの静的メソッドなので基本状態を持てませんw
thisをキーにするDictionaryでも持てばやってできないこともないだろうけど、
努力の方向が間違ってる感が半端ない >>576
>実際に、拡張メソッドは、それらが拡張している型のプライベート変数にはアクセスできません。
>>574のこの部分だな
宣言できても外部から使えない intに行番号追加したいと言ったらアホかで終わる
stringだとなぜアホかでおわらないのかな >>581
00001(*゚∀゚)using system;
00002(*゚∀゚)using unko;
00003(*゚∀゚)using chinko;
デリミタ(*゚∀゚)
みたいな >>581
OOPでは文字列というかプリミティブ型をそのまま使う方が間違い
行という概念が対象とする業務にあるならそういうクラスを作る とりあえずstringと暗黙に相互変換できるクラス作ればいいんじゃね >>570
継承(is-a)じゃなくて包含(has-a)にすべきパターン >>575
>いたる所に行番号やらが必要になったstring変数
この「行番号やら」とstring変数の用途というか使用目的は? >>586
素直に委譲するべきですな
継承してstringの全メソッドを公開してしまうアホさ加減が理解出来ない人多いよねw >>586
>>588
この質問者のケースは単なる設計ミス(というよりあまりに思慮が足りない)だけであって
継承かコンポジションかの対立じゃありませんw 設計ミスの原因は値オブジェクトの作成をサボったこと Form1のコントロールに他クラスからアクセスするとき、VB.NETだと
Form1.DataGridView1.〜
のようにアクセスできたけど、C#は同じようにできなかった
https://teratail.com/questions/36464
ここのページのように実装したけど、みんなはどうしてる? >>591
C#だとデフォフトのアクセスレベルがprivateになってる(VBはpublic)から
これをpublicとかに変更してやればできる。(デザイナのプロパティグリッドだとデザイン/Modifier)
でもやるな。
コントロールを外から操作したいなんて99%考え方が間違ってる。 >>592-594
ありがとうございます
Winフォーム作成→dataGridView貼り付け→dataGridViewのModifiersをPublic→
新しいクラスClass1.csを作成→
public void Test() {Form1.dataGridView1.Rows.Add("hoge");}
エラー CS0120 静的でないフィールド、メソッド、またはプロパティ 'Form1.dataGridView1' で、オブジェクト参照が必要です
とでます。Form1. の時点でインテリセンスにも表示されませんでした
どこが間違っているか指摘していただけるとうれしいです
VB.NETもおなじようにやってみましたが、Form1.のインテリセンス候補も10倍くらいの量がありました
>でもやるな。
>コントロールを外から操作したいなんて99%考え方が間違ってる。
ちなみにどのようにされていますか? クラスのインスタンスを電文フォーマットに基づくバイト列に変換するのって
どうするのが一般的ですか?
BitConverterで一つずつやるつもりでいたんだけど、電文の種類が多くて大変なんで
マーシャリングかシリアライザー使って何とかならないかなと考えています。
バイトオーダの変換はありませんが
文字コードの変換はあります。 >>595
クラスのインスタンスからアクセスしないといけない
他のクラスにインスタンス無しでアクセスできるのはエラーのとおりstaticなメンバーにだけ
自分で貼ったリンク先を読み返すか
https://dobon.net/vb/dotnet/form/accessanotherformdata.html
ここを参照 >>596
独自形式?
ならまずはプロトコルの変更を検討 >>596
電文フォーマットが有名な国際規格ならNugetにコンバータが落ちているだろうからそれ使えだけど、独自形式なら電文に応じてコンバータ作るしかないんじゃね
2.0時代の時は文字コード指定したBinaryWriterに1項目ずつ書き込んだけど、今だともっと良い方法あるのかね? >>597
説明が足りなかったです
最初のレスで貼ったリンク先の方法で実現できたのですが、VB.NETのように特別な設定等なくてもアクセスできないのかなと思いまして >>600
意味が分からないのだけどインスタンス無しでアクセスしたいのなら無理
デフォルトをpublicにする設定なら知らない
datagridviewをpublicにしたくないのなら同じクラスに読み書きするためのpublicなメソッドをおいてそこに外からアクセスする LINQの川俣本買ってきた
確かに変態的だがw、なかなか面白い >>601
勉強になりました
ありがとうございました >>602
彼が本の中で出している例が、彼が実際に作っている同人ゲームというのが痛々しい
その痛さは中身とは直接関係ないけどね >>596
電文コンバータと、そのコンバータ用のattribute作った事ある。
ちまちまやっても辛いが、電文は自システム外との接点で一番健全であるべきだと思うから、
あんまりその辺のライブラリ使わずに、ベンダサポートのあるものを買うか自作した方が良いと思う。 double値で0〜1の乱数一個発生させた後何倍かしたあと50足して50〜100の乱数表示させたいんだが「何倍かして」をどう打ち込んでやればいいのか分から それが分からないってどんだけ数学苦手なんだよw
小学生でもわかる気がするけどw >>606
こたえ は らんすう かける (いちばんおおきいかず ひく いちばんちいさいかず) たす いちばんちいさいかず List<string>をcomboBoxの内容に入れ替えたいんですが、
list.Clear();
foreach (var item in comboBox1.Items)
{
list.Add(item.ToString());
}
もっといい書き方ありますか? >>610
list = comboBox1.Items.Cast< string >().ToList(); listを作り直すのが嫌だったら
list.Clear();
list.AddRange( comboBox1.Items.Cast< string >() ); >>610
DataSourceにデータソースをバインドしてDisplayMemberとValueMemberをゴニョニョする方が良いと思う >>611-612
ありがとうございます。
やってみます。 あるstringのデータを
コンソールで表示すると
1 2 3 4
5 6
となるのですが
フォームアプリケーションのtextBoxで表示すると
1 2 3 45 6
となってしまいます
これはどうしてでしょうか?
コンソールアプリケーションと同じように表示する方法はありますか? textBox.Multiline = true; >>616
フォームデザイナーでテキストボックス選択すると出てくる三角マークで出てくるチェックボックスにチェック >>617>>618
Multilineはチェックしています >>621
なるほど、データの\nを\r\nに置換すれば良いのですね
プログラム内で出来る様やってみます
ありがとうございました! >>606
乱数で1〜0じゃなくて
乱数で0〜50出して50足せばいいよ >>610
悪いこと言わんからlistを入れ換えなさい >>624
>>611-612
では問題あるのでしょうか? >>625
その二つが違うんですけどね (´・ω・`) >>600
VB.NETの既定のインスタンスのことかな?
VB.NETではフォームのインスタンスをnewすることなく使える
http://www.atmarkit.co.jp/fdotnet/special/vb6tovb2005mig02/vb6tovb2005mig02_01.html
ただ、VB6との互換というか、ごまかしだから避けるのが基本
メリットが薄い割に後々混乱やバグのもとになる >>610
コンボボックスのデータソースにリスト当ててやればおけ 互換性の為の無駄はあるよ
そして難しくはないっつーかかなり簡単な部類
仕様とライブラリが膨大で覚える事が多いだけ Dictionaryを使って
stringとfloat型で特定の人物の電話番号を
WriteLineでコンソールに出力するプログラムを作りたいのですが
例えば0001234567という電話番号だったりすると
000の部分が省略されて1234567の部分しかコンソールに出力できません
float型では0は扱えないのでしょうか? >>632
電話番号には文字列を使いなよ。国際電話を使うかもしれないぜ。 >>632
float型だろうがdecimalだろうが頭に0が付かないのは当たり前。電話番号は文字列として扱え
数値以外の要素のチェックが必要なら面倒でもチェック用のメソッドを作る
>>633
それができるのは桁数が決まっているものだけだから電話番号には使えない >>634
>>635
文字列として扱ったら表示されました!
ありがとうございました! スレ的に笑っちゃいけないのかもしれないけどその発想はなかったw
だけど常識的に考えて、0と00が別の値として認識される数値型があったら変だろうw 東京の局番が増えたのついこの間だったろう...と思ったらもう20年以上前かw 電話番号は真面目に考えると結構複雑
nugetでPhoneNumberを調べるとすでに作ってる人がいるので参考にするなり拝借するなり
してきた方がいいかもしれない 問題点番号26
110と119、117が登録できない
永久凍結(笑) 常識的に考えて緊急電話がサービスに登録してこない
電話帳かな? 電話番号って番号だからなぁ。一応。
単純に文字列が良いかと言うと、ソートは国番号、市外局番、市内局番、内線番号で数字順にやりたい、とか、局番のハイフンは数字じゃないじゃんとか、市外局番変わるので洗い替えます、とか結構うんざりする。
業務系だと電話番号クラス作る(というかプリミティブな型をデータを表す型に使わない)けど、そこまでやってるとキリないしな。 結局、要件定義次第だからね
将来的な変更を見越して型を作るのはアリだと思うけど 電話番号は番号というより記号
数字としての役割はしてない >>650
よく書いてあるじゃん
vc6の頃なんてリンク切れだったぜ >>652
VC6と比べると幾らかマシと言うレベルで褒められたもんじゃない。
.NETの少しマイナーなクラスだと「そんな説明で分かるかボケ」か説明すらない状態だ。 >>654
その充実(笑)なサンプルソースとStackOverflowの親切な外人様のおかげでなんとかなってる状態w ワシみたいな趣味グラマーは公式ドキュメントなんか読まないからノープロブレム await/asyncの良い資料ってどこかに無いかね
ParallelやTaskの奴なら昔MSが出してたParallel Programming with Microsoft .NETが参考になったけど、こっちは全然見当たらない >>659
解説に加えてパターンやアンチパターンがあるとわかりやすいからありがたいけど、ググってもブログでちょっと触ってみましたみたいな記事しか無いんだよな OracleやAppleに比べるとMSDNは神レベル >>662
MSDNは情報は多いが、ひどくのろまな亀だ。 c#初心者のDTですが質問良いですか?
Visual Stdio 2017 でプログラムの実行方法が分かりません猫でも解るC#を見て打ち込んだのはいいのですが走りません
アドバイスをおぬがいします >>627
C#とVB.NETは構文が違うだけでだいたい一緒っていうイメージがありましたが、そういう側面もあるんですね
参考になりました
ありがとうございます >>664
先ずコードを晒せ、話はそれからだ
>猫でも解るC#を見て打ち込んだのはいいのですが
て事は、大して長いコードでも無いんだろうし >>664
情報が少なすぎる
とりあえずなにかを動かしたいのか?
「新しいプロジェクト」
↓
「コンソールアプリ」のプロジェクトを作成
↓
static void Mainしたの中括弧の中にConsole.WriteLine(“Hello World”);
を追記する
↓
画面の上にある再生ボタンを押す >>668
説明が足りなくてすいません
http://imepic.jp/20171030/755380
こんな感じで本を見て書いたやつを走らせたい息子が困っていまして 全裸でデバッグする奴なら知ってるが
まさかチンコでタイプするツワモノがいたとは >>669
プロジェクト作ってないな
>>668の通りやってみるが吉 >>669
画面に顔が映り込んでんぞw
プログラミングの前に、リテラシーを何とかしようぜ…… Visual Studio 2017じゃない気がするんだけど >>675
VS codeだな
>>676
今使っているのはテキストエディタでしかないのでVisual Studioを使ってください Visual Studioを使っているのですがなかなか走らないんですよ
http://imepic.jp/20171030/768660
ちなみに今こんな感じ >>669
まさかのVisual Studio Code >>678
プロジェクトがウィンドウになってるぞ。
コンソールプロジェクトを作れ。 >>678
NECのPC使ってるヤツには何も教えません。
NEC肉けりゃPCまで >>683
仕方がないんですよリアル中1の息子ですから
ちなみに成功しましたありがとうございます >>683
NECに何の恨みがあると言うのだ
素晴らしい企業だろう 素晴らしいかどうかはともかくとして、特定企業に対する好き嫌いは宗教みたいなもんだから
深くツッコミを入れてはいけない
>>678
デジカメで画面を撮影するんじゃなく、スクショを撮る様にした方がいいぞ >>678
Formに文字列を表示する方法はいくつかあるけど
簡単な方法としてはラベルに文字列を代入する
("Label1"みたいなデフォルトの文字列はプロパティから削除しておく) >>678
他の人も書いてるけど、それはVisual StudioじゃなくてVisual Studio Codeだから
VSを使ったほうがいいと思う >>689
ああ…
いやそのスマホの小さい画面で
恥ずかしい >>648
>>646
で、数字として扱わなければいけない理由書いたつもりだがな。 その議論は不毛だ思うよw
まあ、電話番号の最小単位の数字が単なる符号(記号というより符号だね)であったとしても
数字に符号されているんだから、コードでそれを表現する時には素直に順序付きの数字の並び(の並び)
として表現した方がいろんな処理場便利なのは確かだと思う
普通はやらねえと思うけどケタの表現にenumなんか使ってもいいことないねw >>693
番号に#とか使ってたり
アメリカみたいにアルファベット入れてたら数字じゃダメだよ 電話番号だからどうとか関係ない
用途によって扱いが違うだけ
コンソールに表示したいんだから文字列にする >>678
まあ、>>681 でいいわけだがVSから入るとMain と Formの関係がなかなか理解できんよな
そういうの解説してる入門書は少なくて
オレは高橋なんとかの「やさしいC#」の最初の方読んでようやく分かった Entity Frameworkにの和書って絶望的に無いけどお勧めある?
使ってるヤツ居るんか。 >>699
webなら普通に使ってる
ef単体に絞った本は見たことない
asp.net mvc の本ならefに触れてるはず
でも正直本は役に立たんかったわ
stackoverflowが一番役立った 最近書籍弱いよね
本屋に行ってもオワコンなのか?と思うぐらい何もない >>701
ブログとかの情報で十分な場合がほとんど >>695
番号にシャープを入れるんじゃなくて、電話番号クラスのうち、シャープ特番クラスを作る方が良いのでは?
そうなると電話番号インターフェイスになるが。
アメリカのアルファベットは、ありゃ数字だ。数字をアルファベットで表現してるだけ。
なので、これは元言ってた電話番号クラスに数字列と表現列を作る他ないな。
そーすりゃ日本の語呂合わせ番号も(必要があるからはおいといて)保存できる。 日本の携帯と固定電話に対応すれば殆ど対応できるんだから、後はメモ欄でも付けてそこに書けでいいと思うんだが
そうは問屋が卸してくれないよな >>700
Webにあるのはef4の頃の古いのしか見当たらないね。
mvcの本はあるけど全然役には立たん。
StackOverflowが一番役に立つ悲しい現実。 >>701
洋書は沢山あるんだけどねぇ。
Linux本が一般書店に平積みしていた時代が懐かしい。 〜next();と〜next double();て整数乱数発生させるか実数乱数発生させるかの違い? 実数の乱数ってそりゃ誤差じゃねぇのけ?w
狙った値が作れないから
整数で出して桁合わせする
俺はね 電話番号に#や*は使わないと思うよw
あれは自動応答を操作するためのトーンを割り当ててるだけじゃないの?
そんな番号があったらダイアル回線からかけられないじゃん もともとパルスの頃は数値ではあったな
0は10回パルスだった
DTMF利用して余ったとこに#と*割り当てて
独自に使い始めたんじゃないかなあ >>710
*はサブアドレスで使われる。
#は内線でよく使われるな。 >>713
そういえば、そんなのもあったな。
すっかり忘れてた。 >>711
今でもパルス回線はあるだろ。
国際電話番号の表記には+81とかある。 その+は国番号を表す記号であって
実際に+をダイヤルするわけじゃない
まあ-も()もダイヤルしないから電話番号の一部じゃないけど >>713
NTTの回線からしかつながらないものを電話番号と言ってよいかは微妙でしょう
>>714
後者はあきらかに電話番号とは違うような...
前者は微妙だけど、普通のアナログ回線からは掛けられないものを電話番号と言えるかどうか
まあ元のお題にもどれば、テクニカルに電話番号であろうがなかろうが
電話番号として扱えるようにすべきだとは思うけど >>718
と言うかコメはもともとアナログ回線で掛けてるときにいまからトーン送るぞってボタンだったんだが。
内線番号に関しては、待ってりゃ交換台出るだろ。 電話番号でないものを電話番号として扱う、がわからんなぁ。
電話番号は電話番号として扱え、ならなるほどだけど。 >>718
>NTTの回線からしかつながらないものを電話番号と言ってよいかは微妙でしょう
これはプッシュホンのサービスと同時に開始されたサービスで、当時は電話サービスを電電公社が独占していたので、他の回線なんか存在しなかった
国際電話があるじゃねーかと言うかもしれんが、国際電話から繋がらない110などの特番は電話番号じゃねー というならその反論は認めよう >>719
それは違うでしょう。
あれは(どこのメーカーが最初に始めたのか知らないけど)ただの電話機の機能で
恐らくNTTの定めた規格でも何でもない
自由化直後の電話機はダイアル回線モードだと*押そうが何仕様が
トーン出なかったような気が
まあいい加減どうでもいいねw
>>720
DTMFを認識する自動応答マシンにトーンを送るのは電話を掛けると言わないし
明らかに電話番号じゃないでしょう。 visualC#のXNAでブロック崩し作ってるけどクソめんどくさいな作成+整理整頓するだけで混乱する
コンソールでしょぼいので完璧だって思ってると痛い目見るな こうやってプログラム=タダって概念が世の中に蔓延したよね
広告費で稼ぐ世の中になったけど 飢餓ベネズエラ「1600%インフレ率」で仮想通貨が生活の柱|ビットコインマイニング(採掘)で生き残る
http://virtualmoney.jp/I0001275
「ビットコイン」新世界のベネズエラ:自由を求める、採掘者たちの反逆
https://www.fuze.dj/2017/01/venezuela_mining.html
ベネズエラ、ビットコインマイナーが10万人規模に
http://btcnews.jp/5c5uq4ei13034/
ジンバブエではビットコインが80万円?自国通貨がインフレしている国の仮想通貨需要について
http://coinpost.jp/?p=5803
ビットコインとは?投資で儲かる仕組みと危険性を分かりやすく解説
https://enjoyrock.jp/bitcointoha-4370 FindWindowで見つけたウインドウの画面をキャプチャすることはできますか?
ウインドウが隠れていてもキャプチャできるようにしたいのですが
PrintWindowと組み合わせようとしてもよくわからないです そんなXP時代じゃないんだから…
隠しAPIのDwmGetDxSharedSurfaceが定番やね
今でも使えるのか知らんけど DWMも使ってみたいのですが日本語解説のサイトが全くなくて…
英語出来ないとやっぱりだめですね >>732
最小化されてなければ重なってようが画面からはみ出ていようが適当なBitmap作って
using (var g = Graphics.FromImage(bmp)) PrintWindow(hWnd, g.GetHdc(), 1);
とかでも済みそうだが。環境依存だろうから.NETには碌に無いしWin32APIの領分だなぁ >>722
確かに、規格ではないな。そういう意味では、それこそ自由化されたあとはNTTのローカルルールに縛られず、すべてが番号として取り扱われるべきなのかもしれん。
自動応答マシンの特定のメニューまで進むのを「番号」と言っていいと思うぞ、俺は。 Win32関数のリファレンス日本語だけになっちゃったんだw
ほんといらんことするよなMSもGoogleもw https://ideone.com/jcN0mM
別のプログラムのキャプチャを取りたいのです
別のプログラムのProcessオブジェクトを取得してPrintWindow関数につっこみたいのですが
どうしたらよいでしょうか? GetProcessesByNameでオブジェクトを取得した後
↑に貼ったコードのCaptureControlにthisの代わりにどうやって渡せば良いでしょうか? >>736-737
FindWindowと云うからP/Invokeは理解しているのかと思いきや、躓いてるのはソコかいってかコピペかい
ProcessオブジェクトにはメインウィンドウハンドルだけならMainWindowHandleプロパティが既に用意されてる
枠の有無でGetWindowRectやGetClientRect等のWin32APIでサイズ取得、枠無しならnFlagsにPW_CLIENTONLY(1)を指定
LPRECTをout Rectangleとしても互換性はあるが、メンバの意味は異なるので注意。あとOpenGL画面とかは怪しかった気もする 初歩的なことで申し訳ないですが、
C#をx86でコンパイルしたときlong型は何バイトですか?
32ビットですよね?
long型な引数を持つC++で作られたDLLを呼ぼうとしてるんですが
C#側もlong型にするとバイオレンスエラーが出るんです C# の long型 の .NET型は System.Int64
64ビットだよ どうでもいいけどバイオレンスじゃなくてバイオレーションな ありがとうございます。
x86指定でもC#は64ビットですか。
つまり、x86なC++のlong = C#のint ってことですね
ありがとうございました。 >>744
x86なC++というかILP32ね、LLP64でもlongは32bitだから、Windowsに限り常に32bit
C#は常にintが32bit、longが64bit、IntPtrがポインターサイズでCIL名native int >>745
IntPtrは64bitと32bitで自動的にサイズが変わる罠があるよね 罠じゃなくてそれをマネージド上で扱うことを目的とした型やねんで >>738
すいません高度すぎてちょっとよくわからないです
FindWindowでウィンドウハンドルを取得して画面をキャプチャするプログラムは作れたのですが
ウインドウハンドルしか取得してないのでウインドウの大きさが設定できなくて困っています
(現在ピクセル数で設定)
GetWindowRectやGetClientRectを使おうとしてもRECT構造体の定義がよくわからなくて出来ません。
GetProcessesByNameで取得したProcessオブジェクトからハンドルとオブジェクトの大きさを取り出すにはどうしたら良いでしょうか? >>751
よくわからないですが後で読んでおきます
>>752
そのページは見たことあるんですが意味がよくわからないです…
すごく低レベルな質問だと思うのですが
Process[] ps = Process.GetProcessesByName("notepad");
foreach (System.Diagnostics.Process p in ps)
{
textBox1.Text = p.MainWindowTitle;
}
だと問題ないのに
Process[] ps = Process.GetProcessesByName("notepad");
textBox1.Text = ps[0].MainWindowTitle;
では動作しないのは何故でしょうか? >>753
後者だけ動かない理由はないから何か勘違いしてるんでしょう すいません動きました!
メモ帳開いていなかっただけでした… 勉強用トイプログラムで抽象クラスを継承したクラスにインタフェースを継承したのですが、実務の世界ではよくやる事でしょうか?
抽象クラス側にインタフェースのメソッドを書くとか美しく無いので邪道な事をしてるかもと心配になりまして ボールとか壁に当たって反転させるときに
int speed=1;
更新処理
position.x+=speed;
if(800<position.x)
{
speed*=-1;
}
こうゆう反転っておkなの?+=って無駄じゃねえかとか言われない? https://ideone.com/gKjIFo
見よう見まねでRECT構造体を使おうとしているのですが
17行目の&rectWinという所で以下の2つのエラーが出てしまいます
何が間違っているのでしょうか?
ポインターおよび固定サイズ バッファーは、unsafe コンテキストでのみ使用することができます。
引数 2 はキーワード 'out' と共に渡す必要があります。 >>760
その文面でググれば多分わかる
というよりメッセージどおりだよ
引数に out 付けよう
意味が分からないなら調べよう >>757
人間クラスと継承した社員クラスがあるとして
体重身長インターフェイスは人間クラスに、入社日退職日インターフェイスは社員クラスにってのが普通だと思うけど
抽象クラスだから付けないって考え方は美しくないんじゃないかな? >>761
できました!有難う御座います!!!!!!! >>762
なるほどその通りですね
営業志望の未経験者なのにC#開発しろと言われ正しくOOしてるか不安でした
参考になります
OOとは徹頭徹尾ヴァーチャルマシーンと言われてもピンと来なくて。。。 みなさんありがとうございました。
C++側で void test(long aa[2]);
みたいに定義されてるやつをC#から使うときも IntPtr でやりくりするしかないんですよね。 バイナリプログラムもCPUがインタープリットしてるしインタープリタだなw >>766
いやintを2つ並べただけの構造体を用意してrefかout使えばいい >>767
コンパイラ型なんだけど。。
あほなの? >>769
pack意識したうえで配列という手もありますね
どっちにしろコード量は増えますね
C# 側で ref を付けるだけで
勝手にIntPtrやらマーシャル確保・代入・解放してくれたらいいのに・・・
char * → string みたいな超絶ラクチンな方法でさ ちょっと早合点で書き込んでしまいましたが
[StructLayout(LayoutKind.Sequential, Pack = 4)
struct struct_aa
{
public int aa1;
public int aa2;
}
struct_aa aa;
としたうえで
test(ref aa);
で出来ちゃうんですか!? 配列でそのまま渡せばいいのにわざわざ変な方法使うとか
>>766
C#から渡すときはvoid test(int[] aa);でいいんだよ。Visual Studio以外なら知らん
>>772>>773
アンマネージ側で定義されていない構造体を勝手に作って渡すって考え方がおかしい
アンマネージ側で要求されている引数の形式に合わせるのが基本だろ ググって最初のほうに出てくるサイトで char * 以外は全てマーシャってるので
てっきり IntPtr を駆使すると思い込んでました。
配列じゃないポインタ渡しは ref/out で何の造作もなく出来ました。
(マーシャル関連のコードを大量に書いていたのが馬鹿らしくなるほど)
んで配列ですが
// C++(x86)
extern "C" __declspec(dllexport) void test(long a[2]);
// C#
[DllImport("usrbatch.dll", CallingConvention = CallingConvention.Cdecl)]
static extern void test(out int[] a);
int[] a = new int[2];
test(out a);
で、バイオレーションエラー出ちゃいます。。。 >>776
C++側からC#にoutする形で返したいのならC#からポインタにして渡す
そのコードのC#側のout(ref)だと変な動きにしかならない。消せ うわぁ、ありがとうございます。
先方で値が書き換わる場合には ref/out を付けないといけない
(付けなかったら配列だろうが値渡しになる)
だと先入観で思い込んでました。
配列だったらC++と同じくポインタ渡しになるんですね!
// C#
[DllImport("usrbatch.dll", CallingConvention = CallingConvention.Cdecl)]
static extern void test(int[] a);
int[] a = new int[2];
test(a);
で、うまくいきました。
(C++側で設定された値が戻ってきた) >>778みたいな場合、アンマネージド関数の宣言の仮引数にOutAttributeを付ける必要が
あるのかないのか、MSDN読んでもいまいちよく分からん
https://msdn.microsoft.com/ja-jp/library/75dwhxf7(v=vs.90).aspx
を読むとBittableな型の一次元配列の場合不要のようにも思えるが、
https://msdn.microsoft.com/ja-jp/library/hk9wyw21(v=vs.90).aspx
のサンプルでは属性がついてる >>779
そのリンク先に書いてあるぞ
これらの型は、呼び出し元と呼び出し先が同じアパートメントに属する場合には、In/Out パラメータとしてマーシャリングされるように見えることがあります。
ただし、そのような型は実際には In パラメータとしてマーシャリングされるため、引数を In/Out パラメータとしてマーシャリングする必要がある場合には、InAttribute 属性と OutAttribute 属性を適用する必要があります。
Outがないと保証されない >>778
ref/outは書き換え云々というより変数の参照で初期化の必要があるかどうか、P/Invokeでは構造体くらいにしか使わぬ
配列は参照型なので参照の参照になるし、そのままでもオブジェクトヘッダ+要素数を含むのでネイティブ配列へはちょっとズラしている
>>779
上のページに>>780の通りずばり書いてないか?コピーと固定 # 書式指定された Blittable クラスのメモとかにも。そういう事ではなく?
既定のマーシャリング動作を理解し、MarshalAs属性とIn/Out属性を駆使すれば、Marshalメソッドの出番はあまりなくなる
Marshal.UnsafeAddrOfPinnedArrayElementとかもArrayWithOffsetというお誂え向きな構造体がある
手動でIntPtrを捏ね回すのが有効なケースもあるが。ちぃと古いけど↓の記事はよく纏められている
https://msdn.microsoft.com/ja-jp/library/ff647812.aspx#scalenetchapt07_topic4 GCがうざいならstackallocを使う手もあるよ
unsafeになるけど、マネージ配列のマーシャリング使ったとしても境界外へアクセスしたら普通にクラッシュするんだし
むしろ危険な操作は明らかに危険とわかったほうがマシ >>780-781
レスどうも
よく分からない箇所は結局、>>780に引用してある部分の
>同じアパートメントに属する場合には
この但し書きかな。
同じアパートメントって何だ?
>>778のケースでは結局Out属性なしでも期待通り動くみたいだけど、
逆にBittableであっても明示的にOutを付けないといけないのはどういう
場合なんだろうか >>782
stackallocはスタックを理解していなければ危険すぎないか、少量で確保速度が最重要ならアレだけど
unsafeポインターを使うならfixedでも境界チェックは外れるし、そのあたりで…
>>783
アーその辺はCOMの話かな、COMマーシャリングが挟まれると固定では済まなくなるという
https://msdn.microsoft.com/ja-jp/library/eaw10et3.aspx#marshaling_and_com_apartments
具体例については…直接COM使った経験がC++でちょろっとしか無いのでわっかんないや(無能 Parallelの動きがわからん
10個のZIPを同時に解凍する処理するとして
Parallel.Forで実行したらどうなる?
ちなcore i7
エラー? >>785
同時実行数はCPUのスレッド数だから8個同時に展開して、2個は待ちになるんじゃね
CPUより展開後ファイルサイズによってはHDD書き込みがネックになりそうな気もするけど >>786
1.5ってすごくいいよ
>>787
動き知りたいんよ
どうなるか c#で画像の黄色部分だけを白にして残りを黒にする様なことはできますか? >>791
ProcessでImageMagick呼べば一瞬でできる
似た色はどこまで許容するのかとかいちいち個別に作ってたらキリがない DataTable dt = new DataTable();
bool foofunc(ref DataTable dt)
{
・・・・
adapter.Fill(dt);
こんなコード見たんだが何かメリットあるのか? >>793
それ書いた奴が参照型を理解してないんだと思う
何の意味もないので絶対に真似してはいけない >>794
c#歴10年のヤツのコードなのだ。
当然foofunc内でtry/catchがあり戻り値にエラー有無が返る。
愚痴ってスマヌ。 >>792
そういうのって、C#でって言うのかな。 imagemagickってソースに組み込める何か提供してるん? ついでに補足しておくとMarshal.ReadInt32でなくMarshal.Copyでバイト配列で4バイトずつ読めば
Blue,Green,Red,Alphaが取れるから許容範囲設定とかしたかったらそっちで 経験年数と理解度?にどれだけの相関関係があるのか
疑問が生じている今日この頃 >>793-794
refで渡せば、呼び出し先の関数で、呼び出し元の変数のインスタンスを変更できる
これをやりたい状況がどれだけあるかとか、やるべきかどうかとかはおいといて
なんの意味もないわけではない >>793のケースで意味がなさそうって>>793,794は言ってるのに、
>これをやりたい状況がどれだけあるかとか、やるべきかどうかとかはおいといて
とか一般論を言い出してそのつっこみよくわからん。 >>797
ありがとうございます。
ほぼ真っ黒になってしまったのでRGB値で範囲指定できる様にやってみます。 >>807
この話の流れに>>804がふさわしいかどうかはおいとくとして...
> 君も参照型を理解してないね。
ちょっと説明してみ DataTable dt = new DataTable();
bool foofunc(ref DataTable dt)
{
DataTable dt = new DataTable();
・・・・
adapter.Fill(dt);
「なんの意味もないわけではない」のコードにはなったが
更に輪をかけた馬鹿コードに進化させてみた。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f) DataTable dt = new DataTable();
bool foofunc(ref DataTable dt)
{
dt = new DataTable();
・・・・
adapter.Fill(dt);
間違えてたw それじゃただのoutじゃんrefの意味じゃないじゃん(難癖 >>811
そう、参照型にrefは無意味なのです。
参照型が分かってないよりこのコードが問題なのは、
検査結果を引数に返して実行エラーの有無を戻り値で返していること。
参照型も理解していないが例外処理はもっと理解していない糞野郎のコード。 >>812
Dictionary.TryGetValue()とかあるし、そこはケースバイケースかな。
参照型にref付けてるくらいだから、何も考えてないのかも知れないけど。 >>814
public bool TryGetValue (
TKey key,
out TValue value
)
refじゃなくてoutやないかい! そうだった。>>811とまざった。
こっちも寝ぼけてるねw つまり
>>793と
DataTable dt = new DataTable();
bool foofunc(DataTable dt)
{
・・・・
adapter.Fill(dt);
とは同じ結果になると >>815
まぁ、outにする必要はあるけど、
「検査結果を引数に返して実行エラーの有無を戻り値で返していること」
自体に問題はないな。 この手のメンバ変数に検索結果をセットする時はこんな感じにして、例外処理は基本呼出側に任せちゃうんだけど問題あるのかね?
前はエラーコードのEnum返してたけど、エラーケースの殆どが例外処理で扱われる物ばかりだったので止めちゃった
DataTable dt = new DataTable();
Void SetHoge(DataTable dt){
・・・・
adapter.Fill(dt);
} >>819
それで良いと思う。
上のみたいに成功したかどうかを返り値で返すのは、
正常運用の範囲内で失敗する場合があるのを想定している場合。 >>819
自分ならこうするけど。
DataTable GetHoge()
{
var dt = new DataTable();
・・・・
adapter.Fill(dt);
return dt;
} 参照型にrefは無意味って言ってるやつは
呼び出し元変数のインスタンスを変更「できる」
ってことをどう評価してるのか 型がわからない変数と同じ型の変数を用意したいときってなんか記述方法ある?
型を調べるとかじゃなくてプログラミング的に解決する手法あったら教えて >>824
var y = 謎の変数x;
っていうか、たぶん何か勘違いしてると思うw
「型が分からない変数」っていうのは実行時に型が決まるって意味なんだろうけど、
変数の型は静的に(コンパイル時に)確定しているのでそれはありえない
それとも匿名型のことを言ってる? dynamic型ならコンパイル時の型チェックは行なわれず実行時に解決するね >>828
いや、「変数の型」は静的に決まるでしょ。自分でdynamic型って書いてるじゃんw >>824
var x1 = new X();
var x2 = Activator.CreateInstance( x1.GetType() ); >>823
まあそれが必要なケースがほとんどないし 引数のnullチェックして必要ならインスタンスをnewしてつけられる >>832
出来るが引数がnullな時点でArgumentException飛ばすんで実用価値はほぼないな。 >>834
関係ないな。しょぼい誤字だ。
>>824
何をやりたいか分からないが、ジェネリックメソッドでは目的に沿わないかな。 javascriptみたいなのを想定してるんだろうけど
まあ普通はない >>832
だからそんなことが必要になったことがどれだけあるんだ? なんかしょうもないことで争ってるけど、>>823の方が正しいね
エイリアスの機能がいらないならそもそもrefってキーワードも用意されてないでしょ
負け惜しみでくだらない意地を張るのは子供っぽいよ MSらしく反則技が用意してあるだけ
初心者は使わない方が無難
返り値が二つ以上欲しい時は今なら名前付タプルを使う 返値代わりに使うのはoutだし今ならって言ってるとおり昔はなかったんだし
ちょっと何言ってるのか分からない >>840
> エイリアスの機能がいらないならそもそもrefってキーワードも用意されてないでしょ
???
refって参照型じゃなくても使えるんだが...
参照型にrefを使うことがほぼないだろって話だと思うけどな
> 負け惜しみでくだらない意地を張るのは子供っぽいよ
自己紹介は要らんよ w >>844
意味が分からない
変数の値の利用と書き換えの両方が必要かどうかは、その変数の型が
参照型であるか値型であるかは関係ない。
何を言ってんの?
しかし、いい歳こいて幼稚な奴って嫌だねほんと >>842
名前付きタプル使いたいけどVS2013限定という変な縛りに囚われているわ
フレームワーク縛りは判るけど、IDEのバージョンを縛る理由ってなんなんだろう 古いコンパイラでビルドできなくなるだろ
俺個人としては大した問題ではないと思うけど、大した問題だと考える人がいるのは普通に理解できるぞ >>845
> 変数の値の利用と書き換えの両方が必要かどうかは、その変数の型が
> 参照型であるか値型であるかは関係ない。
えっ?
普通にググればrefが値型と参照型でどう使われてるかわかると思うんだが...
引っ込みつかなくなってるのかな
> しかし、いい歳こいて幼稚な奴って嫌だねほんと
また自己紹介ですか? w ようするにキチガイなので相手にしなくてよいという話 >>840
とりあえず、refは値型以外には使い道が無いのは確定で。 >>848
マジモンかよ
俺個人が使うか、あるいは一般に多用されるかどうかはともかく、
参照型であろうと変数の値(つまり参照)そのものを書き換えたいケースは存在すると思われる。
たとえばStringのようなイミュータブルな型や配列の長さのように変更できない要素を
持つ型の場合、元の値を利用しつつそれを加工した値を返すにはrefを使うしかない 最近見たrefはBindableBaseの中だったな、ref Tとかジェネリックの場合
普段は使わないね 議論ごっこやりたいのなら
ふらっと C#,C♯,C#(議論用)
http://mevius.2ch.net/test/read.cgi/tech/1469538912/
で好きなだけやってくれ。ワッチョイもないから 意味もなく
try
{
・・・
{
catch
{}
や
try
{
・・・
{
catch (Exception ex)
{
throw ex;
}
するヤツってアフォですか?
お願いだから辞めてください。 >>856
プログラマがそこで例外が発生しうることを認識してそのコードを書いていることを
明示する意味はあるよ。
>>851といい、ちょっと単細胞過ぎないか? >>850
了解
>>853を見る限りおまえの言う通りだな
>>851
さすがにそれは極論過ぎ >>857
c#で>>856やるとそこまでのスタックトレース消し去ることになるんだけど正気? ファイルが読めない程度で例外返すクラスとか一旦握り潰して動作を変えたい >>862
go言語が例外処理の機能を無くした理由の1つは、大半のプログラマーが例外処理を正しく扱えないから。
本当にそう思うよ。 >>860
まあ後者はたしかに普通やらないと思う。
ただ、例外情報なんて必ずしも常に必要とは限らない。 >>865
TryXXXなんてのがあるように、そもそも成功したかどうかしか関心がない場合もあるでしょ >>867
それは例外でエラーを拾はないでエラー処理をしたい場合。
例外処理は少々重い。 >例外処理は少々重い。
初回の例外発生の時にその例外クラスがロードされるみたいなんだけど、その事? >>864
常に必要ではないが、それをわざわざ消す必要があるか? ファイルを削除や移動する前に、他のソフトで使用中かどうかを調べるのに
R/Wモードでオープンしたときに例外が発生するかしないかで判断するしか無い
この処理のときはcatchでfalse返して例外を握りつぶしている >>872
まあ、たとえ使わなくてもInnerExceptionに食わせて再スローした方がベターだとは思う >>874
Java出身の人がよくやる勘違いだよね 例外で何を伝えたいかどう制御したいか決まってなければ迷うかもしれない
例外出ても継続できる内容なのかもあるかな 例外をどこで処理するか(または投げっぱなすか)という基準をきちんと決めないとカオスになりがち
でも事前に決めて徹底させるのが難しい場面も多いのよね タスケテ!!!
RARを回答する方法がわからないの!
なんか組み込みでいいのないの!? >>878
7Zipのライブラリで回答できた
https://sevenzip.osdn.jp/sdk.html
使い方はすっかり忘れたから聞かないでくれ CodeDomだからC#創成期だね
いわゆるひとつのレガシー >>879
ぐぬぬだよ!
exeとdll持ってきてコマンドラインにするかあ 外部のexeをインスタンス化してそれにコマンド発行ってできる?出来た気がする
7Zipを複数起動して複数ファイルの圧縮と解凍をしたいのよ ProcessStartInfoか
なんでもないです >>884
ファイルIO絡むから、複数同時に動かすとむしろ遅くなるんじゃないかな。 >>886
えー
SSDやRAMに出しても?
メモリ内で解凍してデータ加工して再圧縮できない?全部メモリ内で
外部ツール使ってたら無理か >>881
夜中まで必死にググった努力は認める w
>>882の言うように今時としてはいまいちのコードだよ 「ref string」が何に使えるかは置いておいて、これで合ってる?
ttps://ideone.com/k9UegY >>886
むしろI/O絡むから複数同時の意味がある >>871
仕組みは良くわからんけどスタックトレースを辿るとかの処理が重いと思ってる。
速度の必要の無い処理はオレオレ例外投げてエラー処理してる。
その方がコードがスッキリ書けるし。 >>881
いつの間にか、ref 参照型 は不要から ref 全て不要に変わってるし。
ref 値型は必要でしょう。 >>877
例外をどこで処理するかは非常に簡単だが皆分かってない。
・例外をcatchして処理できる場合はcatchして処理する
・処理できない場合は何もしなくて(無駄にcatch throwもしない)呼び出しもとに任せる
・最後はAppDomain.UnhandledException等で拾ってログ吐いて落とす
何も出来ないのにcatchしてエラーメッセージだけ出すヤツ多すぎ。 言語仕様としてref値型が必要なのはわかるけど
じゃあ使うかというと使わないかな
もう何年も書いた記憶がない ゲームで自分で当たり判定を書いたとき
GC を避けるため使ったことがあるな >>894
hoge.TryParseも使った事がないと? .TryParse( ) は ref じゃなくて out アプリ作るたびに
ViewModelBaseのSetProperty<T>(ref T field, T newValue
を作って毎回使ってるな。
で、今ちょうどJavaでMVVMやってて、refないのでSetPropertyがかけなくてつらい・・
if (this.value != value) {
this.value = value;
notifyほにゃ
}
refないのでプロパティ毎に3行書いてるんだけど死にたい。 SetProperty(value, v => field = value)
でいいだろ
設定先が単純なフィールドでない場合にも対応できるしJavaでも同じ んん??
どういうことそれ。引数2つ??
3つ使って
SetProperty<T>(T field, T newValue, Action<T> setterActon)
こんな感じならいけそだけど。
SetPropert(field1, 10, t => field1 = 10)
後は最後にproperyNameを渡す引数追加して。 SetPropert(field1, 10, t => field1 = 10)
は
SetProperty(field1, 10, t => field1 = t)だった
bool SetProperty<T>(T field, T newValue, Action<T> setterActon, string propertyName) {
if (!object.equals(field, newValue)) return false;
setterAction(newValue);
onPropertyChanged(propertyName);
return true;
}
コンパイルしてねぇけどこんな感じかな。 >>888
前とは別の人だし、githubで適当に検索してみただけだから特に時間もかけてないんだけどね
roslynとかで"ref 適当な型名"で検索しても、何件か引っかかるし一応新しいコードでも(美しいかはおいといて)使ってるんじゃないかな
軽くしか見てないけどnullなら初期化ってしてるコードが多いけど、ArrayBuilerはある程度有効活用になってそうな雰囲気
ref値型いらないって言ってるのはホントの初心者でしょ
そちらは明らかに使いみちだらけ 例外が必ず適切にはかれるわけではないからこうしろって言われても困る >>902
いいわけは要らんよ
君がref参照型が有効だと思うコードを晒せばいいだけ まだ変なのが暴れてるけど、参照型であれ値型であれrefなんか必要ない、
であれば主張に一貫性があり一理ある。
筋が通らないのは。refは値型でしか意味がないという主張。
昨日説明した通り値型参照型の違いはrefの有用性と関係ない。
>>906
>>904がそうい言いたいのかどうか分からないけど、例外の処理方法や
どの程度「真面目に」処理するかだって所詮要件次第なのに、例外の話になると
妙に教条主義的になる変な人がいるのは確かだ >>907
例外が適切に吐かれないって事が有るのか知りたい。 >>907
> まだ変なのが暴れてるけど
自己紹介ですか? ref はCの&にあたるものだが、&iは普通に使うけど&pなんて見たこと無いってことだ >>894
パフォーマンスを求められる処理には縁がない人なんですね 素人なのでref/outの使い道がよくわからないのですが、public変数にするとかじゃだめなんですか? >>912
メソッド実行するたびにインスタンス作成すればおk >>912
全部Public変数にしたら引数も戻り値も不要だね。
君は天才かも。 >>912
素人なら自作関数には両方使わない
唯一あるとすれば
パフォーマンスをシビアにする必要がある
かつフィールドをたくさん持った値型
の場合だがそんな状況はアプリにもよるがそうそう無い >>917
赤間って誰?
MSDNのコラムにc#の例外処理について解説していた良い記事があったんだが見つからんわ。
C と C++のが見つかったw
https://msdn.microsoft.com/ja-jp/library/cc440190(v=vs.71).aspx 「よほどのことがない限り、アプリケーションで try-catch を書いてはいけません。」
これよ、これ。例外処理の本質。 >>924
そうはいってもファイルが読めないだけで例外だすじゃん >>922
ああこの記事ね。
個人的にはあんまりロジカルじゃないと思うんだよねこの記事。
読んでいて感じるいくつかの「なぜ」に対する答えがない
(1) エラーを業務エラーとそれ以外に大別するのはいいとして、なぜ前者に例外機構を
使ってはいけないのか?
(2) なぜ集約例外ハンドラーみたいなスパテッティーを推すのか。
そもそもそういうスパゲッティーを避けるための仕組みが例外機構ではなかったのか?
(3) いくら何でも
「よほどのことがない限り、アプリケーションで try-catch を書いてはいけません」
これは言い過ぎではないのか。 リトライとかの回復処理は全部ライブラリー内で完結してることが前提なんだろうな。
言いたいことは分からないでもないけど、想定しているアプリがすごく狭い気がする。 アプリケーションってよりビジネスロジックって言いたかったのかね >>926
(1)や(3)はコメントで回答されてるんじゃないの?
集約例外ハンドラーは業務エラーを戻り値で表現しようと
例外で表現しようと必要じゃない? てか集約例外ハンドラーがスパゲッティってどういうこと?
エラーメッセージやログ処理して終了するだけのごく短いコードだと思うけど違うの? >>928
例外に落ちた時点で回復可能なエラーって限られてるぞ。
ファイルがロックされて書き込めないとか。
殆どは回復不能だし、デッドロックにしてもリトライするより適切にロックしているかやロジックを見直す必要があるだろうし。
ま、例外の原因で一番多いのは自分の仕込んだバグだw >>932
集約例外に回復コードを仕込もうと思ってるんだろ。 糞ベンダーは、全てのメソッドにtry-catchを入れるコーディング規約。 ネットで更新してるアプリってテキストファイルの文字読み込んでプログラミングしてるんだなその方が変更しやすいのか? ランチャー的なフォームから小画面を起動するフォームアプリを作ったのですが、小画面大量に出すと重くなります。小画面毎に別スレッドで起動する方法を教えてください 設計が間違ってます
小画面を大量に出さないようにしましょう 小画面の意味がわからないし、大量とはどのくらいなのかもわからない なんだ勘違いかテキストで読み込んでるのは理由あんまりないんだ >>942
そこをなんとか
>>943
10枚程度です。 ツールでボットやwebチェッカー使ってるんじゃないかな
ボット一個にwindow1個とか
そういうのはwindow一個で多数のものを扱うべき
リソースの無駄 >>945
フォームを別に表示したら元のフォームには影響しないし
10や20くらいの別フォーム起動したくらいで重くなったことはない
小画面で何をやっているかわからないしスレッド分けて〜では多分解決しない
>>944
スレ違いだと思うけどアンチウィルスのパターンデータ更新みたいなのと勘違いしているだろ
VisualStudioだってバイナリアップデートなんだから 関数にListを渡す時に関数内で要素を書き換えできないようにするにはどうすればいいですか >>949
C#7.2を待つかそのlistをコピーして渡すか書き換えないように気を付けるかしてください >>952
なにそれ
オブジェクトのリストを作ったとしてそのリストの要素のプロパティを書き換えるのも出来ない? >>951
readonly ref って構造体限定じゃね? >>801
無いことがバレてプログラマの月収は一律18万円になった >>949
AsReadOnlyメソッドで足りるならそちらで
>>905
言い訳とは
普通にroslynのソースとダブルポインタを要求するPInvokeじゃ不満足?複雑なやり取りを低コストでやれてると思うが >>941
スキルの無いヤツほどスレッドを使いたがる。
スレッドが何か分かっているヤツはスレッドでしか実現できない場合のみ仕方なくスレッドを使う。 >>957
> 普通にroslynのソースとダブルポインタを要求するPInvokeじゃ不満足?複雑なやり取りを低コストでやれてると思うが
だからそう言う言い訳はどうでもいいからコードを晒せよ >>953
流石にそれを禁止するのは無理
IListにあるAddとかRemoveとかインデクサのsetterとかがないというだけなので >>958
では軽くする方法を教えて下さい。
子フォームでは重要なことは非同期で行っています 何やってるか知らんけど
10枚も出したらそれで限界な可能性は?
非アクティブなときも重いってあるかなぁ? >>962
では重い原因を教えて下さい。
ただフォーム出して重くなったでは何も分かりません。 >>962
まず重い原因を突き止めましょう。
純粋にFormのロード(表示)だけに時間がかかってるなら
個人的は軽量化は諦めた方がいいと思う
Loadか何かのタイミングで実行してる初期化が重いなら
そこを軽量化するなりタイミングを工夫するなり
個人的想像だと前者の可能性は低い気がする
というか、Vista時代のPCでも余程大量のコントロール乗せてたり
レイアウトパネル系を多用でもしてないとそこまで極端に重くはならんと思う Listを抽象化したいのですが、どのように書けば良いでしょうか?
以下のように書けるかと思ったのですがダメでした
よろしくお願いします
interface ITest
{
}
public class Test: ITest
{
public string hogege { get; set; }
}
class Hoge
{
List<ITest> test = new List<Test>();
} >>962
単純にそのアプリ、親アプリと子アプリに別けて、親アプリから小アプリを10個起動したら駄目なの?
重い処理があって辛いぐらいの機能があるなら、1つの子画面で親ごと巻き込まれて死んでほしくないし、俺ならプロセスから別ける。
あと、非同期でやってる、の非同期がasyncなら、それは普通にタスクを切り替えるスキの間隔が広いかとか、諸々普通に重いだけじゃないの?
await Task.Delay(1)とか呼んでみたら? >>969
今更どうしようもないが、次作るときはウインドウの数減らしたほうが良いよ
できればメイン一つで画面遷移やタブで処理+ダイアログも同時に開くのは一つだけとかね >>966
List抽象化はIList<Test> test= じゃないのかよw >>969
プロセスの分け方も何も、今フォーム起こすのに使ってるメソッドの引数を文字列にして、Process.Startで起動引数にして起動するだけのイメージだったけど。 そもそもParallelは同期処理に使うもんだぞ
Fork-Joinっていう、同期処理を並列で実行するパターン 一晩エスパーしたけどListの抽象化の意味解読できず
ITest[] tests = new Test[n];
IEnumrable<ITest> = new List<Test>();
なら可能だが リスト抽象化という分かってるようで何も理解できてないお題 抽象化して継承するのと基本クラスにして継承するのと使い道がわからんよな そういえばずっと疑問なんだが
そもそもC#て「シーシャープ」で合ってる? #はNo.だと習ったような...
それともスレタイどおり普通に「シーフラット」なのか? >>985
作った人によると(C++)++で、+を4つ並べて#にしたという
で、読み方はシーシャープだと >>985
正式にはシャープだけど、半角表記にするために井桁でもいいことになってる >>987
ちょっと違う
半角で表せるようにC#と書いてC Sharpと読むと仕様書に明記されてる
C♯とかは間違い >>986
その話は後付けだったと思うけどw
つまりC#(C sharp)っていう名前が決まったのが先で、よく見るとこれって+が四つでインクリメント演算子が2つの
ようにも見えるよねって話だったはず >>990
そもそも#と♯が本来別文字かどうか怪しいw
印刷屋さんの都合じゃないのかと ナンバーサインと音楽記号シャープは
まったく別物でしょ 次スレ建ててみる
1行目
!extend:checked:vvvvv:1000:512
でいい?なお、スレタイ変えない 荒れてばかりなのにきちんと次スレの立つこのスレ >>996 乙 このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 29日 5時間 35分 9秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。