ふらっと 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 〇〇 = 戻り値 は 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を実現したい場合に初めて検討するんでええと思うわ 今ならWinFormかUWPの2択だな
WPFはない C#とたぶん関係ないけど、病院の待合室とか、科学館みたいなところで
いろんな情報をアニメーション付きで表示するサイーネージって今は何を使って開発してるの?
ああいうの大半はWindows PCだと思うけど
まさかFlashじゃないよね >>955
何で作ってんのかは知らんけどああいうのがWPFを使うべき案件 なんでwebアプリだったら生産性が落ちるんだw
そんなんケースバイケースじゃん
広い世の中いろんな案件、全部一緒くたにしてよく語れるなw Webアプリってことはサーバー用意しないといけないじゃん
WinFormでForm全体にGeckoブラウザ表示してhtmlとcssでUIつくればよくね? そうしてみんなelectronにたどり着く
c#を捨ててtypescriptへ Winform推してる人ってマジなのか?
デスクトップアプリ作るならWPFかUWPのどっちかだろう
いまだにWindows7の会社もあるんだからWPFしか使えないところもある
Winformの利点はvbでポトペタで誰でも出来るから作る人すぐ見つかるぐらいだと思うが >>949
だいたいそういうものは特定の部署の人だけが使うものだから、そんなに細かくグループポリシー切ってないし、
グループポリシー変えるってのはそれこそ環境変えることだから、超慎重論者が出てくるよ。 >>955
サイネージはFlashあるよw
モダンな所だとHTML5だろうけど。
Animateで作れる範囲が多いんじゃないかな。
待合の番号表示はまさにWPFでやってるのを知ってる。 とはいっても、winformとWPFはオープンソース化されるわけで >>958
業務アプリならどっちみちサーバーは必要
Webならクラウドでハード持たずに解決することもできる >>943
ClickOnceの証明書どうしてる? WinFormsいいよ、低レベルだから開発要員も集めやすいし WPFはWinFormを脳死で移行出来る仕掛けを作らなかったのが敗因 結局まともなUIフレームワークがないのかあ
やはりWinFormにGeckoかクロウニウム表示して裏はc#ってのがいいんじゃねーの 今の時代はWinFormsが低レベルなんだよなぁ、と感慨にふける レス数が950を超えています。1000を超えると書き込みができなくなります。