Unity使わずに3Dやりたい場合ってWPFが標準?
WPFってもうオワコン?
前スレ>>980ですが、スレッド見てなくて立て忘れてました すみません
代わりに立ててくださってありがとうございました WPFで3D試してみました
Blender+Pythonで描いてるのと同じくらい
気持ち良いです
ほんとうにありがとうございました
WPFって内部的にはDirect2D使ってコントールとか関係なくいっぺんに描写してるんだよね?
対照的にWinFormsはコントロール一つ一つがミニウインドウ的に重ねてるだけと
以上のことからWPFの方が圧倒的にパフォーマンス良さそうなはずなのにWPFの方がもっさりしてるのはなんで?
WPFはレイアウト処理がゴミのように遅い
ボックス化を繰り返す、素人でもやらないようなアレな設計
WindowsってまともなUIフレームワークがない
本来UWPがそうなるはずだったんだけどな
一時期、一向に進化しないWindowsのUIに痺れを切らしたMSの.NET陣営が暴走し、Windowsを完全に無視してスクラッチで作られたWPFという奇形を生み出した
その後、WindowsのUI基盤は刷新され開発も早くなったけど、時すでに遅し
結果としてWPFは変な分断だけを残して死亡し、以後モダンなWindowsのUIフレームワークは完全に開発者に見放された
>>13
まともなUIフレームワークがあるOSって? 俺言いましたよね、じゃないけど、Win10の登場時に
「Silverlightもストアアプリもあっさり捨てられたのを見せつけられた後で
UWPに飛びつくのはお勉強マニア以外にいるはずがない」と思った。
実際その通りになったね
あの頃これからはUWPの時代だって鼻息荒かった人たちは今息してるかなw
今.NET(以外でもいいけど)でまともなWindowsのGUIアプリ作ろうと思ったら何使えば良いんだ?
>>19
なんかチープにならない?
個人で開発するならこれでも十分だとは思うけどさ paint.netはwin32apiをオーバーライドして
実装しているな
>>20
Windows Formsはチープと言えばチープだし高DPI対応が面倒
弱点が無い鉄板と言えるのは今は無い
自分なら消去法でWPFかな >>18
Electronだな
完璧で先進的なUIをいくらでも作成できる
ただし無能には作れないが どうして、どうして、エレクトロンしないのよ〜
イキってる連中の乗ってる船は必ず沈むw
これこの業界の経験則
>>20
モダンにしたいならwpfで作って、Mha.AppsとmaterialDesignToolKit当てるのがいいと個人的には思う winformsもパネル使ったり枠なくしたりなんかフレームワーク使ったりすればいい感じにならない?
>>28
MahApps.MetroとMaterial Design In XAML Toolkit
じゃない WinFormsでも全部自前でペイントしていけばモダンなマテリアル風に出来るよ
うちの周りじゃ「ふつうwpfだよな」という雰囲気。
まあmfcはまだあるけど。
material designカッコ悪すぎやろ
あれは小さい画面ではかっこよく見えるけど
デスクトップアプリだと間抜けに見える
>>31
俺はWinFormではそうやってる
しかしペイント使うのは面倒くさすぎ MVVMでしっかり作るとまともなライブラリ無くてな、、、
LivetかPrismとReactivePropertyをMS公式にしてドキュメントしっかり整備すればもうちょい流行るだろうに
MSによるとMVVMはオワコンで今後はMVUらしいよ
そしてWPFにMVUは来ない
.NET MAUI自体はXAMLを用いたMVVMもサポートしてる
>>41
ライブラリがMSから出て無いから俺はMVVMにがっつり取り組むの止めた 今後はMVUになるってバインディングが遅くて使い物にならないってことか
> .NET MAUI は Xamarin.Forms の進化版で、
> 今後、MVU と XAML の両方のプログラミング モデルを提供するために拡張されます。
今後はMVUってどこの情報?
>>47
.NET MAUIに移行とは書いてあるけど、MVUパターンにとは書いてないようだけど >>48
Part of the vision for one .NET is providing developer choice in the areas of personal preferences so you can be most productive using .NET.
This manifests in which IDE you use whether Visual Studio 2019, Visual Studio for Mac, or even Visual Studio Code.
.NET MAUI will be available in all of those, and support both the existing MVVM and XAML patterns as well as future capabilities like Model-View-Update (MVU) with C#, or even Blazor.
中略
In addition, we are enabling developers to write fluent C# UI and implement the increasingly popular Model-View-Update (MVU) pattern.
MVU promotes a one-way flow of data and state management, as well as a code-first development experience that rapidly updates the UI by applying only the changes necessary.
For more information about MVU as a pattern, check out this Elm Programming guide and this blog from Thomas Bandt.
俺誤読してる? 本当か嘘かは知らんけど一応まだこれからもMVVMが主力と言ってるじゃん。
MVUは追加という扱い。
>>47
相変わらずいろんなのが出てきては完成させず放置を繰り返すよなあMSは
これもグダグダになるんだろ >>50
同じことだよ
MVVMが旧式のスタイルになったことは事実だし、MVUはReactのようなWebで流行のデザインパターンの流れを汲んでいて.NETに限らず世間の流れに沿っている
MVVMを実践してきたような真面目で神経質で意識の高い人達が、時代遅れのパターンであることを自覚しながらなおMVVMを使い続けるコンプレックスに耐えられると思うか? >>50
本腰を入れると受け取ったけどな。ますますポピュラーになるMVUを使えるようにするぞ、って言い方のような。
今までのスタイルから、突然はしご外す気は無いから安心しろよ、怒るなよ、っていう方向のように読めるんだが。 >>54
実際はそうなると俺も思うけど、一応大本営発表ではまだそこまで言ってないということ。 >>55
なるほど。確かに字面ではIn additionとかいう言い方か。
そっちが正しそう。すまんかった。 Unity と XNA と WPF の違いについて教えてください
>>58
まずこんなところで説明しきれない
キーワードわかるものは自分でググれ スキャナを起動し画像を保存したいです。
機種は決まっているので取り込むまでを自動でやりたいのですが
サンプルが見つからないです
お詳しい方ご教示いただければ幸いです。
スキャナを起動し画像を保存したいです。
機種は決まっているので取り込むまでを自動でやりたいのですが
サンプルが見つからないです
お詳しい方ご教示いただければ幸いです。
スキャナを起動し画像を保存したいです。
機種は決まっているので取り込むまでを自動でやりたいのですが
サンプルが見つからないです
お詳しい方ご教示いただければ幸いです。
スキャナを起動し画像を保存したいです。
機種は決まっているので取り込むまでを自動でやりたいのですが
サンプルが見つからないです
お詳しい方ご教示いただければ幸いです。
ありがとうございます。
とりあえずTwainDotNetで調べてみます。
Windowsフォーム使って開発してる(C#4.0/NUnit)んだけど良いテストの見本プロジェクトとかないですか?(参考になるサイトでも構いません)
なんか画面とくっいてるところが思ったようにテストできなくて全然書けない
ないよ
WinFormsなんて基本ドカタ案件なのでテストなんか書くわけない
人力でクリックしてスクショ撮ってExcel方眼紙に貼るの
コードビハインドにビジネスロジックゴリゴリ書いてるなら無理だな
マジすか…
土方案件(プロパー)なのは事実でテストはあるけど一部のロジックだけで何ら役に立たないゴミなんだよなあ
Form内にゴリゴリにロジックが絡まってるし
Singoletonを多用してインターフェイスを使うという概念が無いからどうにもならんし
見なかったことにするわ
>>68
udemyのC#でドメイン駆動開発ってやつがテストにも言及してて自分的には分かりやすかった
動画は有料だけどサイトでも解説してるからそっちを見てみたらどうだろう WinFormはVB6の延長線上にある感じだな。
Formモジュールにビジネスロジック書いて
複数のFormで共通する処理があれば標準モジュールに書く。
Classなにそれ喰えるの?
世界全体だとC#って5位くらいの位置づけっぽいけど
日本だけで言うと5chの勢いなどから推察するに3位くらいには使われてるとみて良いの?
C#は基本ホビーの人向けだよ
前はwin必須だったけど今はlinuxOKになったので幅広い分野に向けて手を広げてるはずだけど全然思ったように広がらない
既存のものをリプレイスするだけの利点は今のところないから移ってくる人が少ないんだと思う
嫌な特徴としてOSSが弱い
異常に弱い
何かやろうとするとOSSのライブラリが全然充実してないことに気づく
そういうのはpythonやjsに任せておけばいいのかもしれないけど悲しい
2002年から使い始めたけどC#使ってる人に初めて会ったのは数年前…
しかも高校生
田舎のアマチュアだから仕方がないのかも
java python rubyの勉強会は田舎でも行われてるけどc#は気配がない
c++
java
javascript
これらは業務の人が使ってて田舎でも求人がある
あとVB6 python 意外なことにperlとか
何に使ってるのかは知らない
>>78
自分はMS Officeとの親和性の高さからC#(というかMicrosoftの開発環境)を使っている。
結局ユーザーが使うのはWindows10上でWord、Excelであり、それのドキュメントを食って処理が始まる以上、OSSの中途半端なライブラリには頼れない。 >>78
OSSのライブラリが充実してない?具体的に比較してみて OSSが充実してないのは何となくわかる
中途半端に開発止まってて全機能網羅してないC#ラッパーとか結構見かける
C#erを名乗るおれですら最近はPython使ってるもんね
機械学習系のことやるならPythonになっちゃうんだよなあ
C#というよりはWindowsの問題だと思うなあ
俺もC#でプログラミング覚えて仕事でも一番よく使うのはC#だったけど、Web系に行ってからはWindowsの壁を感じるようになって、今では全く使ってないわ
C#な人って出来合いのものを活用するという考え方が薄くて、わりと自分でコード書いてなんでも解決しようとする人が多いように思う
携わる分野が変われば言語も変わるという普遍的な話なだけでは
Pythonはライブラリを組み合わせるだけだからつまらないのがな
DropboxはPythonの負債に四苦八苦してるよね
NuGet使ったら「訳のわからんもん使うな」と上司と喧嘩になった
訳のわからんライブラリを使うなってのならわかるけど、NuGet自体を使うなってのはキチガイ
NuGetで持ってくるライブラリ次第だな
MSや大手メーカーならそれなりに信頼出来るけども、
個人で作ってるライブラリは実用例が無いと信頼出来ないし
あとライセンス
linux屋がいないとossは発展しづらい
linuxのc#は比較的最近になるから
Windowsは伝統的にCUI環境が貧弱で、UNIXのように既製の小さなコマンドをちょこちょこっと組み合わせてやっちゃうという風にはいかないことが多かった
しかもクライアントアプリの開発が多く、システムに入っているコマンドに頼ると環境に依存しやすいために忌避されやすい
結果として、インプロセスのコーディングに頼る文化ができたんだろうね
必然的に細かい要件がコードに入り込みやすく、OSSにできるような汎用的なものが生まれにくい
OWINがあるから、CUIでもweb i/fは作れるから
と思ったんだけどね
>>94
dockerでフィクスチャ作るような奴欲しい WindowsではOSSが少ないのではなく、64ビットのWindows7が浸透してきたころから
OSSが減ってきているって感じじゃないかな
Win7 64はアプリでもなんでも署名が必要で、特にドライバは署名が正しく行われて
いないと嫌がらせのような開発者モードでしかシステムが動かない
署名が悪いとは思わないけど、署名を取得するには個人の開発者ではまかなうのが
大変なレベルのお金がかかるし、ドライバ作れないのであれば古い機器を有効活用
したりアイデア機器とかも作れないしでOSS作ってくれる層からみるとつまらない
Androidもユーザが自由にやれていたころはOSSが多かったけど、どんどん変な縛りが
増えてPlayに怪しげなS/Wは増えたけどOSSのプロジェクトはどんどん減っている
ちょっとしたアプリなら今でも作れるよねっていうのは分かるけど、大型のOSS
プロジェクトをやってくれる人は、意味のない縛りの多いプラットフォームではやってて
面白くないからWindowsのOSSをどんどんやめていってるんじゃないかな
Microsoft自体がOSS推してるのを知らないのか?
開発リソース割けなくなった製品の姥捨山として考えてるイメージ
質問だけど
Windowsアプリ作るにあたり
VisualBasicを使っちゃいけなくて(好まれなくて)C#を使うべきっていうのは
どういう理由からですっけ?
でもマイクロソフトも新規機能は付けないって言ったり
vbオワコン感あるね
今からやるのは絶対避けた方がいいな
>>109
オブジェクト指向言語に寄せていくとC#とかJavaみたいなシンタックスになっていくって聞いたことある。VBみたいな書き方は向いてないんだって。 自分をオブジェクト指向だと思い込んでる手続き型言語のイメージ
クラス定義をしてるというよりも、クラス定義をする命令を書いてる感じがする
End句とか特に
>>113
なるほどVBはオブジェクト指向に対応してないと。
これですっきり理解できました。 ネイティブアプリを作ってるのですが、
パスワードがかけられたファイルをオープンしたりしようとしています。
コンパイルされるからパスワードはコードにリテラルで書こうと思っています。
が、
c#のコンパイル物の逆コンパイル性はかなり容易なのでしょうか?
Javaはコンパイルしても逆コンパイルで全部戻せれるそうですが。
>>120
C#の逆コンパイルはフリーウェアでほぼ完全にできるレベル >>120
一瞬で逆コンパイルできるから、ソースにパスワード埋め込んだ状態で配布するとか論外 >>120
てかVisual Studio使ってるなら簡単に逆コンパイルできるの知ってるやろ?omnisharpですら最近できるようになったし、昔からilspy等はよく使われてる パスワード判定アプリだけc++で書いてc#からキックするって手もある
わかるやつにはわかっちゃうけど
>>120
クライアントに配布する時点で秘匿は無理だと思え >>127
Webアプリに対してクライアント側だけで動作するアプリ、って意味合いでネイティブって言ってるんだろな >>126
重複の上テンプレさえ不完全にされた失敗スレに何を期待しているの?
>>127のようにグーグル検索すら使えない人が来るのに パスを見られたくないのなら認証されたユーザーからの要求があった場合にはサバ側でパス保護ファイルを開いてそのバイナリをネットで送るって形にするしかないな
そんな糞めんどくさいことしなくてもインストール時か初回起動時に
ユーザーにパスワード(っていうか復号コードだと思うけど)を入力してもらえばいいでしょw
Ruby on Rails では、
暗号化キーのmaster.key は、Github へ保存しないけど、
暗号化済みのcredentials.yml.enc は保存する
それを、master.key で復号すると、YML 形式で、下のような設定が書いてある
aws:
access_key_id: 123
secret_access_key: 345
つまり、暗号化済みの文字列は、公開しておいてもOK。
キーが分からないので、復号できないから
逆に、キーは公開したり、アプリ内に含めるとダメ!
例外って一度考え始めちゃうとめっちゃ難しいな
色んなサイトのコードとか見てると例外を乱用してるようにしか見えないものが多いように感じる(特にネットワーク関連)
だからといってどこを例外にすれば正しいコードになるのか全然わからん
やっぱり例外処理は全く使わないで済むようにくらいの勢いで想定される例外を自力で検出するのが一番良いんだろうか
>>133
なんか基準があるはずよ
落ちるのだけはやめてって言われてるなら
GUIの操作するメソッド全部でcatchしてメッセージでも出さんといかんじゃん
それとも「ああ、死んじゃっていいよ」って言われるかもしれんし
この場合は何もしないし
「ログにだけ出して」
ってのもあるし
そもそも各クラス例外を出す方針に一貫性がない
開こうと思ったファイルが開けないときの動作は普通は例外にしたくないけど例外が飛んでしまうときはcatchしないといけないわけで
まあ、個別に対処が必要? Rubyの話をする奴は、ちょっと話が違うとか理解することはできんのかな。
>>133
例外は、Catchしたとて復帰不可能なものはアプリケーションエラーにして落とすのに使ってるかな。
そのメソッド内で完結できるならばCatchするというか。
後始末してから結局throwするケースもあるけど。
上っ面がアプリケーションからバッチ処理に変わっても同じように使える事、ぐらいを想定して例外処理書くと統一感出ると思うよ。 >>134
自作だからその辺りの基準はないなあ
とはいえ世間でも基準は割とバラバラなのか
今回作ってるのはネットワーク関連のクラスなんだけど、初めて手を出す分野だからどれが個別に対処できるかは正直よくわかってないんだよね
参考にしてる資料に忠実に作ったら、ちゃんと動くんだけど例外処理だらけなのが見ててすごく気持ち悪くて、これで本当に正しいのかわからなくなったというか
>>136
使い分け方参考になります
あまり考えたくなったけどちゃんとしたものを組むなら例外の内容毎にきちんと仕分けしなきゃだめなのか・・・なんか逆にどんどん複雑になりそうで胸が熱くなるな
こう考えると寧ろサンプルはシンプルに纏まってて良いものに感じてきたわ
例外は普段最低限しか使用しないものだからイメージできなかったけど二人のお陰でなんとなく輪郭が見えてきた気がする、ありがとう >>137
例外って究極のgotoだからね。
その場でやっつけないなら慎重に受ける場所とその後の動きを検討しないといかんよ。
毎回その場でやっつけて、エラーとして呼び出し元に帰すって方針ならそれはそれでいいかも知れんけど、
誰かキャッチするだろって方針で、続行不能だからと適当に例外吐いて落とさせてると、あとで困る。特にバッチ処理。 >>135
そいつはこの板のあちこちに出没する有名な荒しだからスルー推奨。
いくら指摘しても自分に都合のいい話しか目に入らないから相手するだけ無駄で、スレを汚すことになる。 >>138
これはネタで書いたんだろうけど、例外は適切な場所で握りつぶすのが大事だよな。
「知ってる例外はcatchするけどあとはスルー」ってのが最悪。 色々資料をご紹介いただきありがとうございます
つまり、例外が大好きな.NETを呪いながら潰せる例外はメソッド内で潰し、潰せなければどのような例外があったかをきちんと調べられるようにすれば良いわけかな
今回は例外が発生してもクラッシュせず、かと言ってメソッド内で処理する事はできないようにする予定なので、例外が発生する可能性があるメソッド全てに例外の種類を特定できるような戻り値を与える方向で進めていく予定でやってみます
例外が出る処理はすべてcatch書いて適切な処理を書けばいいだけ。簡単。
>>145
どこでどんな例外が発生するかを全部把握して漏れなくやるのはそれなりに大変だなあ >>146
かといって、Javaの検査例外の仕組みはちょっとフットワークが重たくなるんだよな。
あれ自体は悪い仕組みじゃないどころか、発想としては初期の割に進んでたんだけど。 後にも先にもJavaしか採用していない悪い仕組みだよ
呼び出し階層の途中をすっ飛ばして高層階と低層階の間で例外の関心が繋がるという、
高階関数やフレームワーク等において普通に存在する極めて重要な例外のユースケースを検査例外は無視している
うーん、むしろ、例外が漏れるケース、throwsを書かざるを得ないケースってのを減らすべきだと俺は思ってたけどなぁ。
低層階で発生したものを高層階でハンドリングする事が正しいとはあんまり思わんな。
IOのExceptionみたいな、高層階側ではどうしようもない事を上げられても困ると思う。
けんされいがいって何だろうと思って調べたんだが、素人目には良い仕組みに見えてしまった
ただ例外を前提にするなら、もはや例「内」のような気が
高層側でどうしようもない例外が上がってきてるならそれは下層側が間違ってるだけでは
>>149
>後にも先にもJavaしか採用していない悪い仕組みだよ
Swiftで採用されてるよ
シグニチャによって呼び出し側にエラーハンドリングを強制する方法自体は悪い仕組みではない
例外ではないがRustも考え方としては同じだし>>142の赤間さんの考え方もベースは同じ チェック例外の発想は悪くないしいい機能だと思うけど、Javaのやりかただとバージョニング諸々で破滅的な事になりがちだから、静的解析なりなんなりのツールで確認すべきかなーっていう主張に読めたんだけど?
何の例外がくるのか意識してかけ派なのか
何の例外も気にするな派なのか
そのどちらであっても書き手の例外テロに強制的に付き合わなければならない
そのごった煮であることを受け入れた上でプロジェクトのスタンスを決めなければならない
>>155
Swiftの例外宣言は「例外を投げる」という指定ができるだけで、型の指定はないよ
>>153の話で言えば、あらゆるメソッドにthrows Exceptionが付けられて破綻した状態を正しいものとして受け容れてるわけ >>150
呼び出し階層が関心事の包含関係を反映しないケースは普通にある
ラムダなんかいい例で、君は x.Select(y => y.Hoge) でSelectがHogeの投げる例外を知っていなければならないと言ってるんだよ >>144
例外をエラーコードに変換して何の意味があるのw
例外の発生個所でそれを適切に処理できないなら何もしなくていいでしょw
後々のメンテナンスを考えて、あえてcatchして再スローするコードを書いておくのはありだとは思うけど。 >>149
関心が繋がるって意味が分からないんだが、要するに因果関係があるってこと? >>159
俺の主張は違うよ。
Hogeは例外を投げてはいけないと言ってるつもり。 >>162
例外を投げることを主張するばかりか、それを上位で処理することを強要する仕組みに賛同してなかったか? >>163
してないよ。
上位で拾うならアプリケーションを落とすぐらいしかやりようがないって言ってるんだけど。
throwsを書かざるを得ないケースの逆の、書かないケースってどう言う事かわかる?
そのメソッドでは例外が発生しないって事になってるって事だよ。 ホント役に立たない議論好きだな
ここから出ないでずっとやっててくれ
> IOのExceptionみたいな、高層階側ではどうしようもない事を上げられても困ると思う。
どんなに対処してもFileNotFoundExcpetionって防ぎよう無いけど例外受けてUIでエラー表示とかもしないってこと?
低層でexceptionを捕まえて実装者定義の情報に変えてそれでエラーハンドリングしろってこと?
会社の共有フォルダに配置されており、パソコン起動時に実行されて、特定の時刻になったらトースト出すプログラムを作りたいのですが、どのようなプロジェクトが向いていると思われますか?
WPFのプログラムを起動して5分おきに時刻をチェックし時間になったらトースト通知という仕組を考えたのですが、タスクバーに常駐してるのもなぁと思いまして
スマートな方法がありましたらご教示下さい
>>167
タスクスケジューラとpowershell >>169
100台近くあるクライアントにタスクスケジューラは辛いです クライアントパソコンは起動時に実行ファイルを実行出来る配布済みのものです
実行時に実行ファイルを常駐させる他ないかなと思いつつも適材適所のプロジェクトがあればお伺いしたいなと思っております
>>160
.NETがcatchを強要するようなオブジェクトなんかを用意するから悩んでる
結局その場で何もできないなら多くのサンプルコードのように、catchした例外内容をコンソール上に表示する(または再スローする)だけの形が正解でいいのかな?
呼び出し元にも例外処理させるのはあまりやりたくないけどこういうのは仕方ないのか >>172
別にWindowsのスタートアップに登録して常に起動させておく方法でも問題ないと思うけど、
どうしても嫌なら既に指摘されてる通りWindowsのタスクスケジューラーのタスクに登録すりゃいいでしょ。
ユーザーにそれを手動でやらせろ、と言ってるわけじゃなく、
あなたが作るプログラムがそれをやればいいってことね。 .Net介してタスクスケジューラにアクセスできるみたいだし無理ではないんじゃね知らんけど
むしろ呼び出し元にも例外処理させるために例外があるんだろ
ファイル書き込みをオブジェクトに任せて書き込もうとしたら書き込めなかった
その後の処理を呼び出し側に書かんでどうすんの?
例外をcatchしたらログに吐き出して上位にthrowすればいいじゃん
Oh...深く考える必要はなかったってことね
まあ例外に関しては立ち止まって考える機会を得れて十分に学習できたからこれはこれで良かったわ
>>149
>呼び出し階層の途中をすっ飛ばして高層階と低層階の間で例外の関心が繋がるという、
それは例外機構そのものの問題だと思うがな。
検査例外はそれを静的にチェックするからすぐ目に付くけど、それ以外の言語は
その関係が動的暗黙的で表に見えないだけ。ある意味よけい悪い。 >>173
何もしないならその場でcatchしちゃだめだって
ログ出力のような共通処理は集約例外ハンドラに任せる >>181
嘘だよ
まず、アプリケーションをストップさせたくないときはcatchしないと駄目だよ
そもそもファイルがない程度で例外出しやがるお前(Microsoft)みたいなのがいるから足並みが揃わないんだろうが
そもそもみんな例外の扱いに困ってんのはお前(Microsoft)のせいだお前(Microsoft)の
それと例外自体が造り手の思想依存であって
飛んできた例外に例外であることの正当性の保証はない
みんながみんな好き勝手飛ばすし
正当な処理結果なのに例外としてcatchさせるような作り方もできる
こんな状況なので方針というのは作れなくて1つ1つのメソッドでどういう動作にするか考えなくてはならない >>180
キャッチしないとその場でクラッシュするから・・・
例えば、通信先の接続に失敗しただけで例外になるからこれでクラッシュするのは避けたいって時とか
そうすると色々教えてもらった結論としてはcatchしてから何もせず再スローするしかないと思ったんだよね
でもやっぱり気持ち良いものではないから代替案があればそっちにしたいけどいかんせん俺の知識が足りない >>185
すまん、集約例外ハンドラが全然理解できてなかったから頓珍漢なこと言った
ちょっとちゃんと読ませてもらうわ >>183
FileNotFoundExceptionが出て欲しくないなら
きちんと事前にファイルの存在を確認すれば良いだけだろ ファイルの存在確認してからファイルオープンの間までにファイルが消えることがあるんですが…
ライブラリ内、関数内でcatchして、ファイルが無かった旨の結果を返すか、
(必然的に、成功、失敗のいずれかと付随する結果を持つ結果オブジェクトを返すことになる)
もしくは誰もキャッチせずアプリケーションエラーにしてアプリごと落としてしまうのが良いんじゃないの?
要は、ファイルが無い場合ってのは、それをもってなにか処理したい場合、正常系の1パターンであって、無理に救う異常系ではないと思う。
結局どの階層でもファイルが見つからない状況に興味がなければ
そのアプリは落ちるしかあるめえなあ
>>189
落とした方がいいかどうかなんて
そんなのお前が決める問題じゃないじゃん 作るメソッドが例外を飛ばしまくるくせに
ドキュメントを書かないなんて奴は最悪で完全に制御するためには
メソッドの中のソース読んで例外が今回の仕様にマッチするかどうかまで調べないといけない現実
ファイルがなかったから飛んだ例外なのかファイルを開いて編集できなかったから飛んだ例外なのか
造り手はそれに気を使う義理はないが
キャッチされなかった例外はそのまま上位へ伝播したとおもったが
>>196
それであっているしそうしないとthrowの意味が半減する
catchして何か処理したうえで再スローするのならともかくそのままthrowって言っている>>193とそこで止まるって言っている>>195は例外処理の基本すらわかっていない >>199
検査例外の対応がそうするのが主流ってことか? catchしてそのまま何もせず再スローはメンテを意識して書く場合はあっていいよw
// ここで○○が××の場合HogeExceptionが発生
とかコメントで書くよりよっぽどいい。
記憶力抜群の人はどうだか知らないけど、だいたい忘れちゃうんだよ。
どこでどんな例外が起こる可能性があるかなんて
何もしないで再throwにしても
イベントログに描き込んだり
ログファイルに出力したり
黙ってても出来ることはある
>>201
再スローする時にthrow exp;とかやってるあほなJava屋上がりを見たことがある try{
....
}
catch{
throw;
}
>>202
ログ出力してるのになにもしてないとか言うと話がかわるんだが >>201
たしか標準のドキュメントコメントに例外あったはずだか、それより良いと? 設定ファイルを触っておいて
何もしてないのに起動しなくなりました
って言う奴と同じだなぁ
iniファイルがよく壊れるソフトの開発者に限ってユーザのせいにするんだぜ
- エラーは戻り値じゃなく例外を投げるべき
- 検査例外は糞
- 想定しない例外が発生したら潔くプロセスを落とすべき
声が大きい例外君はこんなのが多いよな
>>210
ファイルが無い程度でふっ飛ばされんのかよ
だから夢みんなよ
例外なんて書くやつの匙加減一つでとんでもない仕様になりうるっていい加減理解しろ
誰でも好きに書けるんだからそらそうなるだろ 業務要件次第って思うんだが。。
要件詰めてないからブレるだけで
例外ガーって吠えてる人が何を勘違いしてるのか少し分かった気がする。
彼は結果に過ぎないものを原因だと錯覚してるんだな多分w
問題領域が複雑だから(原因)煩雑な例外処理が要求される(結果)のに、
彼は例外処理が問題を複雑にしているという逆立ちした認識に陥っている。
もっと根本的にそもそも安全側に倒す意義が分かってないような気もするけどw
x 例外ガーって吠えてる・・・
o 例外が、って吠えてる・・・
正しい日本語を使いたまえ。
>>217
イベント設定した?
public FormMain()
{
InitializeComponent();
button1.Click +=button1_Click;
}
それでも出ないのなら自分でなにかOS設定でやらかしている >>217
NotifyIcon にアイコン設定した? StreamReader から文字列サーチして先頭の Position 得るライブラリとかありますか?
改行ないので ReadLine() は効かず ReadToEnd() はメモリが足らん状況です
そういうのを作ること自体が面白いと思えないとつらいねw
>>222
バイト位置を更新しながら、バイト列を繰り返し読む。
読み込んだバイト列の中からターゲットのバイト列の最初のバイトを探す。
最初のバイトにマッチしたらそこの位置からターゲットのバイト列の長さだけ読み込んで、
バイト列がターゲット文字列に一致するかを確認する。
一致すればそこの位置を返す。 そういうのは自動テストやってるなら楽しいが手動でテストしなきゃいけないなら作りたくない
>>225
初心者相手だとそれだね
手ぬるいと感じてしまう自分はおかしいんだ >>226
プログラムというのはそういうものじゃないかな
アルゴリズムを自分で考えるのが面白いと思えないならつまらないコーディング生活になる
自分の頭で考えるのが嫌だったり忍耐力が皆無ならまあ正直向いていない!
どーしても自分の頭でアルゴリズムを考えたくないならググるしかない >>221
アイコンをブランクにしておりました
設定したら動作しました
ご指摘ありがとうございます >>213
例外は「安全側に倒す」とは真逆だと思うんだがなぁ。
緊急停止ボタンみたいなもんだけどそれは機器にとって安全な停止方法じゃないように。 アルゴリズムなんか正直ネットでいくらでも手軽に使えるのが落ちてるからなあ
俺にとってプログラミングなんて手段でしかないから結局作りたいものを好きなように作ってる時が一番楽しいわ
バイト列で文字列検索するとコードページによっては死ぬ
>>233
量子コンピュータならなんとかなるはず! >>235
最後まで見た?w
クヌースの教本の4Aに出て来る
ZDD,BDDアルゴリズムを使うと実用時間内
に解ける。
開発したのは北海道大学でソースも公開されているよ〜 お姉さん問題って、北大の湊教授だろ
確か、Ruby 用のモジュールもある
C#で年月日を取得してその日が満月かどうか(満月でなければ月齢)調べるライブラリを教えてください
Programクラスの中にあるスタティックメンバって、他のオブジェクトからProgram.Propみたいにアクセスできないの?
ごめん、本当にできた
ネームスペースが違ってただけだった、ほんとすまんかった
最近プロジェクト変わってC#触り始めたんだけどみんななんでMSDNの説明理解できるの
マジでたまに8割くらい何言ってるかわからん
俺も英語は読めないわ。
機械翻訳は意味わからんし。
MSDNの日本語版は日本語の様に見えるが日本語じゃないな
英語版の方が意味が判る
MSの技術をMS公式資料だけで理解できる人なんていない。
日本語訳は糞だし、そもそもオリジナルの英文からして糞らしい。
MSDNに限って言えば載ってるサンプルコードが参考になるくらい。
英語の方がわかりやすいっていうのすごいわかるわ
Javaから来た人間にはとても厳しい
みんな動作の検証繰り返してなんとなく仕様理解してる感じなの?
C#のリファレンスというかMSのリファレンスは
他に比べるとかなりわかりやすいほうだぞ
MSの外の世界に出るとありがたみがわかる
JAVA屋はJava世界にお帰りなさい。
二度とこっちくんな
物を作る=ツールの使い方と、ライブラリーの
探し方でマウント取る奴らだからな
マウントはどうでもいいが
Javaの話を敢えて出す意味は無いな
>>251
MSDNって古いドキュメントの方じゃない?最近はdocsだと思うけど…見るとこまちがってない? MS関連の開発は分野が広がり過ぎてMSDNの頃に比べりゃ雑なドキュメントが目につくようにはなってるけど
割とポジティブなニュアンスで「あるだけマシ」みたいなところはいまだにあるからな
なんでもdocsだしな。最近。
まあ確かにあるだけマシだけど、本格的に何言ってるかわからんは増えてきた印象。
GoogleDriveApi利用してる方いないでしょうか?
Create, Delete, List, Getなどは問題なく出来るのですが、既にドライブ上に存在するファイルを上書きするためにUpdate(file, fileId, stream, null)を行おうとしてもうんともすんとも行きません
Listで列挙した中からファイルIdを取得しているため正確なIdを渡せてるはずなのですが、例外は出ないものの全く該当ファイルが更新されません
可能性
・権限が足りない
・別のファイルが造られてる
>>266
ScopeはDriveService.Scope.Driveのみを乗せていますが、CreateやDeleteはちゃんと出来るので権限は足りているかと
別のファイルが作られている可能性も追いましたが実際にブラウザで確認したところそういう事もなく、操作履歴を見ても最終更新物はUpdateを行う前の物で止まっています
しかしながらApi利用状況で確認をするとUpdateリクエスト自体はちゃんと送られているようです
DeleteしてからCreateし直すというやり方でも希望は達成できますが、明らかに正攻法ではないですよね・・・ Response(ヘッダも含めて)ちゃんと観てる?
>>268
そこはよく見てません
具体的にこのようなコードでUpdateを行っています
ほぼ同じようなコードでもCreateなら問題なく出来ております
var file = new File() { Name = item.CloudFileName, Parents = item.Parents, Id = item.FileId };
var req = Service.Files.Update(file, item.FileId, stream, null);
req.Upload(); APIの質問だからスレ違いなんだがResponse見ずにうまくいきませんなぜでしょうかってw
非管理者なんですがWindows10でVScodeのデバッグはできないのでしょうか?
非管理者用のインストールスクリプトでAPPdataにインストールされたまでは良かったのですがそっからどうにもならずです
VScodeスレに行くかMSのコミュニティだかなんだかに聞けば
>>275
教えてほしいなら、もう少し丁寧に頼んだほうが良いんじゃないの。
>>274 様、解決方法をご教授くださいませ、みたいに。 掲示板の質問で自己解決したらそれを書くのがマナーだと思っているけど、そもそもスレ違いだな
>>271 様チラシの裏に書くようにしてくださいお願いします チラシの裏に書けってよく見るけど。
便所の落書きでダメな理由がわからない。
他人の目に触れるか否かという
途轍もなく大きい差があるのだが
>>276
スレチでしたすみませんの一言も言えないのかクソ
しょんべんたらしてごめんなさいだろ LINQとか拡張メソッドとかの書き方を学んだんだけど今いち使うタイミングがわからん
コードリーディングに使える良質なコードってどこかにありますか?GitHubとかでおすすめのがあれば教えてください
でかいウンコはそもそも流れないので隠したくても隠せない
>>283
LINQ使わないと書けないってことはないが
描きやすいと思うときは使えば良い 流れないほどのウンコを体内に貯めておくのは体に悪い
体内に毒素がまわる
vs2013でwebフォームを作ってます。IIS10上で動作しています。
使用人数が5→20人程に増えたところSessionが切れるような現象がたまに発生するようになりました。
IISのセッション状態で、Cookieを使用するモードで、タイムアウトを設定していますが、その前に失われます。
IISの接続数のようなものが関係しているのでしょうか?それともASP.NETの方の設定で何かあるのでしょか?
IIS って久しぶりに聴いたな
まだ使ってる人居たのか
>>288
Sessionが切れるような現象とは?
最近IIS使ってないからわからないけど
昔と同じならセッションをInProcで管理してれば
タイムアウトに関係なくApplication Poolのリサイクル時に切れる >>293
あるセッション変数がnullになります。
他のセッション変数もnullになってる可能性はありますが、チェックしてないので分かりません。 デスクトップ上にテロップをカッコよく流したいのですが、jqueryみたいなライブラリってあるでしょうか?
テロップは自分で作ると昭和のホームページみたくなると予想されるので
できあいのカッコいいのがあればお教え下さい
なんでjqueryが出てくるの?
テロップってなに?
サービスでやるの?GUIアプリでやるの?
そもそもwindowsなの?
なんでc#で聞いてるの?UWPとかWPFでやりたいの?
少しは自分で考えたの?
>>297
容赦ない連続攻撃ワロス
全部筋が通っているし
>>295
せめて具体例出して「こんなことやりたいです」って聞かないと
WinAPIで画面に直接表示するか、フォームを表示したうえで必要な部分以外を透過することになると思うけど
どっちもあまりお勧めできないしWindows以外では実現もできない
前者は表示・非表示の切替が面倒だし後者は表示している部分がスクリーンに対してアンチエイリアスが使えないので汚い見た目になりやすい >>297
通常攻撃が全体攻撃で二回攻撃のお母さんは好きです
>>295
テレビチューナーボードを買って来て付ければ良いと思うよ 因みに、DOOMも初期バージョンは
NEXTやで
macosの最初のFPS「マラソン」は残念Soft
舌足らずですみません
テロップとはデスクトップ画面上にメッセージを流す仕組みです
最適な技術は経験不足で不明です
フォームアプリでも出来るかと思うのですが味気ない文字が出てくるだけなのは寂しいと
jqueryの下りは出来合いのカッコいいモジュールを見ているので、ああいうのがあると捗るなと思った次第です
>>304
だったらC#じゃなくてまずHTMLとCSSからやれよ
それからJavaScriptをやってp5.jsちゃうか?
たぶん3Dの文字列もやろうとしてるっぽいから >>304
こんなのが欲しいという具体例があると分かりやすいと思う。
一般論としてはWindows Form(というかGDI+)は静的なグラフィックについては過不足なくできるが
フレームレートやアニメーションの滑らかさが重要な分野には不向き。
半透明のウィンドウ内で文字だけ不透明で表示とかも基本的にできない。
マーキーみたいな単純なアニメーションならWPFの方が向いてるんじゃない? >>304
setLayeredWindowAttributes このAPI、Windows8以降とそれ以前で
子windowに対する動作が違うので
要注意アルね。
>>309
このAPIが何か知らないが
>>310
デスクトップのWindow表示回りとかはVistaで新しくなったのが多いな
でも.NETから使えるGDI+のライブラリには関係ないし、これスレ違い 当然、直前に書かれている。SetLayer〜だね
「Win8から子ウィンドウ単体をレイヤードウィンドウにする事ができるようになりました」
7−8の差異だが?少しは調べてから書けや
DirectCompositionの都合に伴う単純な機能強化だから別に要注意点ってわけでもないじゃろ
テロップとやらがどういう挙動が知らんけど透過イメージで非矩形ウィンドウ作りたいだけなら
WPFのWindow.AllowsTransparencyとかを設定する手法が取り敢えず楽(やってることはSetLayeredWindowAttributes
まんま)
それでも実装としては古いものになるからパフォーマンスが気になるなら
生Win32に下りてWS_EX_NOREDIRECTIONBITMAP指定したウィンドウでゴリゴリやるしかないね
テロップの例
テロップ魔法の例
>>313
挙動を合わせるには、マニフェスト設定
もいるからし、子Winが表示されなく
なったりするから、注意しろよって
のがそんなに可笑しいか? >>316
わざわざ子ウィンドウをレイヤー化させたりしない限りマニフェストに追記要らないし
今で通り使うなら特別な配慮はいらないからね 色々とアドバイスありがとうございます
WPFで作ると良いのですね
なお、テロップはユーザのデスクトップ画面に文字を出すシステムです
文字が表示されれば目的を達成しますが、今風のカッコいい出力があれば良いなと思っております
WindowFormはスマホのアプリとか見慣れてると古いかなと思ってしまい
イマイチ目的が分からんけど、トーストじゃダメなの?
>>319
かわいい女の子を表示したいって書いてあるだろ
どこ見てんだよ >>318
仕様も決められない馬鹿はプログラム以前の問題 SEとPGの仕事を混同してる奴にまともな人間は居なかった
>>324
自分が自分用に作るプログラムの仕様がわからんような馬鹿なプログラマー プログラマーなんて所詮皆自分の知識をひけらかしたいだけの承認欲求高いやつらしかいないから。
∃と∀を区別出来ないひとはプログラミングするべきじゃないね
C#の話とはずれまくるけど、専用のスレがないからAdobe XDとの連携について教えて欲しいんだけどさ
これのXAML書き出し(特にXamarin.forms向けに)って実用になるレベルのもんなの?適切なサイズの画像リソースとかも自動で用意してくれたりもするのかな?
実用になりそうならXDの練習始めようかなと思うんだけど・・・どうなんだろう
>>317
その理由は後付けだの。
見苦しい。恥をしれ >>328
>∃と∀を区別出来ないひと
∃∀と∀∃の意味の違いを把握していない人は結構いるかもしれません… C#のswitch文めちゃくちゃ短く書けるんだな
クソ読みやすい
switch文なんてどの言語でも同じだろ
C++だとインデントつかないとかその程度の差で
python始めたけどインデントでブロックになるなんて糞だと思ったわ。
一番近いのはRustのmatchかな?
まあイマドキのは似たような構文結構あるで
>>335
インデント?
switch文って結構仕様違うぞ
C/C++はcaseに整数に評価できる定数しか書けないけどC#7.0は文字列とかも書ける
VBAは(switchじゃないけど同等のSelect Case文の)Caseには 1 To 2の形式で範囲書いたり、1, 2, 5とかで複数の選択肢を書けたりする switch が整数のみのときは
id 毎に id を key にして関数 (Action とか Func) を value にして
そのままテーブル参照で関数に飛ばすのが C/C++ と親和性が良い
>>340
こういうアホがコードを無駄に複雑にして見通しを悪くする ではもう少しスマートな解決方法示してくれませんかね?
そのままC/C++でコンパイルもできないのに親和性とかよくわからんものにこだわってコード読みにくくして誰が得するの
デバッグが面倒になるだけの気がするけどまあやりたければやればいい
IDがただの数字で意味を持たないなら別にいいけど意味のある記号なら他のアプローチもあるだろう
ただ要素数がわからんのでどうするかは個別に考えるしかない
ASPで
セッション変数って明示的に削除したほうがいいの?
いつか消えるから放置はだめ?
まともな理由がほしいんだけど調べても出てこない
ASP(Active Server Pages)の既定の
言語はVBScriptだからスレチじゃないかな?
Web板のほうかな?
>>349
放置でいいよ
消すコード仕込んだらコードめちゃくちゃになるでしょ
セッションの使いすぎでメモリが足りなくなるんだったらセッション状態をスケーラブルなサーバー(外部セッションストレージ)に移す
あるいはセッションを使わないようにプログラムを改修する >>349
サーバ側の話だよな
セッションが不要になれぱ消せば良い
ただそれが検知できないだけ そりゃPythonかおっぱいかと問われればおっぱいだろ
>>358
最近、大きくなって来ちゃいました
唐揚げとか食べ過ぎて >>360
C ++ C#ってほとんどDなんかな?
手に余るような手に負えないような良いサイズ感
最先端に触れちゃいたいけどFはイキ過ぎなんで
>>359はBBQしすぎでしょ 質問なんですが、サーバーエクスプローラー−データ接続ー接続の追加で
ローカルのデーターベース新規作成したいのですが、データベースファイルのパスを
絶対パスじゃなくて、実行ファイルからの相対パスにできないのでしょうか?
データーソースはMicrosoft SQL Server データベース ファイル (SqlClient)です、よろしくおねがいします
>>364
レスさんくすです
接続を複数作るってのは、SQLiteとかでデータベース作って、SQLServerとかで接続とかでしょうか?
ごめんなさいよくわかりません 何をしたいんだ?
自分が考えた方法はいったんおいといて目的だけを言ってみて
>>363
Application.ExecutablePathなどからパスを作らず相対パスでなければならない理由があるの? 質問の前に真の目的があって
自分なりに考えた方法だとこうすればできる
でもそれには障害があるのでうまくいかない
んで質問するときには障害を取っ払うにはどうすればいいんですかって質問が化けちまうんだよ
だからまずは真の目的を話せ
それだと本人のPCにしかないプログラムを公開するところから始めないといかんのだが
やりたいことを書いて頭に「C#」つけてグーグル先生に聞けばだいたい解決する
>>366
さんくすです
SQLを勉強したい→自炊した本のフォルダ名に本の名前書いてあるから
フォルダ名をデータベースに、サーバーエクスプローラーからデータベース作ると
C:\USER\ドキュメントフォルダに.mdfファイルが作られる、これを避けたいのです
>>367
れすさんくすです
もちろん実行パスさえ取得できれば絶対パスでもOKです
ただサーバーエクスプローラーからデータベース作ろうとしたら
Application.ExecutablePath使えなくて
>>368
そのアプリでしか使わないデーターベースの保存先を
実行ファイルと同じ場所にしたいのです、レスさんくすです 社員数分200台のコンピュータに共有フォルダに置いた常駐するexeファイルを実行させたいのですが、半分くらいが上手く起動してくれません
調べてもそういう情報は無いのですが、exeファイルの接続数等に何か制約があるのでしょうか?
>>374
アプリと一緒に、.mdf ファイルも配布すれば? >>374
開発環境と実行環境は別ものと考えるのが常識だ
サーバーエクスプローラーが絶対パスの直指定しかできなくても
アプリケーションは相対パスから計算して接続文字列を組み立てられる
実行時にexeとmdfが揃ってればいい
開発時は別にどこにあってもいい >>376
実行ファイルはC#なのですがVBでも同じと言われれば同じでした 共有フォルダに同時アクセス制限が掛かってる可能性ない?
NASとかじゃなくてWindowsが共有元になってると
フォルダ右クリ→プロパティ→共有→詳細な共有で見られる同時に共有できるユーザー数がデフォルトは20になってるはず(ホストがWindowsServerだともっと大きいけど)
スレ違いだけどな
>>379
開発時絶対パスでも、実行ファイルの場所に指定しとけば
うまく動くってことですね、ありがとうございます
>>378
さんくすです、アプリに同梱してれば見失わないってことですね 言いたいことは分かるけど、それだと究極的には質問は「年収上げる早道は何か?」になっちゃうよw
>>384
言いたいことを分かった上で敢えて茶々を入れるなら、もう少し面白いとか上手いとか思えるものにしてくれ。 >>382
ブラウザなど、多くのアプリでは、
パッケージ内にデータベースとして、SQLite3 も入れていて、
それをキャッシュ用に使っている >>387
ヘリウムガスをほんの少し。加減は分からないので絶対音感のある人に協力してもらって。 >>391
胸軽く、心踊る、夏の夜の夢、メンデルスゾーン
好き 好き 大好き HT ML
あんなユメ こんなユメ かなえる
HTで探す MLで建てる
あなたと出会える HTML5ブィングゥ >>389
サンクスです、FireFoxとかみるとデータ保存用にSQLiteとか使ってますよね
単に実行ファイルと同じ場所にデータベースファイル保存したいだけなのに
そんなおかしいことゆってますかね? >>368
それで必要ないReflectionやらコードの動的生成とかに突っ込んでいくんだよな >>393
Program Filesとかセキュリティが厳しいところにインストールして
DBファイルに上手く書き込めなくて悩むオチが見える >>395
そういや昔のゲームとかインストールするとうそうなったり
MSの迷走 >>397
ここはPC初心者の知識をドヤ顔で書く場所じゃないから Amazonで評判のいい本でC#の勉強をはじめたのですが変数のところで疑問点がでました
12 {
13 int a; // 変数の宣言
14 int b = 3; // 宣言と初期化を同時に行う
15 int add, sub; // 複数の変数を同時に宣言
16 double avg; // int以外の変数を宣言
17 a = 6; // 代入
18 add = a + b; // a,bの和を求める
19 sub = a - b; // a,bの差を求める
20 avg = (a + b) / 2.0; // a,bの平均値を求める
21 Console.WriteLine("{0} + {1} = {2}", a, b, add);
22 Console.WriteLine("{0} - {1} = {2}", a, b, sub);
23 Console.WriteLine("{0}と{1}の平均値{2}", a, b, avg);
24 }
変数の部分はわかるのですが、21-23の表示の部分が引っかかってます
なぜa, b, = a+bのように直接式を立てずに{0} + {1} = {2}に代入するのでしょうか?
>>401
Console.WriteLineがそういうルールで書いたら代入するよって決めてるから 代入じゃないよ
後ろの引数の0番目、1番目、2番目をここに埋め込むって意味
a + " + " + b + " = " + "add";
現在のC#では直接埋め込めるから基本はそっち使うね
$"{a} + {b} = {add}"; // $""という記法で{式}を文字列に埋め込める
$"{a} + {b} = {a + b}"; // 式なので演算とかも書ける
>>401
直接式を立てず、の意味が分からない
どう書くべきだと思ったのか、実際のコードを書いてみて >>402
ありがとうございます
そういうことだったんですね
>>403
ありがとうございます
んーわかったつもりになりそうな予感w
じっくり読んでみますね
>>404
ありがとうございます
Console.WriteLine(a, "+" b, "=" a+b) 的な形をイメージしていました >>405
>Console.WriteLine(a, "+" b, "=" a+b) 的な形をイメージ
その書き方で十分だと思います 403のが活かされてなくて草
ちな文字列内での変数展開やパラメータ指定でのバインドはPHPとかでもよくやるポピュラーな方法でもある
>>403のように
Console.WriteLine( $"{a} + {b} = {a+b}" );
が一番スマートだと思う
後ろのはa+bでもaddでもお好みで >>406
ありがとうございます
ふむふむ
>>407
ありがとうございます
そうなのですね
>>409
ありがとうございます
他言語との比較も勉強になりますね
>>410
ありがとうございます
わかりましたー 濃淡グラフを描くときに使用するような
カラースケールを選択するコントロールはありますか
やはり自作するのでしょうか
自作するか別の方法を考えることにします
ありがとうございました
カラースケールって何のことかと思ったらただのグラデーションのことかw
要するにグラデーションの両端の色を同時に選択できるようなダイアログって意味だったのかな?
色の設定ダイアログボックスで良かったんじゃないかな?実は
WinFormsでデスクトップアプリを作っています
SoundPlayerクラスのPlayメソッドだと、
音が鳴っているときに別の音を鳴らすと前の音が止まって後の音が鳴るのですが、
前の音は止まらず、後の音が重なって鳴るようにしたいです(これが目的)
SoundPlayerクラスでは無理なら、何を使えば一番簡単にできますか?(これが知りたい)
可能なら音の鳴り終わりもイベントまたはコールバックで把握したいです
SoundPlayerじゃ無理だね
NAudioでも使えば
一般論だけどWindowsの標準の色設定ダイアログは糞
全部の色を表現出来ていないからあるものの中からは選べない
>>424
え?RGBそれぞれ0~255設定できるじゃん
俺とお前の色の設定画面が一致しないんだけど? もちろん数値入れれば良い
>あるものの中からは選べない
↓
>提示されているものの中からは選べない
(まだ誤解されるかも知れないけどパレットのことじゃなくてグラデーションの方の話ね)
>>426
グラデのバーもあんじゃん
正確に何が欲しいのかわかってなくない? >>427
そいつはカラーダイアログの使い方がわかってないのかもしれん
半透明色が取れない、って不満ならわかるけど>>426は何が言いたいのかすらわからん グラデのバーがあるのも知ってるよ
お前らには観えてないんだろ
>>422-423
ありがとうございます
423のMediaPlayerを使うことにしましたが、ちょっと癖がありますね
Waveファイル1つにつき1インスタンス生成して、
連続でOpenで読み込んでるとPlayもしてないのになぜか少し音が出たり
(Muteにしてから読み込むことで対処)、
ファイルのパスはUriで渡す必要があるのですが、exeからの相対パスを
渡しても読んでくれなかったり(絶対パスに変換すればOK)、
Playした後はStopしないと再度Playしても鳴らなかったり
ともかく目的は果たせました、助かりました 馬鹿が馬鹿にした気になってんのか
これだから低脳は使えねえ
自分でColor選択ダイアログ造ってみ
Windows標準のやつのどこが問題かすぐ気付くからω
>>437
まだいたのかおまえ
説明できないのに勝利宣言するキチガイはいらない Windowsの色選択ダイアログっていうかそれをラップしてる.NETのダイアログを以前使って
なんじゃこりゃと思ったのは、あれ確かユーザーが編集して保存したパレットの色の型が
ColorになってなくてなんかWin32の妙ちくりんな型になってたような
レジストリには文字列で記録されてます
.ini時代からの伝統です
>>439
妙ちくりんな型も何も、そのものずばりintだよ WindowsSDKではCOLORREFってtypedefされてるけど
知ってればColorTranslator.FromWin32で問題ないんだけどまあ知らないよね Func<〜>型の変数同士の比較ってうまくいかないの?
Func<int, int> hoge = p => p * 2;
Func<int, int> fuga = p => p * 2;
bool flg = (hoge==fuga); //trueにならない
ラムダ式を2個書いてるから、それぞれ別のオブジェクト
それを比較してるから同じではない
その比較はデリゲート同士の比較なんだが、もしかして整数同士の比較だと思ってる?
ラムダ式が同じ式でも別メソッドにコンパイルされてるからfalseになってる
int twice(int x) => x * 2;
Func<int, int> a = new Func<int, int>(twice);
Func<int, int> b = new Func<int, int>(twice);
var flg = a == b; // これなら同じメソッドだからtrue
Func<int, int> a = p => p * 2;
Func<int, int> b = p => p * 2;
はこんな感じになる
class __c {
public static readonly __c __instance = new __c();
public int __1(int p) => p * 2;
public int __2(int p) => p * 2;
}
Func<int, int> a = new Func<int, int>(__c.__instance.__1);
Func<int, int> b = new Func<int, int>(__c.__instance.__2);
var flg = a == b; // __1と__2で別メソッドなのでfalse
>>443-445
レスありがとうございます。
計算式の同一性を判断したかったのですができないようなので他の方法で実装します。 計算式の同一性って、p*2とp<<1は同一と判断するのかな?
定義域の数値を全部代入してみて出力が全部同じなら同じと見なす
>>446
そんなの無理だよw
=x*(x+1)+1と= x*x +x+1が同じかどうか判定できるわけがない p => p * 2とq => q * 2は違うという判定でもよければ
ExpressionをToString()して比較
それ以上は中身を比較しないと無理
NugetのLambdaCompareを使うとp => p * 2とq => q * 2は同一と判断可能
https://dotnetfiddle.net/bTgYtj
(表現の同一性比較であって計算式の同一性比較ではない) 小姑みたいな話と思われるかもしれないけど、同一と等価は厳密に区別した方がいいよw
同一というのは同一人物の同一。
等価というのはある判断基準に基づいて同じと見なせるということ。
前者には恣意性が入り込む余地がないのに対して、後者は恣意的な演算。
恣意的ということはつまり、計算機が適当に忖度して行える演算ではないということ。
何をもって等価と見なすかは人間が決定する必要がある。
デリゲートの==演算子は同一性を検査する
ちなみに水分子H2Oの二つのHは同一ですか?等価ですか?
素粒子に自己同一性はないって昔学校で習った気がするけど
分子や原子は区別できないとしても別の実体としてふるまうんでないの?
知らんけどw
量子論のスレとかで聞いてよ
片方のHが重水素だとしても水は水だし
同一とは呼ばないんじゃない
A〜Eのスイッチがあります
各スイッチには3つの状態、ON、OFF、IDLEがあります
A〜Eの状態の組合せすべてを試すには、どういうコードを書けばいいんでしょうか?
for (int a = 0; a < 3; a++)
for (int b = 0; b < 3; b++)
for (int c = 0; c < 3; c++)
for (int d = 0; d < 3; d++)
for (int e = 0; e < 3; e++)
f(a, b, c, d, e);
C#にpandasやdplyrのようなデータフレームライブラリないですか?わざわざ独自クラス定義して箱作ってデータ受けるのだるいんですが、便利な手法あれば教えて下さい
ないよ
データ分析系は一時期MSがC#で整備しようとしてたけど結局諦めてJava系技術を使ってねということになり、それ以来何も動きはない
まあ良くも悪くもMS頼みだね
なんでも.NETにしようとしていた時代は終わり、今ではMSの戦略上はC#は数ある言語の一つでしかなく、.NETはそれを動かすためのランタイムでしかない
Javaに引け目を感じてるならともかく
Javaの牙城を乗り越えて・・と思ったけど
Winサーバーでお世話になってるOracleさんには迷惑かけるわけにもいかず中途半端な感じ
今時の開発は、ツールやフレームワークが先行して、それを使うにはなんの言語が必要なのか、で言語を決めるから、C#に拘ってられないんだ
なのでpandasを使いたいなら素直にpythonを使うのがいい
「pandasと同じことが出来るC#用のなにか」
っていうのじゃまた覚え直すことが増えてしまう
↓
C#で動くpandasが欲しい
↓
無かったらC#からpython呼ぶ
この流れはありだと思うけど
PyCallみたいな馬鹿をやってまでRubyを貫こうとする連中とは対称的なスタイルだ
どっちが賢いのかは知らない
現在のソリューション構成(Release/Debug)やソリューションプラットフォーム(x64/x86)は.vsフォルダ化に記録されてるのだと思いますが、
これを.slnや.csprojに記録しておくことは出来ないのでしょうか?
githubからcloneし直すたびに構成やプラットフォームを選択し直すのが面倒であるため、ignore対象である.vsフォルダ下以外に記憶させたいです
>>479
それはバージョンもわからないしスレ違いだからVSのスレで聞いて .slnを覗いた感じアクティブな構成は.slnに記録されてるように思うけどな。
個々のプロジェクトの構成とソリューションの構成を混同してたりしないかね
VS2019はslnではなく隠しフォルダ下の.suoにアクティブ構成は保存される
よって個人プロジェクトであれば.suoもpushしておけばいい
今日は仕事をする気が起きなくては、朝からずっとC#でマインスイーパ作ってた。
すごくがんばったけど15行までしか縮められなくて絶望した。
7行とか目指すならルーチンを根本的に変えなきゃダメなんだろうな。
文字数じゃなく行数?
;つければいくらでも連結できるのに何の意味が
>>489
PC-8001のN-BASIC Ver1.0は40桁目が欠落した。 C#で7lineはしんどくない?w
7lineテトリスって行って7行プログラミングでテトリス実装するってのが昔はやったのよ
改修作業中で既存のメソッドにパラメータを追加する場合、どう対応するのが一番スマートなんでしょうか?
とりあえず既存の処理に影響がないように、引数をしてなくても大丈夫なように初期値を与えておくデフォルトパラメータで対応しました
他にうまいやり方があれば教えてください
デフォルト引数を使った奴は数年後にデフォルト引数5個のメソッドの4番目だけ入れるようなことになる
>>492
C#でデフォルトありパラメータを追加すると、それを別アセンブリから参照した場合別のメソッドとみなされるので注意が必要だよ
一括でビルドする運用じゃない場合はオーバーロードで追加する必要があるよ .NET CoreとVS Codeが混ざったのかな…
Entity FrameworkでDBのEntityから振る舞いを持ったモデルクラス?(表現が適切か分からん)に変換するときどうやってる?
https://ideone.com/AyKkA4
↑みたいな感じで強引に全部代入していくか
会社の頭良い人はリフレクション使って同名プロパティ同士で代入するようにしてたけど
どんな感じでやるのが一般的なのか聞きたい 振る舞いを持ったクラスにEntityのインスタンスを持たせる
class Hoge {
private readonly HogeEntity e;
public Hoge(HogeEntity e) => this.e =e;
public HogeEntity Entity => e;
public HogeId Id => new HogeId(e.Id);
public HogeName Name {
get => new HogeName(e.Name);
set => e.Name = value.ToString();
}
public void ExecFugaFuga() {
Console.WriteLine("{0}:{1}", Id, Name);
}
}
EFは遅延ロードやトラッキングのための情報を持ってるから元のインスタンスを活かす方向で