ふらっと C#,C♯,C#(初心者用) Part140
レス数が950を超えています。1000を超えると書き込みができなくなります。
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part139
https://mevius.5ch.net/test/read.cgi/tech/1533466544/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured 組織でたとえるならこうなるからな
経営者クラス 社員をこき使う
↓
社員クラス ← 派遣をこき使う(職階ごとの複数の中間層)
↓
派遣クラス ← キミラが担当するような低レベルな部分の単純作業(つまりキミラ)
派遣は社員の作業も役員の作業もしない
社員は役員の作業はしない
関数の行数が多いのは
作業を整理して作業を手順化して
派遣にうまく単純作業を割り当てれてないのと同じだからな
つまり、人に仕事させないと自分の作業が増える
キミラは派遣ドカタだからな、そういう作業はできないのは分かる
当然作業ミス(例外)が発生してスルーし続けてたら上までいく 3行にまとめられない奴の発言は読む価値がないって本当だわ 例えば扱うビジネスの領域が違えば
部門を分けることになる
会社に複数の部門があっても一つの会社だからな
種類で分けるというのはそういうことになる
キミラみたいな一種類の単純作業しかしてないヤツラには関係ないワケ というわけでな
キミラは刺身にタンポポのせる作業に戻りなさい
キミラにはムリ いちいちタンポポ載せてる作業経過報告はいらない
作業の補助とか、いちいち次になにをするかとかとか指示はしないからな
タンポポが地面に落ちたとかこのタンポポのハナ小さいとか
そういう報告(リフレクション)もいらない
捨てときなさい
それぐらい分かるだろう
タンポポが足りなくなりそうになったら
この台帳に書いときなさい
コレだけはたまに見といてやるからな
キミラのコーディングは自身がおかれてる立場と
まったく一致してるワケ プロジェクト適切に分けて
依存関係の正規化しろって話だろうに
リフレクションは関係ないしな
その程度の理解やから長い寝言いってる 所詮、派遣ドカタ
残念なことに派遣ドカタのレスなんか
すぐにわかるわ バカに限って抽象化とかいって
サルみたいにうれしがって継承するからな
破綻はそこから始まる
しばらくほっとくと
データ受け渡しするために
無秩序に相互参照しはじめる
こうなったら終わりの始まり 質問です
ifの条件に配列を使いたいとき、例えば
if( 配列[ ]=={1,2,3,4} )
みたいにやるにはどうするのが一番簡単ですかね
配列[0]==1&&……で一個ずつ作るしかないですか 左辺も右辺も同じ長さの配列であればfor文を使うと書く量を減らすことができる気はする 半角さんはこっちでも馬鹿を晒してるんだ。。
次世代言語スレで論破されてもまだみっともなくないんだね。 俺はできるだけなんでもリフレクションでやるようにしてるよ 半角カナの人はあっちこっちで喧嘩売っている話の通じない人だから相手にしないでくれ
あとここ質問スレだから質問以外の話は相談室なり他で頼むよ if( 配列.Where( a => (new int[] { 1,2,3,4 }).IndexOf( a ) > 0 ).FirstOrDefault() != null )
とかボソッと言ってみる。真に受けないでね。 オレはケンカなんか売ってない
バカが真人間になるように矯正してるだけだからな
バカはオレにケンカ売ってるつもりらしいな >>859
「一番簡単」が何を求めているのかわからないが、比較するものの数が決まっているのなら「配列[0]==1&&……で一個ずつ作る」のが「速くなる」
汎用にしたいのならラムダもlinqも俺自身が使えないのでメソッドにすると例えば
private bool hikaku(int[] arr1, int[] arr2)
{
if (arr1.Length != arr2.Length) return false;//配列の長さのCheck
int i = 0;
for (; i < arr1.Length; i++) if (arr1[i] != arr2[i]) break;
return i == arr1.Length;//全部一致したら最後まで止まらない
}
メソッドを呼び出すのはそれだけで速度的にだいたいロスになるので「速い」動作を求めるのならこれも勧めない
linq使うのが一般的だと思うけどそれは他の人に聞いてw まあ、>>861で済んでるとは思うんだけど、あえて付け加えるならこう?
public static bool Equals<T>(this T[] x, params T[] y) where T:IEquatable<T>
{
return x.SequenceEqual(y);
}
今は(というか10年前からだけど)new[]{...}が使えるからparamsは有難みが薄いかもしれない vbで言う、戻り値もらう時Function 〇〇の〇〇の部分って変数はそのまま使えない?
あとcallはないみたいだけど、人が書いたコード読む際にこれはなんか値取ってきてるなとか何か計算しにいってるなとか一目で分かるには慣れるしかないですかね? 〇〇 = 戻り値 は return 戻り値; じゃね。
Call は戻り値とかではなくて戻り値のない関数(Sub)を呼ぶときに引数の部分を () でくくりたい場合に使うものではなかったっけか。
戻り値を受け取るかは呼ぶ側で 変数 = 呼ぶ関数(); になってれば受け取るんだろうし、
呼ばれる側が戻り値を用意してるかどうかは呼ばれる側の関数の(戻り値の)定義が void になってれば返さないんだろうしってことじゃダメなん? >>871
現代のVBではCallを明示的に書くのはMSが非推奨 >>874
MSが公式にそう言ってるのか?ソースはどこ? >>875
https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/call-statement
> You typically use the Call keyword when the called expression doesn’t start with an identifier.
> Use of the Call keyword for other uses isn’t recommended. 意識高い系VBerさん達が梯子外されちゃって可哀想 VBでもCallなんて付けない方がいいと思うしそれが普通だと思うけど、
>>876の内容はCallキーワードの使用一般を非推奨とはしてないじゃんw
これが非推奨と言ってるのはたぶん、
Call Math.Min(1, 2)
みたいな使い方。これはCallはC系の言語でいう式になってない、つまり
Dim x = Call Math.Min(1, 2)
と書けないことも一因か?
あと、>>871の
>vbで言う、戻り値もらう時Function 〇〇の〇〇の部分って変数はそのまま使えない?
これはどういう意味なの?
まったく分からん C#でも自分のメンバー呼び出しにthis付けないと気が済まない人がいるけど、
あれはVBから来た人なのかねw
Call付けたい心理とたぶん同じだよな こうしてまた場外乱闘が始まる。
なんでわざわざ煽るかね。 >>880
別に煽ってないし
this付けたがる人はそもそもそんなに多くないと思うから杞憂だよ >>878
いや呼び出しが識別子で始まらない場合って書いてあるでしょ
サンプルコードにあるように、New Hoge.Method() とか、ラムダ式を即時呼び出しするケース
これは純粋に構文解析上の制限だろう BASIC系ではステートメントは原則的にステートメント種別を示すキーワードで始まらなければならず、式が単独でステートメントになることはできない
これは構文解析を楽にするための制限で、大昔の言語ではわりと一般的なスタイルだ
ただ、さすがにそれは不便だということで、識別子から始まる式については例外的に単独でステートメントになることができる
>>876のサンプルコードにあるようなケースでは四季がステートメントと見做されないから、例外的にCallが必須になるということだね >>883
ああ、なるほどそうだねごめんw
MSDNの記事読んでなかったよw
VBは
(New TheClass()).ShowText()
と書けないのか。ダメな理屈がよくわからんなあ
ラムダ式の即時呼び出しは便利そうだね。
必要になった記憶はないし、戻り値を握りつぶすんじゃ相談室の方の661の
質問みたいなことはできないが 文法の違いにケチつけても意味無いだろ
外国語覚えるつもりで勉強しろよ 言語の記述方式ばっかりこだわって大したもん作れなかったら笑う >>878
vbではfncHogeの戻り値を設定するのに
return 1
fncHoge = 1
のどちらの書き方もできたねん
関数の中で、関数名を変数名として使えた
再帰処理なんか考えたら
パっと見紛らわしくて
可読性に問題あるけどね ちょっとすれ違いだけどVB出てきたのでちょっと質問
C#でMicrosoft VisualBasicを参照にしてInteraction.InputBoxを使って「キャンセル」が押された場合は
VBで言うEmptyが返るはずなんだけど(VBのfunctionで何も値を設定せずexit functionした場合はEmptyが返る)、
EmptyかどうかをC#で判定する方法ってありますか? VBScriptなんかだと
r = Inputbox("何か値を入れてね")
if IsEmpty(r) then MsgBox "キャンセル押したね?"
という風に空文字列と区別とできるのでそれをやりたいの 初心者用スレッドは学習者のためにあるべきだろう
進歩のないVBコピペプログラマーのためにコードを代わりに書いてあげる場所にはならないようにしようぜ >>891
デバッガで何が返ってるか見たらすぐ分かるでしょ >>891
何も入力しないでOKでも、キャンセルでも空文字列だから判別できないね
キャンセル判定したかったら横着せずに自分でフォーム作れって事でしょ >>892
たぶん分かってると思うけど、ドキュメント見る限り無理だね
そもそも今時モーダルなダイアログを表示してテキスト入力させるUIってどうなのよって気がする
単純なメッセージボックスでもイラッとくるよね >>891
その Empty の型はなに?
たぶん string なんだろうけど、それなら IsNullOrEmpty() あたりかね。
895 の言うような問題もあるけれど、もとから Empty かどうかだけで判定してたなら上ので用が済むんじゃね。 nullが来ないなら==でstring.Emptyもしくは""と比較するだけで良い >>892
そもそも、今のVB.Netでもそれ出来ないから >モーダルなダイアログを表示してテキスト入力させるUI
えっこれって今いけてない扱いなの?
今どきはどんな感じでやってるの 別に本当に必要ならモーダルでいいよ。
どうせ分かって言ってると思うけど、モーダルなダイアログはユーザーの自由を奪って
特定の操作の完了を強制するUIだから、可能なら避けるべきなのは当たり前だし、
昔から嫌われ者だよね
そして、どうしてもモーダルなダイアログでテキストの入力を強制する必要があるケースなんか
あんまりないと思う。他にいくらでも代替手段があるでしょ >>902
俺は逆
どうせ特定の手順でしか設定できない・しないのに無駄な自由度を付けて
バグを盛り込んでいるアプリが多い
完成度が低い >>902
なるほど
でも業務システム作ってる身からすると>>903の意見に賛成 >>902-903
システムモーダルなら問題あるけど、アプリケーションモーダルなら好きにすればいい うちの場合、モーダルではなく、入力されて問題ない時だけ入力出来るようにしてるわ。
ボタンも、押すと問題があるor意味がない時は無効化。
オペレーターの入れ替わり多い業界相手に売ってるから迷わせたらサポートが死ぬ。 アプリケーションモーダルでもメインウィンドウの移動が出来なくなるのは嫌い IEではお気に入りに追加はモーダルなダイアログだったけど、
EdgeではChromeやFireFoxを真似てモードレスになってるよね。
まあ、さすがにモーダルの方が好みとか、作る方の都合を言ってるんじゃなきゃ
ネタで言ってるんだと思うが... デバッガで追ってみましたがどうもだめっぽいのであきらめます
ありがとうございました まさかクソセンスのないおまえらがUIを語るとは思わんかったw
大体ユーザーが喜ぶんわおまえらが良いと思う逆やからね
これ覚えとった方がええでw >>879
thisつけたいのはIntelliSenseで楽するためじゃない? >>912
逆?違うよ
ユーザーが喜ぶのは
カッコイイとは無縁の
Excelだよ
設定はExcelファイルから
帳票はExcelファイルで出力
これさえ押さえておけばオールオッケー モーダルダイアログの欠点は、マルチウインド故に偶に起こる事故でモーダルなのにウインドウがメインの裏に回っちまって操作不能になる
それが改良されたUWPのContentDialogは良いね
何しろメインウインドウ上に描画されているだけだから上記の事故が発生しない
wpfのmaterial design xaml toolkitでも似たようなことが出来るな >>916
TopMost=trueにしとけば済む そうなってもタスクバーからのサムネイルで消せるけど
工場のおっさん、電話かけてくるからな >>919
そもそも>>916が言ってるような挙動は本当であればバグ。
内部の実装としては、親を指定しないバージョンが呼ばれた場合は
恐らくアクティブウィンドウを親にしてるはずで、そうであれば解決策にはならんだろうね
もっとも、こんな挙動は確かにWin9x時代は何度か体験した記憶があるけど、
Win2k以降は個人的には記憶がないなあ >>916
それってweb画面では当たり前で昔からあるしIEベースのHTAでもできる
UWP発祥とかじゃないよ >>920
GetParentをcallすれば分かる たまに暴走状態になって強制終了するしかなくなるのですが、
単純なエラーではなく暴走なのでどこのプログラムミスで暴走しているのかわかりません。
対処方法ってありますか? 簡単に再現すると、これを実行したような状態です。
bool test = false;
while (test == false) { };
しばらくすると半透明になって、右上の×しか押せなくなり、押すと↓のような警告が出て終了するしかなくなると思います。
http://dekiru.info/wp-content/uploads/2015/03/tskmgr02.jpg 単にメインスレッドで重い処理やってるだけのような気もしないでもないけども
とりあえずCPUに余裕があるならVS起動してプロセスにアタッチして全て中断してみる 盗んだバイクで
>>926
デバッグ実行してその問題が起こった時に、にIDEのツールバーの一時停止のピクトグラムのボタン
(ツールチップの表示は「すべて中断」)を押せばビジーループになってる箇所が分かるんじゃない? >>926
VS2017ならデバッグのパフォーマンスプロファイラーで監視したらデバッグ停止した後にCPU負荷の一覧をメソッドごと(関数名)に作ってくれるよ
だいたいどこかのループで嵌っているんだろうから自分で書いているのなら当たりつけてブレークポイント入れていけばわかると思うけど 見た目とコードを分離するために、WPFとかではMVVM pattern使えとか
書かれていることあるけど、企業向けの業務アプリでは
コードビハインドにはほとんど書かずにMVVMでかく割合はどれくらいなの?
コードビハインドほとんど使わなかったらコードが冗長になって
マイナス面のが多そうに感じる。 その前にWPFを採用する割合がほぼゼロ
.NETの業務アプリなら今はほとんどがASP.NETで一部WinFormsが残ってるくらいだよ うちは専用端末向けの業務システム売ってるけど、WPFでなくWinForms使ってる。
ハードウェアとASPサービスのセットが前提の売り物だけど。 >>932-933
クロスプラットフォーム対応のためにWeb appというのはかなり前
からあるのは知ってるけど、ほとんどというほどASP.netになってるの?
あとASPはclassic ASP.netではなくASP.net MVC?
Web appのデメリットとしては
ブラウザだとUIがしょぼくて操作性が落ちる
見た目も悪い
UIまわりの開発の時間とコストが増える
ブラウザバージョンアップで動かなくなる
パフォーマンスも落ちる
とかデメリットが多すぎるし全部ブラウザだけでなんとかするのは少数派だと思ってた。 >>932-933
web appとの比較は別にして、WinFormsとWPFの選択肢で
新規でWinFormsを選ぶ意味ってまったくないんじゃないの
ただWPFわかる人がいなくてWinFormsでやっちゃったというかんじかな
WinFormsはWPFに比べて表現力が劣るからUIまわりで後から細かい注文
ついたときに困ったことになるんじゃない
UWPが微妙だから、desktop appはWPFの一択になってると思ってたわ
今ならWPFよりもXamarin使ってクロスプラットフォームとリッチアプリの
いいところどりがいいのかな
コカ・コーラとかSMBCがXamarin使ってるらしいけどMonoバグだらけ時代を
知っているとXamarin使うのも怖い 分かる人がいないって超リスク要因なんだけどスルーなんすね
仕事したことあんのか WPF分からずに使ってるならリスク保有
WPF分からないから使わないならリスク回避 仕事したことないんだろうけど、業務アプリでは特にどうしても止むを得ない理由がない限りはWebアプリを選ぶんだよ
イケイケのWebベンチャーでなくても、毎日のようにリリースされるシステムって普通にあるんやで 俺が前にいた会社はWPFバリバリ使ってたよ。
Blendも使ってた。
デザインセンターとやりとりするのにBlend確かに便利だったし。
WinFormsはほとんど使ってなかったな。 >>936-937
あおるつもりじゃなくて真剣に思うけど
開発やってる会社がWPFすら知らないってのは会社としてレベルが低すぎじゃないか
WPFでたのが2006年
12年経ってもWPFわかる人いないくて新規でWinFormsで開発ってかなりやばい
C#ならクライアントの要望に応じてWPF, UWP, Xamarinと提案できるのが
まともな会社だろう。
MVCへの反応なかったところみても、ASPも古臭いclassic ASP使ってるんだろうな
ORMも使わずSQLゴリゴリ書いてそう
>>938
PCの初心者ほどわかりやすく使いやすいUIが必要
Webアプリって最低レベルのUX, UIだ Web appが使いづらいからこそ多くの企業がsmartphone appをリリースしている
一般の個人ユーザーでさえWeb appを嫌っているという証拠だ
業務で長時間使うアプリがブラウザベースっていうのは普通にゴミでしょ
>>939
本当はユーザーに選ばせたのではなく、classic ASPしかできないから
ほかも提案せずにclassic ASPで開発したんだろう。
ユーザーはやむを得ない理由がない限りブラウザみたいな使いづらいのを選ばない。
Xamarinとか使えばクロスプラットフォーム対応もできるわけで
Web appを使わなければならないケースもほぼないだろう。
不特定多数に使わせるシステムならブラウザでも仕方ないが社内利用だからな 今の業務系ってWebの方が多くない?
長時間使うものでも。
セットアップが必要だと割と嫌われる気がする。
環境変えるのは割と稟議要るし。
うちどうしてもクラサバにするアプリは未だにClickOnce使ってる。 業務系っつってもいろいろあるしな
インストールとかのこと考えたらwebで済むならwebでやったほうが導入コスト抑えられることもあるし
案件次第かと 考えるに、Web系にしたいのは、タブレット対応を出来るだけ楽にやりたいって方が大きいんじゃないかな。
iPadアプリなんかは大量に作るわけにもいかんし。エンタープライズでも個数は決まってるから。
ASPならある程度は楽だよ。
UI部分はJSフレームワークと内製コントロール使ってるけど、今までのフォームベタ書きより遥かに楽。
そういえば今Office365だってReactだね。 認証もSSOかけたいしね。アプリ毎にログイン画面出したり、ログイン用dll蹴るとかすると、クロスは意外に苦労する。 使いづらいとか関係ないんだよ
工場が使いづらいからって従業員がその工場を使わないなんてあり得ないだろ?
ID:GJ/DAGX40が想像してるのはその工場の中で使われる工作機械(Excelみたいなツール的なアプリ)の開発だろうけど、
実際のシステム開発では工場を作る仕事の方がずっと多いの 学生だと思うけど、仕事でバリバリ使える新しい技術を習得したいならUI技術なんかどうでもいいからAWSを学ぶことを強くお勧めする
伸び続ける需要に対してまともなクラウド技術者(AWSから単なるホスティングサービス以上の価値を引き出せる人)はSI業界では全然足りてなくて、
一通りのプログラミングスキルを備えた上で手を出すなら技術スキルとしては最強よ 業務系で漠然としすぎてるなら、基幹業務アプリと仮定する
>>943-944
Deploymentが心配ならgroup policyで一括でいれちゃえばいいでしょ
ClickOnceよりさらに楽になる
>>944
Deployはすぐ終わるけど、
ブラウザベースにすると社員の生産性が落ちてずっと損失が続くよ >>947
使いづらいとか関係ないと言っちゃう人は開発者に向いてないんじゃないの
自分はフリーウェア作る時でもどうやったら他人が使いやすくなるかじっくり考えるよ
Excel?工場?
社会人だしASP.net MVCでサイト開発もやってるしDB側も自分でスキーマから作ってる。
受託開発のような立場ではない開発者 まあ普通はWinformsでできることにWPF使わないよね
情報もミドルウェアも豊富だし完全に枯れてるし開発者も簡単に見つかるし
グラボのドライバのトラブルをモロに受けたりしないし
Winformsでは実装が大変なリッチなUIを実現したい場合に初めて検討するんでええと思うわ レス数が950を超えています。1000を超えると書き込みができなくなります。