ふらっと C#,C♯,C#(初心者用) Part148
レス数が1000を超えています。これ以上書き込みはできません。
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カッコ悪すぎやろ
あれは小さい画面ではかっこよく見えるけど
デスクトップアプリだと間抜けに見える https://github.com/Kinnara/ModernWpf
Modern WPFもなんだかな
Vistaみたいな派手派手UIはやりすぎだけど、今どきのUIはシンプルすぎやな >>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はオブジェクト指向に対応してないと。
これですっきり理解できました。 IT掲示板群 ttp://x0000.net/forum.aspx?id=15
学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0
連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
4Dエンジン(画像有り)
ttp://x0000.net/topic.aspx?id=3677-0
matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0
ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0
SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0
PS malloc / free を実装してみた (C#)
ttp://up.x0000.net/files/TMallocTest.zip ネイティブアプリを作ってるのですが、
パスワードがかけられたファイルをオープンしたりしようとしています。
コンパイルされるからパスワードはコードにリテラルで書こうと思っています。
が、
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みたいな、高層階側ではどうしようもない事を上げられても困ると思う。 けんされいがいって何だろうと思って調べたんだが、素人目には良い仕組みに見えてしまった
ただ例外を前提にするなら、もはや例「内」のような気が Anders Hejlsbirgの検査例外に対する批判
https://www.artima.com/intv/handcuffs.html
検査例外は失敗、とっくの昔に結論出てる 高層側でどうしようもない例外が上がってきてるならそれは下層側が間違ってるだけでは >>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しちゃだめだって
ログ出力のような共通処理は集約例外ハンドラに任せる まず、大原則を覚えてください。
よほどのことがない限り、アプリケーションで try-catch を書いてはいけません。
もう一度繰り返します。
よほどのことがない限り、アプリケーションで try-catch を書いてはいけません。
もう一度(ry、すみませんしつこいですね^^。でもこれ、めちゃめちゃ重要なのです。
https://docs.microsoft.com/en-us/archive/blogs/nakama/net-part-1
賛同するかどうかは別だけど
これがMS推奨の定跡 >>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 例外が、って吠えてる・・・
正しい日本語を使いたまえ。 トーストとかポップアップヒントとかネットに転がってるサンプルプログラムを動かしても無反応です
ひょっとしてOS側で機能制限されてるのでしょうか?
一年前は普通に出てた気がするので
なお、コードはここ様とか参考にしました
https://www.ipentec.com/document/csharp-show-popup-message-on-tasktray >>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みたいにアクセスできないの? >>247
できるでしょ
Programクラスってのが何を指してるかよく分からんが
https://dotnetfiddle.net/yyKYKz ごめん、本当にできた
ネームスペースが違ってただけだった、ほんとすまんかった 最近プロジェクト変わって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
テレビチューナーボードを買って来て付ければ良いと思うよ >>298
良い質問ですね
https://gigazine.net/news/20071203_first_web_server/
によると
>日本最初のホームページは1992年9月30日にできたらしい。
ので1992年は平成4年。
つまり昭和の日本ではホームページを見れなかった事になりますね。 因みに、DOOMも初期バージョンは
NEXTやで
macosの最初のFPS「マラソン」は残念Soft 舌足らずですみません
テロップとはデスクトップ画面上にメッセージを流す仕組みです
最適な技術は経験不足で不明です
フォームアプリでも出来るかと思うのですが味気ない文字が出てくるだけなのは寂しいと
jqueryの下りは出来合いのカッコいいモジュールを見ているので、ああいうのがあると捗るなと思った次第です >>304
だったらC#じゃなくてまずHTMLとCSSからやれよ
それからJavaScriptをやってp5.jsちゃうか?
https://i.imgur.com/CerH8PS.gif
たぶん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
ありがとうございます
わかりましたー 濃淡グラフを描くときに使用するような
カラースケールを選択するコントロールはありますか
やはり自作するのでしょうか >>413
コントロール全般で使えるようなものは無いし特定のコントロールでも多分無い
カラースケールのルール作りさえ考えたら自分ですぐ作れるよな
https://stackoverrun.com/ja/q/1024222 自作するか別の方法を考えることにします
ありがとうございました カラースケールって何のことかと思ったらただのグラデーションのことか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
(表現の同一性比較であって計算式の同一性比較ではない) http://wildpie.はてなぶろぐ.com/entry/2014/09/29/174449 小姑みたいな話と思われるかもしれないけど、同一と等価は厳密に区別した方がいいよ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); >>457
LINQ使うやり方
var list =
from a in switchStatus
from b in switchStatus
from c in switchStatus
select (a, b, c);
https://ideone.com/F8LWa8 C#にpandasやdplyrのようなデータフレームライブラリないですか?わざわざ独自クラス定義して箱作ってデータ受けるのだるいんですが、便利な手法あれば教えて下さい ないよ
データ分析系は一時期MSがC#で整備しようとしてたけど結局諦めてJava系技術を使ってねということになり、それ以来何も動きはない まあ良くも悪くもMS頼みだね
なんでも.NETにしようとしていた時代は終わり、今ではMSの戦略上はC#は数ある言語の一つでしかなく、.NETはそれを動かすためのランタイムでしかない Javaに引け目を感じてるならともかく
Javaの牙城を乗り越えて・・と思ったけど
Winサーバーでお世話になってるOracleさんには迷惑かけるわけにもいかず中途半端な感じ >>463-464
なるほど、C#好きなんでその辺残念です。
>>467
詳しく!! 今時の開発は、ツールやフレームワークが先行して、それを使うにはなんの言語が必要なのか、で言語を決めるから、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は遅延ロードやトラッキングのための情報を持ってるから元のインスタンスを活かす方向で >>504-505
ID変わったと思うけど>>503です
ありがとうございます 勉強になりました 自作クラスで
https://docs.unity3d.com/ja/current/ScriptReference/Vector2.Index_operator.html
の様な機能を実装するにはどうすればよいでしょうか?
例えば
MyClass mc=new MyClass();
mc[0]=10;
mc[1]=5;
という感じです。
MyClassがdouble[2]を継承していれば実現できる気がするのですが、そんなことができるとは思えません?
thisに特別な使い方があるでしょうか?
Listなんかもインスタンスが配列的に取り扱えているので、何かしらの方法があるのだとは思いますが、
その方法がわかりません。 なぜC#はプロパティやメソッドの最初の文字が大文字なんだ?? >>510
俺はオプション切ったけど
うざいから
アレ真似するとさ
マイクロソフトのメソッドと文体が同じになって見難いんだよね privateなメソッドは小文字から、publicなら大文字から始めるのが俺のジャスティス .NET Frameworkの設計責任者だったヘルスバーグの趣味だろ
Dephiもそうだし >>512
それやるとMSのとバッティングすんじゃん
ウゼーよ
お前が作ったテストしてあるかどうかもよくわからんのと
MS様のが同列にでてくんのかよ MFCみたいにクラス全部Cはじまりみたいな方が良かったという主張?
全然今のほうが良いけど… MS以外のライブラリ使ったらもう大混乱だねえ
そういやUnityEngineってガイドラインだとプロパティもパスカルケースってあるんだけど
標準の実装だとプロパティはキャメルケースになってるのなんなんだろな >>510
それは問題設定が逆
むしろ何でキャメルみたいな自然言語の表現として違和感がある表記を
private以上のスコープの識別子に採用する必要があったの?
普通はそう考えるでしょ
ライブラリの識別子と俺コードの区別が〜なんて論外だよねw
何で区別する必要あんの
>>518
ごめんそれ俺ですw
でもハンガリアンは濫用するとかならず破綻する悪いマナーだけど
フィールドにプリフィクス付けるとか用途を限定すればそれなりに有用だと思うよ 変数の最初にアンダーバー(_)入れるの嫌い。
なにか理由があってそうしてるのだろうけど、それを推測しないといけないからそれを考えるのに無駄に時間を損する。 プロパティーのバッキングフィールドを_でプリフィクスするのは合理的だと思う
基本的に積極的に触るものではないから、インテリセンスを「汚染」しないような名前がいいよね dotnetのソースコードも専らインスタンスフィールドは_プレフィックスだし
推測が必要なほど珍しいもんでもないと思うがなあ できることが少ないほどどうでもいいことにこだわる例
C#自体の制約でもないんだから他でやれ >>525
区別できるのとできないのとじゃできたほうがいいじゃん 大して役立つわけでもない区別のために無駄な制約が付くくらいなら、区別する必要はないだろう。
お前にとっては大事かもしれないが他の人にとっては下らないことだというだけのことでしょ。 >>528
えー、マイクロソフトのメソッドと混じっちゃうのに?
すげー見難いよ 混じっていいじゃん
メソッドの作者が誰かなんて呼び出す側考慮する内容じゃない
その理論で行けば全てのライブラリが固有の記法を持つ必要がある
namespaceで十分事足りる >>529
MSだけじゃなくてサードパーティーの大抵のライブラリでもpublicなやつは頭大文字じゃね? >>532
だからそれと自分のと分けたい
MSとその他の会社のが同じ傾向なのはむしろ良い 自分だけm_でもつけて警告全部抑制してんでしょ?
それでいいじゃん
一緒に仕事はしたくないけど閉じた中でやる分には勝手にやってくれ
ライブラリとMS標準は同じ記法で自分だけ違うとか成立するわけ無いじゃん
ライブラリ作成者どうするんだよw C#は別だけどメジャーな他の言語で大文字で始まったらpublicでそれ以外はprivateみたいな
クソ言語がいくつもある というか、コーディング規約あるだろ。
混じっていいんだよ。むしろ混じるべきなんだよ。 >>538
C#はMSのコーディング規約に則っている人が多いような気がする >>539
VSに矯正されるしな。
標準のコーディング規約が一番いいよ。 労力を欠けずに静的解析可能なデフォルトのコーディング規約に従っとくのが定石
逆に言うと静的解析不可のコーディング規約は害悪 >>538
嫌だよ
だってメリット一つもないじゃん
単に見難いだけ
プロジェクトで作成したメソッドとMSやその他のメソッドは違う記述で書いておいた方が普通に見やすいだろ
逆に何で同じにしたいの?
何かメリットある? そもそもprivateとpublicの記述を変えてまで分けるメリットこそわからん
クラス内で呼び出すときに違いなんて皆無だしそもそも意識する必要はない
外部からはそもそもpublicしかideで候補に出ないだろ
ガチで記述分ける意味なんてないだろ
言っちゃ悪いけどアメ公って設計センス皆無だと思うよ
オブジェクト指向も意味ないし
ハンガリアン考えたアホもあいつらだし
どっちかっていうと
グローバルかスタティックか
メンバかローカルか引数か
わかったほうがいいと思うけど
あいつらバカだからそういうのでないし 統一された規約で見やすい
同じプロジェクト内に異なる規約に基づいたコードが混じるほうが見にくい
まぁ見やすい見にくいなんてものは感覚的なとこも大きいから人それぞれ
で、君はこのスレに限って言えば確実に少数派ってだけよ >>547
そういう人が目立つから、多いように感じるだけでは? >>546
え?単に統一したいってだけ?
バカじゃん using namespaceして混ざってますとか
まさかそんな話じゃ無いよね static変数であれば _ を接頭に付けるようにしてる どのLinter使ってる?
わたしSonarAnalyzer、FxCop、StyleCopしか知らない >>542
揃ってないと他者が君のコードを読みにくくなることが理解できないのか? TicTok禁止で日本のプログラマは腕の見せ所と言われていますが
日本から出て来ないのは何故ですか 難しい話がしたい人はStackOverflowにでも行ってください この板キチガイ比率多いよな
プログラムできそうにもない奴も多いけど何のために来てスレ見て書き込むんだろう ふらっと立ち寄った牛丼にちょっぴり甘酸っぱいアレを求めて using system;
みたいなのってnamespace{}の中に書く人と外に書く人がいるのだがどっちでも効果変わらないの? >>567
名前欄にちゃんと書かないと0点ですよ。
usingはこれ以降は省略して使いますよという宣言を指示しているものであって
namespace{}はこれから定義する中身をこの名前で宣言しますので使ってくださいねと書くものです
中に書いた場合は入れ子になるので
外で使う時に探せないとエラーです。 >>568
ありがとうございます。名前欄に書いてみました。これでいいのでしょうか? >>567
visualstudioが答え教えてくれてる 初心者ですが
form1の中に全部書くのが正しいスタイルなんでしょうか?
クラスを分けて書いたところエラーが出て呼び出せなかったりしてハマったので すっごく単純なテストプログラムとかならばデフォルトフォームにすべてのコードを
書くのもありっちゃありだけど、一応それっぽく書くならばフォームのコードには
UIを更新するものだけにして、ロジック部分は別クラスにするのが普通かな
まぁ、趣味で自分しかソースを見ない、1ファイルが数千ステップでも理解できるって
いうならばクラスを切らなくても出来る事は多いけど >>572
正しい書き方なんか気にする前になんでエラーになっているか検証と反省した方がいい
クラス分けたのが原因じゃなくコードが間違っているのが原因なんだから visual studio 2019 でListViewのHideSelectingプロパティをTrueにしても、しばしばFalseになります
ViewはDetail,OwnerDrawとAllowDropはTrueにしてます
対処法などあるでしょうか? >>577
なるほど
ツールの不安定動作の解消でなく、プログラムでの対応ですね
これでいきます
ありがとうございました ネットワーク越し等で受け取った画像ファイルをストレージに保存することなくそのまま外部の画像ビューアで開きたいのですが、
その画像ビューアがPipe受け取りをサポートしておらず、パスによるファイル指定でしか画像を開けない場合にでも受け渡す方法はないでしょうか?
NamedPipeやMemory-mapped fileあたりを利用すればメモリ上のオブジェクトのパス指定で別プロセスに開かせるということも可能にならないでしょうか? >>580
その外部の画像ビューアの仕様の問題でC#関係ないな NamedPipeやMemory-mapped fileあたりを利用すればいけるんじゃね Windowsだとそういうの無理じゃなかったっけ
Linuxならそれこそ名前付きパイプで可能だけど 前も同じ質問があった気が。
良く知らないので適当だけど、仮想ドライブが存在する以上
何かをファイルシステム上のファイルに見せかけることは少なくとも技術的には
可能なはずだけど、普通のユーザーモードのプログラムには無理なんじゃないの? Shell Namespace Extensionでフォルダっぽく見せることはできるが
ファイルAPIからアクセスできなかった気がする
あとはNASエミュレートしてマウントするとか
どうやっても実装コストに見合わない気がするのでテンポラリに保存したら File.Replaceでバックアップファイル要らんとき
nullを指定しろって書いてあるけど嘘だよね?
.net 4.8 でやってるんだが わかた
上書きされるファイルが元々無いと例外でるようね var x = list.Find(x => x.プロパティ1 == 条件).プロパティ;
こんなコードで、listに条件に合う要素がない場合、エラーになりますが、スマートにnullチェックして上記に繋げる書き方教えて下さい! list.FirstOrDefault(aaa)?.Foo そもそもどうなればいいのかが明示されてな気がするんだおじさんには >>592
nullだったら0,そうでなければリストから条件のあう最初の要素を取り出す感じです!
0を入れる処理は書いてませんが、エレガントに書きたいのです Client Profileの使用は非推奨になったのでしょうか?
WPFプロジェクトを新規で作成するときの選択肢でCP二つ省かれています 非推奨というか4.5でClientProfile自体がなくなった てんでけてんでけてんでけてんでけてんでけ
てんでけてんでけてんでけてんでけてんでけ
ナイトライダー
陰謀と、破壊と、犯罪の渦巻く現代に甦る、正義の騎士。
ドリームカー・ナイト2000と共に、法の目を逃れる犯罪者たちを追う、
若きヒーロー、マイケル・ナイト。人は彼をナイトライダーと呼ぶ。
デボン・シャイアー……マイケル・ナイトの、よき理解者。
ボニー・バストー……ナイト2000製作チームの中心人物。
巨大な悪に立ち向かう、現代の騎士ナイトライダー。
今日、彼を待ち受ける者は、果たして誰か…? C#でキューを使った非同期処理でよく使われるライブラリ的なのってありますか?
pythonで言うところのceleryのようなのを想像してます ないよ
MS的には分散処理にはAzureを使わせてロックインしたいので、そういうポータブルな抽象化レイヤみたいなものは無い >>598
バックグラウンドジョブ管理はHang Fire >>598
TPLじゃだめなん?Hangfireとか? 「Hang Fire C#」で検索しても日本語の情報がほぼ無かった
よくご存知ですねみなさん >>607
スペース開け空けずにhangfireで検索したらそこそこ出てきました コントロールのDataGredView(大きな)を変更するともたもたするので DataGredViewを変数定義して、コントロールをコピー(代入)して変更して戻すと滅茶速いのだが使い方正しいですか? 表の更新を止めてからデータ変更して
再開すればいい はよ.NET5こねぇかな
いい加減C#7.3飽きてきた Xamarinが5.0に入らないのがすごく悲しい。 >>613
え、Xamarin に未来はない、ってこと? MAUIがXamarin.Formsの発展形(の予定)でしょ Maui Wowie 言う dynamite だったんじゃ >>614
6.0に入る。
ブログあんまみんな読んでないの? そのブログで5に入ると言ってて現に裏切られたのに何言ってるんだ
猛スピードで迷走を続ける今の.NETに2022年の11月なんて何も決まってないのと一緒だし、何も当てにならんよ 間に合うアテにはならんが、間に合わないことはアテになるからな。 初詣...中止
オリンピック...中止
中央リニア...中止
ってもし2-3年前に言ってたら基地外扱いだよな Xamarin好きなのに、今のグダっぷりはちょっとなーって思い続けてる。
というか、WindowsアプリをもっとXamarin使って作れるようにすりゃいいのに。 こういうストーカー気質の連中の何が気持ち悪いって、
そういう自分を少しも変だと思ってないところだな
気色悪すぎ。
一生どっかに引きこもっててほしい で、ツラ見たら絶対にガリヲタかデブヲタだよこういう連中w ヤれるならヤりたいのは多数派だろ
でもそれは失礼でセクハラだからそろそろ止めような 雑談したいなら他行けよ
板のローカルルールすら読めないのか vtableってインスタンス一つ一つに持たせる意味あるの?
インスタンスに持たせるのはvtableへのポインタのみで十分な気がするんだけど、なぜ態々virtualやabstractの数だけインスタンスサイズを増やすのか
これがあるから何万個と生成するclassで仮想関数実装したくないんだよなぁ なんでアップデートのたびにギガ単位でダウンロードが発生するのか
実際全モジュールに修正入るほどの更新なんて無いだろ? >>636
Omnishapの方を最近はよく使うしRiderだってあるだろアスペか?
それにVSがC#しかワークロードないとでも? >>636
ガイジはママ以外と喋んな
お家のガスコンロで頭炙り上げてゴミ収集車に錐揉みダイブして新海面処分場に埋まってろ生ゴミ コスト削減だろうけどね。
ドキュメントが機械翻訳だけしか提供されなくなったりする、数年前からの流れだろうけど。 >>639
機械翻訳じゃないととても対応しきれないほどの量になってるからね…英語しかほとんど見てないけど。Oracleのドキュメントに触れたあとはdocsは非常に見やすくて助かるw >>633
インターフェースもメモリコスト掛かるの?
仮想関数はCPUコストが低い代わりにメモリコストが上がる
インターフェースはCPU命令が多い代わりにメモリコストが下がる
勝手にこういう認識だったが そもそもC#は各インスタンスは仮想関数テーブルへのポインタしか持ってない
お望み通りの実装なので多分633は誤爆 wpfで特定の領域に表示されているコントロールの表示を別のコントロールに切り替えたいのだが、Visibilityプロパティで表示/非表示を切り替えればよい? いいんじゃない?がっつりやるならPrismでリージョン使う >> 646
ありがとう
がっつりではないので、Visibilityプロパティ使うことにします 学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
VM + ASM を書いた (C#, DX) * x86 ではない!
simulationライブラリで純粋な関数式プログラミングをする
UIライブラリ (C#, 2D) を作ったよ
連続と離散を統一した!
4Dエンジン
matrixのライブラリ
ある強力なFor関数
SQLライブラリ
VM + ASM のダウンロード
ttp://up.x0000.net/files/TSimulang.zip .Net Framework 4.8は使わないほうがいいのでしょうか?
プロジェクトのプロパティの対象のフレームワークところに4.8が出て来ません >>649
VisualStudioインストーラーで個別のコンポーネントからインストール
VSの質問なんだからこれ以上はVSのスレで聞いてくれ 失礼しました。たしかにC#関係なかったですね
出来たのでありがとうございました 今度C#を使ったサービスをスタートさせるんだ
みんな応援してくれ sc start [C#で作ったサービス名]ってことですか? C#で作ったサービスじゃなくて
C#を使ったサービスなんだろ C#のこと調べてると、いまだに「VBでは・・・」と出てきてウザい
初歩を学んでいる人にとってはノイズでしかないので、ここ断ち切ったほうがC#にとってはプラスだ
ただこういうのは慣れてしまうので問題意識を持ち続けることも難しい >>659
そんなこともフィルタリングできないようでは無理だろ >>659
エクセルVBA使いの事もたまには思い出してあげて >>659
そのノイズがあることで学習に弊害があるのならただのバカだろうな >>659
しかしその問題を解決するブログが新たに立つとなぜか、スクリプト使った面倒臭い演出やアフィがやかましい構成になるという C#もNode.jsみたいに気軽にcppと連携したり出来ないものかねぇ C#はDllImportできるから余裕でしょ
変なグルーコード書かなくていいからC/C++をちゃんと使える人ならよほどNodeなんかよりよほど簡単だよ >>666
> C/C++をちゃんと使える人
その条件が厳しいのであって そんな奴はNodeなんかもっと無理だろう。
ただ、場合によってマーシャリング周りのケアが必要だったりするのは面倒だな。
C++/CLIにたいに簡単に混載アセンブリが作れるようになるといいんだが。 構造体とかの宣言そのまま使えればまだ楽なんだけどな 使いたいライブラリのポーティングを誰かが書いてくれてなきゃ面倒くさいのはどの言語も一緒や とあるWin32APIが使いたくて調べたら複雑な構造体。自分で書く気がしなかったのでNugetで調べたらあってそれを使ったな
仕事で使うわけじゃないし動けばいいレベルだったんで メソッドを式にするっていう言語機能は推奨されてるの?
=>これつかうやつ 正式に推奨されてる記述なんてどこにあるか知らんが普通に使うよ
最新のコードでも積極的に利用される 1行ですむ場合はよく使ってるね
コンストラクタとかプロパティとかでも 古くなって非推奨に変わるならともかく
後から追加した新機能が非推奨ってことは無いだろう 学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
VM + ASM を書いた (C#, DX) * x86 ではない!
simulationライブラリで純粋な関数式プログラミングをする
UIライブラリ (C#, 2D) を作ったよ
連続と離散を統一した!
4Dエンジン
matrixのライブラリ
ある強力なFor関数
SQLライブラリ
VM + ASM のダウンロード
ttp://up.x0000.net/files/TSimulang.zip >>672
LinQとラムダと組み合わせれば世界が変わる Linq分かりづらい上にパフォーマンスガタ落ちするから絶対使わない
これこそC++みたいに単なるマクロにして中身はforと同等って出来ないのかよ Linqが分かり難かったらいくつもの他言語に移植されたりしない 例えば微分積分がわかる人とそうでない人のようにラムダにも認知の境界線があるのかもしれないね
微積分を使った短いスマートな証明があったとして
微積分を知ってるとエレガントに見えるけど
知らない人にはちんぷんかんぷんだろう
微積分を使わない遠回りな証明があったとして
微積分を知ってるとなんでこんな回りくどいわかりにくい証明を書くんだと思うが
微積分を知らない人にとってはそれが唯一無二の最善の答えになる >>683
無理矢理小難しく賢ぶらなくていい
Linqなんて中身難しい事してないんだから分かりやすいか否かは英単語の習熟度に過ぎない >>680
単体で比べるとガタ落ちどころか天と地の差になりうるケースもある
ただしプログラム全体という広い森の中で特定の木の葉を見る意味はないし、そこがボトルネックになるなんて事は天文学的低確率だろう Linqが分からんっていうやつは、ラムダ式が分からんだけの気がする >>686
単なる確率じゃなくて適材適所
ものすごい回数ループする処理の中では1回あたりの処理時間はなるべく短い方が良いし、そうじゃないなら気にする必要は無い
ただそれだけ >>688
長いループや超頻繁に呼ばれる処理でLinq挟むプログラマがどれほどいるのかと言う点での確率
それで言うと天文学的よりは全然高かったな、すまん 俺も初めの頃はわけわからんし使わなくても処理できるやんって思ってた
使い慣れるとlinq無しでなんでC#使ってんの?ってくらいには必須機能になった
linqがあるからC#好きになれたまである 俺の場合はラムダ式がわからん、というよりどういうケースだとlinqで簡潔にさばけるか?がピンとこなかったのが大きいかな c#でLINQガンガン使った後に
stream使えないAndroid Javaやるとすっげーめんどくさくて途端に生産性落ちる ラムダ式とは言うけど無名関数を省略して読みやすくしてるだけだしな
本質が抽出されて見やすい えっAndroid Javaってstream使えないん? >>679
こういうの気にしだすとたかが文字列操作ですらヒープアロックが発生するC#は使えなくなるんだよなぁ
実際俺は仕事でしかC#使わなくなったわ
常駐レベルで使用するようなアプリはC++で作るし、そうじゃないものはElectronとかで作っちゃうな
C#はどちらにしても中途半端 パフォーマンス重視でもC++はねえな
RustかGoでしょ
Electronはクソ重いから論外 Linqわかりづらいか?
むしろ、だからC#使ってるって同意見。
ラムダもそう。
拡張メソッドも地味に便利よね。
Go使ってブラウザで操作する類のものもよく作るが、
小物にelectronは無いな。
巨大すぎるわ。 Rustって言われてる割にちゃんとした完成品を見たことがない
意識高い系がとりあえず言ってるだけって印象が完全に根付いてしまった >>695
hogeList.Select(x => x.Foo)
みたいなのがあったときに、このいきなり出てきた「x」って何?ってなるのは気持ちとしては分かる
色々簡略化された結果こう書けるんだってのが分かると気にならなくなる 複数次元の複雑なデータ構造触ればLinQのありがたみが分かるってもんよ 今のVisual StudioはC++で作るの非推奨だからC#で満足してるわ 流石によほどのことがない限りC/C++を捨てたりしないでしょ 昔々ifとgotoで自由にループを書いていた暗黒時代を経てよく使う特定ユースケースが、
・while
・until
・for(each)
に整理され抽象度が一段上がったのと同様、for(each)で自由に書いていたループ処理のうち特定ユースケースが、
・select
・where
・any
・contains
などに整理され抽象度が一段上がったのがLinq to Object。 Linqのselectは、SQLと違って個々のオブジェクトを返すわけじゃない点が使いづらいな
一体なんでこんな仕様になってるんだか・・・・ ループからシーケンス(列挙オブジェクト)という発想の転換は偉大だったと思うし、
その意味では一般にはほどんど評価されてないように思えるイテレーターは凄い発明だと思ったけど、
正直LINQに関してはそこまでの革新を今も感じないね。
クエリ式は特に読みづらいしねw イテレーターが凄い発想?
再帰なんて古代エジプトからあるだろ 学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
VM + ASM を書いた (C#, DX) * x86 ではない!
simulationライブラリで純粋な関数式プログラミングをする
UIライブラリ (C#, 2D) を作ったよ
連続と離散を統一した!
4Dエンジン
matrixのライブラリ
ある強力なFor関数
SQLライブラリ
VM + ASM のダウンロード
ttp://up.x0000.net/files/TSimulang.zip >>716
404 - Page not found >>717
消されたんかな?
.NETの例外処理 Part.1
https://web.archive.org/web/20190112010848/https://blogs.msdn.microsoft.com/nakama/2008/12/29/net-part-1/
エラーチェックの体系的な分類方法
https://web.archive.org/web/20190112010345/https://blogs.msdn.microsoft.com/nakama/2009/09/28/293/
↑のページに「.NET の例外処理 Part.1~4」と、「.NET と Java の例外処理の違い」のリンクがある アクセス修飾子のデフォがわかりにくい。
classだけだとpublicなのかprivateなのかわかりにくい。
そんなもんいつまでも覚えてられない。
現代人は忙しいのだ。 教えてください
VS Comunity2017使ってるのですが
インストールされてるC#のバージョンって何処見れば分かりますか?
switch文のcase条件を型でwhen句使って分岐できるから7.0以上だと思うけど
ちゃんと確認しておきたいので C#のバージョンとは
言語のバージョンなのか?
コンパイラのバージョンなのか?
.NETのバージョンなのか? >>723
なんでそのまま検索せずにここで聞くのか200字以上400字以内で教えてくれ あーそういうのがあるんだ、、、
言語かコンパイラだと思うけど
バージョンによって使える構文が違うでしょ?
それはコンパイラなのかな? ufcppでも見とけよ
M$の中の人だから嘘偽りはないと思う >>725
ビルドの詳細にあったわ
ありがとう
他の奴らは死ね 他のやつらは氏ねはひどいなあ
>>725はID変わったけど俺だぞ >>733
C#でどうなのか知らんけど、昔ながらのWindowsアプリの場合だと。
一つのアプリにはDLLやEXEが複数必要です。
ひとつのアプリを作るためにソリューションを使います。
ひとつのDLLやEXEを作るためにプロジェクトを使います。
したがって、ソリューションの中にはDLLやEXEの数だけプロジェクトがあります。
って感じでした。 荒らしには、答えない方がよい
検索すれば誰でも分かる .Net Core3.1のWinFormsってDataGridView無いのか・・・
まぁデスクトップアプリなら.NET Frameworkで不自由はないんだけどさ
さすがに.NET5ではこの辺も完備されるよね? .NET 5は.NET Coreがベースと聞いたので、.NET Coreをお薦めします。 .NET CoreでButtonが出てこなくなる症状に俺も遭遇したことある
そんなバカなと思ってその時はアプデしたら治ったけどButtonが出ないって英語でググったら解決方法色々出てたよ
もしDataGridViewが出ないでググって出てこないなら試してみると良いかもしれん ,net5 待ちで.net coreはやってないなー .NET Coreはデザイナにまだバグが残ってると思うけどそれ以外はできてるしな つかFormsを.NET5まで引っ張るのか?もう捨ててもいいだろ。 >>745
旧資産が多いからね。framework→.netの移行を機にユーザーの取りこぼしを少しでも防ぐために継続は仕方ないんじゃない? ノートPCで.net coreのデザイナ開くのに時間がかかって、一時的に応答なしになる(待つと開く)んだけど、俺だけ?
i7 8550U / メモリ16GB / SSD NVMe 512GBなんで、決してポンコツではないと思うんだけど。 >>748
マルチメディア系の依存性でグラボのドライバとサウンドドライバと相性とか
Web API使うネットアクセスしてるんなら通信速度かも? JavaでGUIプログラムを作るのは大変なのに、それを画期的に簡単にしている
WinFormsを喜んで捨てるようなM$じゃないと思うぞw
まああれは元をたどればDelphiなんだがw WinFormsってかWin32GUIの技術って覚えても他で応用効かないのがなぁ
GUIもHTMLで構築するのが最近の流れなだしC#もそうしてほしい
WPFもなんか違うし C++のGUIプログラムも簡単に作れたら良いな…… と言うか32bit時代は仕事にC++Builder本当に使ってたんだが
C#が出たんであっさりこれを捨てた WPFはバインドがもっと楽に書ければ良かったんだが WPFはGUIに動画流すつもりでもない限りいらんわ〜 FormsはVBゆずりのポトペタで素早くGUIアプリをでっち上げるのは
ほんとうに楽でいいんだけど、複雑になってくるとデザイナーで
編集するのが辛くなってくるし自動テストも面倒くさいな。 MVVMパターンは必ず適用しなければいけないものではないので、それが理解できなくとも、WPFはWinFormsと同じようなスタイルでもプログラミングができる。
なので、WinFormsを使っている人は、そのことを知らないか、またはWPFで用意されているコントロール群が貧弱だと思った(自作する気のない)人なのではないだろうか。
しかし、最新のWinUIでは用意されているコントロールが過去一で豊富になるようで脱WinFormsが加速するように思われます。 WPFってしばらく開発すら放置していたのとクソ重いのは治ったの? Windows 10の標準アプリをいくつか触って確認するといい。 WinUIってそんなのあるのか
UWPはどうなるんやw
っていうかWPFを使う気になれなかった理由の一つが
超絶高パフォーマンス(もちろん皮肉)をたたき出す保持モードのグラフィックだけど、
今度はそのあたりもうちょっと現実的な方法が用意されてるのかな
あと印刷関係も訳分からんかったよねw スマホとデスクトップで同じアプリが動く世界では。
スマホから印刷した場合とデスクトップから印刷した場合では、結果が違うの?
同じA4なのに?
ってなるから。
WYSIWYGは意味が無くなる。 これからもWindows GUI プログラミングを続けるつもりならXAML Controlls Galleryをインストールしておくと良いと思う。
様々なコントロールのサンプルが触れるかたちで見ることができる。
サンプルコードもWinFormsに近いスタイルで書かれていて、XAMLが絡むと難しくなると思っている人たちのもつ誤解も解けるだろう。 >>767
高速な描画が必要な用途にはDirectX使う前提じゃね?
だから標準には柔軟な保持モードを採用したんだろう。 WinFormsにWebBrowserControl貼り付けてUIはHTML/CSSで組むのがお勧め。 私もマルチプラットフォームという言葉に飛びついてきた人間ですが、結局のところ、それを求めるのはプログラマーであり、カスタマーではないことに気付きました。
カスタマーは最大限のユーザーエクスペリエンスを求めています。
つまり、それはどちらかというとネイティブなアプリであるということの方が近いわけです。
iOSを使っている人間は、Androidアプリが粗悪であろうとiOSアプリで最大限の体験ができればそれで良いのです。
であれば、やはりそれぞれにそれぞれのものを作り上げることが必要です。
GUIプログラミングにおいては、マルチプラットフォームという言葉は弱者の縋る藁でしかありません。
カスタマー・ファースト、それぞれに最高のものを。
さあ、マルチプラットフォームを捨てよう。 >>776
VSCodeはマルチプラットフォームだけど大成功してるじゃん >>777
VSCodeってプラットフォーム間でどの程度ソース共通なの? TextboxをバインドしてプロパティでCustomValidationを使用して入力値をチェックしたいのだが、バリデーションのメソッドが呼ばれない。原因わかる人いませんか?
・xaml
<TextBox Text="{Binding HogeProp}" />
・プロパティ
[CustomValidation(typeof(MyValidator), "ValidateFunc")]
public string HogeProp { get; set; }
・バリデーションのメソッド
public class MyValidator
{
public static ValidationResult ValidateFunc(string value, ValidationContext context) { ・・・ } XamlのTextBoxにValidatorもbindしろよ バリデーションはIDataErrorInfoとかINotifyDataErrorInfoで検索したらいい ルー語ってよくネタ扱いされるけど
日本語の判別しにくい同音異義語とか1文字の単語とかを英単語にして話すと凄い聞き取りやすくなる ILMERGEってインストールしただけでビルド時にキチンと動いてくれてるんだけどなんでだろ?
exeとdll指定して叩く必要あるって聞いてたんだけど DataGridViewにてコードから追加されたRowをその都度捕捉することは出来ないのでしょうか?
RowsAddedイベントではe.RowIndexなどを利用しても今追加されたRowを特定する事は出来なさそうですが DataGridついでに質問なんだけど、バインドするclassの中にList<string>なメンバーもあってそれもどうにか表に表示させたいんだけどどうすればいい?
Detailは使いたくないので可能な限りColumnの中に入れたいんだが >>797
onehotencodingをヒントにせよ 外道だろうけどComboBoxCellにしてDataSourceにそのListをバインドする
コンテキストメニューから追加削除できるようにする
ただしアイテムテキストを編集する場合はちょっと細工が必要だった気がする >>797
DataGridViewじゃなくてDataGrid?
まあどっちにしても独自のカラム作ればいけんじゃね WinFormsなのかWPF/UWPなのかでも話が違ってきそうな C#だけvisual studioに贔屓されててずるいわ public int Value1 { get; set; }
のみならず中身書くときでも自動フィールド生成させる方法ってないの? >>805>>806
private int _value1;
getsetの中身書くときはこうやってバッキングフィールド作ってるんだがそれを自動生成してもらいたいって事
_value1指定じゃなく下みたいに書ければ最高なんだが
public int Value1
{
get => AutoField;
set
{
if (value == AutoField) return;
AutoField = value;
OnPropertyChanged(AutoField);
}
} C#で行けてるダッシュボードライブラリありますか? >>810
バッキングフィールドのコーディングを省ける
別のフィールドを参照するミスを無くせる code generatorが来たら自分で生成するコード書いときゃ実現できる話かな? 暗黙的に変数が定義されちゃうのはよくないと思うが
getterとsetterから見えれば十分というケースも多いことは確かなので
int Hoge
{
var bf;
get {retun bf;}
set {bf = value;}
}
こういう特殊なローカル変数が定義できたら便利かもしれないね ちなみに、VBはインスタンスと同じ寿命のローカル変数が定義できるけど
>>814みたいなことはやっぱりできなかったはず。 未確認飛行のブログでも同じことが触れられてたな
↓の一番下
ttps://ufcpp.net/blog/2020/4/pickuproslyn0408/
この記事見る限りだと将来的にも仕様が追加されることはなさそう そんなどうでもいい機能よりさきに構造体のprivateコンストラクタよこせや まあSourceGeneratorでやってくれって話だな まあマクロが実装されればこれに限らずあらゆる点は解決されるんだがなぁ >>819
SourceGeneratorじゃなくて? >>820
SourceGeneratorって要するにマクロでしょ 全然違うよw
あれをマクロというのはかなり無理がある
コンパイラをコードから機械語に変換するだけのマクロでしょとか言う? C++のtemplateを要するにマクロでしょ、で済ませる?
generatorはtemplateより多彩なことができるのにマクロに含まれるの? 構文解析の結果受けてソース生成できる
付随されてるコメントの内容すら拾えるから今回みたいな例なら目的のプロパティに特定のコメント付いてたらソース生成するとかもできる
まぁ特定の属性が付いてたら、って条件のほうが良いとは思うけど 最終的にどんな実装になるかわからんが高機能な分、扱いはめんどくさくなると思うよ
defineマクロみたいなのを想像してたらたぶんこんな複雑なの求めてねーよ!ってなると思う
コピペに近いようなコードを数百個単位で記述しなきゃならんような状況なら大活躍すると思う 久々にC#がトレンド入り記念ぱぴこ
【C#】インターフェイスの利点が理解できない人は「インターフェイスには3つのタイプがある」ことを理解しよう
https://qiita.com/yutorisan/items/d28386f168f2f3ab166d >>828
それぞれ異なるレイヤーのものを3つまとめて併記されるとモヤるな
>「インターフェイスには目的に応じて3つのタイプがある」
>1. 疎結合を目的としたインターフェイス
>2. クラスの機能を保証することを目的としたインターフェイス
>3. クラスへの安全なアクセスを提供することを目的としたインターフェイス 記事読まずに(笑)批判するけど、たぶん初心者にいきなり抽象論で説法するタイプの記事なんだろうね
初心者は抽象論の記事なんか読まなくていいよw
時間の無駄だから
抽象論は後回しにして実際の使われ方を見た方が100倍効率的
抽象は具象からの演繹なんで具象をよく知ってる人の方が理解が早いし、
具象を知らない状態で抽象が理解できないとしても恥じることない
これも抽象論だけど >>830
自分自身への見事なブーメランになってるぞw >>829
3つのタイプというから語弊があるけど、3つの目的(重なることもある)と読み替えれば、そんなに悪くないと思う 実際のところインターフェース独自の利点なんて無限に引っ付けられるってところだけじゃないの?
継承と共通の利点なら沢山あるけどさ インターフェイスとか必要ないと確信してる
マジで要らない >>832
抽象度の異なるものをごちゃ混ぜにしても平気な神経って結構やばいで
1はインターフェースの目的(存在意義)
2はその目的を実現するための実装ルール
3はインターフェースを活用したパターンの一例
意図したのかはわからないけど抽象度の高い順に並んでる
下位の目的は上位の目的を満たした上でなければ成り立たないので
重なることがあるんじゃなくて常に重なってる そんなことないと思うよw
抽象論好きな人は疎結合だの依存性がどうのにやたらこだわるけど(理論として「美しい」からねw)
実際の現場ではそんな目的でも何でもなくむしろどーでもいいことの方が多い。 >>828
インターフェースはインターフェースはいいとしても、その例で示してるクラスは記事削除できるような設計が単におかしいとしか思わなかった その記事書いた奴は基底クラスとか継承とか理解してないとしか思えん >>839
継承は単なる実装共有の手段であり、インターフェイスを定義するものではない、というかぶっちゃけ無くてもいい
っていうのが今時のオブジェクト指向なんで、そこは的外れ 抽象的な話を理解できない人でもインターフェースを使えば無駄な依存性が途切れてビルドが速くなると言えばそれはイイネと取り組んでくれる
それを聞いてもまだ拒否するやつは長いビルド中に休憩してるサボリ魔とみなしてよい C++なら分かるけどC#で長いビルド時間って何百万行のコード?
10万行程度だと一瞬なんだけどなあ インターフェース使わないと実行時のオーバーヘッドが減って速くなると言えばそれはイイネと取り組んでくれる
かもw 見てみたけど、1と2は一緒だし、3は間違えてるってところだろう 自分の頭で考えて3つにまとめたことは評価できるけど中身がね・・・
>なんと、読み手が勝手に人の書いた記事を消せてしまいます。
消せてないからw
>自分の記事に自分でLGTMできちゃいます。
LGTMできちゃってないからw
>なぜこのような問題が起きるのかというと、ズバリ「QiitaPostクラスにアクセスするための適切なインターフェイスが定義されていないから」に尽きると思います。
問題起きてないからw おじさんLTCMしか知らん
20年以上前に破綻したけど webアプリの勉強がてらwinformsで作ったアプリをwebアプリに置き換えてみようかと思ったんですけどASP.NETって需要あるのかな ASP.NETと言っても色々ある
国内でASP.NETというと一般的には WebForms (Classic ASP.NET)のことを指すことが多いけど、これは.NET5で廃止される
そして今後はASP.NET Coreに一本化されるんだけど、国内ではほとんど使われていない >>850
ほとんど使われていないってどこ情報?そしてASP.NET MVCについて全く触れていないのはなぜ? winformsで勉強してもASP.NETとは殆ど関係無いからなぁ
webアプリ作りたいなら、素直にPHPなどのサーバーサイド側の言語と
フロントエンド側のjavascript等を勉強した方がいいと思う
windowsアプリもelectronなどで作った方が今は良いかも知れない windowsのデスクトップアプリをelectronはデプロイが面倒でのう 安全性等、ライトウエイト言語勢に比べてASP.Net coreにアドバンテージがある点も多くあるけどさ
ただ、今から始めるもんじゃないわ ASP.NET MVCやASP.NET Core MVCは
Webアプリのフレームワークとしてはオーソドックスでわかりやすいので
C#理解してる人がWebアプリの作り方を学ぶ目的なら一番いい
業務アプリとしての需要はそこそこあるし
他言語でWebアプリ作る場合でも基本は同じだから無駄にはならないよ
他の言語、特にJavaScriptとかスクリプト系の言語を
C#と同じレベルで使えるならそっちで学ぶのもあり 世界的に見ると業務システムでのASP.NET(Core含む)の採用は実はかなり多いと聞いたことがあるがソースがねえんだよな
WEB系では複雑怪奇なドメインを安全確実に実装するという需要が少ないからかスクリプト言語ばっかり プログラミングの発想に
マイクロソフトも使ってる大麻
そのオイルのユーザーレビュー特集 http://shop-rakuten-ch.2chblog.jp/archives/6406884.html
こちらは1万円で買える Windows10搭載ノートパソコン
http://shop-rakuten-ch.2chblog.jp/archives/7030035.html
フリーウェアやシェアウェア、キャリアアップなどにご利用ください
日本も解禁しましょう C#は言語としては好きだけどASP.NET COREはそんなに好きじゃない
JavaのJSFのようなエンタープライズフレームワークが欲しい >>861
全体的に嫌いというわけではなくビューエンジンが微妙ってカンジだな
部分ビューの非同期更新とか面倒くさいじゃん JSFってJavaBeans使うんだっけ。
プロパティが反映されなくて調べまくったらgetterのスペルミスというオチだった思い出。 面倒とかいってるから日本は貧乏くさいウェブサイトしかないのかな >>855
いやASP.NETなんかより遥かに需要も利用もされているよ
pythonとか言う人いるけどwebで開発だと微妙だしな
node.jsでexpressとかもあるけど、まぁPHPが一番無難かと思うよ 何回も出た話題なのかもしれんけどASP.NET とCOREの違いがわかりません
COREは上位互換なの? >>877
ASP.NET Coreは.NET Coreへの移行にあわせて作り直した新しいWebフレームワーク
WebFormsは完全に廃止されているので、業務系にとっては名前が似ているだけで概念レベルから根本的に全くの別物と思っておけばよい
なおASP.NET MVCをベースにしてはいるがMVCとも互換性はない >>877
ASP.NET
.NETベースのWebフレームワーク・関連技術の総称
ASP.NET Web Forms
Winformsを使ったデスクトップ開発に近い感覚でWebアプリを作れるようにしたフレームワーク
ビジュアルデザイナでFormを作ってそのFormに紐づくコードビハインドにイベントハンドラを書いていくスタイル
一般的なWebフレームワークとは違って独特
ASP.NET MVC
Railsを参考に作られたMVCアーキテクチャのWebフレームワーク
他言語の一般的なWebフレームワークと類似してるがWindows/IIS上でしか動かない
ASP.NET Core MVC
ASP.NET MVCを.NET Coreベースで作り直してマルチプラットフォーム化したもの
Windows/IIS上だけでなく、LinuxやmacOS、NginxやApache上でも動く
MVCとCore MVCの細かい違いはリファレンス見て
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/choose-aspnet-framework?view=aspnetcore-3.1 >>880 >>882
どうもありがとうございます
Apacheで動かそうとしたら.NET CORE一択なんですね Apacheをリバースプロキシに使うのは、何気にASP.Net Coreとの相性がいいな
特にフリーウエアでクッキーベースのロードバランサを作れるのは珍しい リバースプロキシ・ロードバランサーと言えば、Nginx 昨日までthis付ける派だったんだけど
新しくベクトル系の構造体作ったらthis this thisthis...って並んでて発狂しそうになった
xの一文字を指定する為にthis.の五文字打つのが凄まじく無駄な気がしてならない
悔い改めるべきなのかな… >>882
この乱立したゴミフレームワークひでえな 合理性は?と自問して答えられないようなのはただの思い込みだろうね。
明示的にthisを付けるべき場面がそうそうあると思えない >>888
this.と打つ分だけ仕事してる感が増す
これは結構大きいと思う >>889
数万行のコード保守すること考えたら5文字の違いは大きいよな!
…つまらんことにこだわるのは他で成果が出せないからだ コードクリーンアップで全箇所にthisを自動でつけるのできなかったっけ?
this消すはできた気がするけど >>885
ASP.Net Coreのサイトでロードバランシングしたかったら無料版じゃできないぜ 初めて.NETCoreで作ったんだけどビルドすると単純なコンソールアプリなのにexeのファイルサイズが170KBくらいあるのはどういうこと? >>900
ランタイムにあたる部分を内包しているから
無駄が多いとか思ってもMSがそう作っているんだからどうしようもない 最近覗いてみたソースがこんな風に都度新しく生成して返すようになってたんだけどさ
return new float3(l.x + r.x, l.y + r.y,...)
こういうのって直接フィールド書き換えるよりパフォーマンス良かったりするの? 生成したオブジェクトをどう使うか分からないから回答できません。
次の方どうぞ 値型だしどうせコピーするんだからどっちでもええやろ float3とやらがイミュータブルなclassとして設計されているんじゃないか? >>902
汎用化できる余地のためにそうしてるのでは?
値型という前提で話すと、確かにフィールド直接書き換えの方がコピー1回分減るはず(float x 3程度のサイズなら無視できるパフォーマンス差だけど)
ただしそれだとそのフィールド専用のメソッドになってしまう =を多用するような数学的な型で事情があって参照型にする必要があるなら
まともな頭の人ならイミュータブルにするよね 初学者です
visual studio 2019 comunityでコンソールアプリをつくって勉強しています
製品A 大部品α 小部品T
製品B 大部品β 小部品U
製品A 大部品β 小部品V
・・・
という対応表を読み込み、製品Aを入力したら1行目と3行目を返すプログラムを考えています
この例では列が3ですが、対象によっては2〜5など変わり
列も年齢だったり役職だったり地名だったりするため、Class Person のageやnameのような型を固定出来ません
List<List<string>>とstring型の入れ子Listを作りデータを入れることは出来たのですが
勉強でLinqを使おうとしたのですが、うまくとりだせずスタックしています
すべての行をstring連結して一次元配列にし、Containで対象を取り出し、
出力時に結合文字をsplitする、というやり方以外の方法を教えてください
ありがとうございます >>910
用途にもよるけど
とりあえず読み込む対象に応じた型を用意したらいいんじゃないの?
部品表を読み込むなら部品用の型に
従業員表を読み込むなら従業員用の型にする >>910
class 製品
{
public string 製品名;
public string 大部品;
public string 小部品;
public override string ToString() => $"{製品名} {大部品} {小部品}";
}
var item = new 製品();
item.製品名 = "製品A";
List<製品> list = new List<製品>();
list.Add(item);
製品名が"製品A"のものを取り出したいときはList<製品> listに対して
var result = list.Where(x => x.製品名 == "製品A").ToArray(); //これで製品Aだけの配列が返ってくる
プログラミング自体初心者なのであれば、Linqより先にforeach (var x in list) if (x.製品名 == "製品A") Console.WriteLine(x.ToString());
というループ+if文による原始的な判別の方から入ったほうが分かりやすいと思う
Linqはラムダ式やら遅延評価やら初心者には理解しづらい概念が多いから >>911
>>912
こんな時間にもかかわらずありがとうございます
やはりclass製品と対象にあったクラスを設計するのが王道なのですね
具体のプログラム指針まで示して頂き感動しました
早速ためしてみようとおもいます なんか優しい流れになっててワロタw
いや、5chもせっかく人が激減したんだからこういうのが普通の場所になってほしいよねそろそろ >>910
同じくビギナーだけど、こんなことがしたいんじゃないかって思った
目的:
1.表の1列目データを使って検索して、マッチした行データの1個目と3個目を返す
2.列数の異なった表に対応したい
3.多次元のListでLINQを使いたい
違ってたらすんません
//2次元のListを作る(適当)
var list = new List<List<string>>();
list.Add(new List<string> { "A", "a", "1" });
list.Add(new List<string> { "B", "b", "2" });
list.Add(new List<string> { "C", "c", "3" });
Console.Write("製品名を入力してください(A,B,Cのいずれか):");
var searchWord = Console.ReadLine();
var result = list.Where(x => x[0] == searchWord).Select(x => x);
foreach (var item in result)
{
Console.WriteLine("製品名" + item[0] + " 小部品" + item[2]);
} >>915
名前は出さんけどほかの言語のスレはくだらねー煽りあいしてるとこ結構ある こんなのもあるよね。
1) var data = new object[] { new { model = "製品A", parts1 = "大部品", parts2 = "小部品" } ... 以下略
2) var CLASS = new Reflection.DynamicClass( ... ); CLASS.AddProperty( "[プロパティ名]", [プロパティの型] ); var inst = CLASS.CreateInstane(); inst.[プロパティ名] = ... 以下略
1 の方はそこでしか使わない単純なデータ型にたまに使うかな。
2 は面倒くさすぎるから滅多にやらない。
ビギナーのうちにいろいろ失敗しておくと後が楽。かも。 >>917
シェルスクリプトスレ、Pythonスレ、VBAスレ。
CやC++も酷い時がある。
共通項を理解しておくと技術や人の選定に役立つ 時間がかかってしまいましたが作ることができました
楽しいですね、ありがとうございます
>>916
Linqはそのとおりです
1列目だけでなく、他の列でも引っかかるようにするため、
foreachを使ったバージョンでは全体検索
Linqを使ったバージョンではresult1とresult2を用意し、それぞれs.製品 b.部品・・・といった形で対応しました
追加でお付き合いください
[1]class製品でプログラムを作った場合、csvやexcelなどからデータを取得する際、
List<string> rows = new List<string>();
foreach (var cell in currentRow.Cells("1")) // colmunA
{
rows.Add(cell.GetString());
}
製品.Add(new 製品(rows[0], rows[1], rows[2]));
といった形で取得しました
ネットのサンプルプログラムでは数データをコードに直接打っているものは見ましたが
//{製品.製品名="zzz",製品.大部品="yyy",製品.小部品="xxx"}というような
ループを使って取得する場合、itemのようなバッファは必須でしょうか?
[2]今作ったプログラムではclass製品に特化しているため、methodなどはList<製品>で作っています
<T>とすることで<製品>や<会社>などに対応出来るジェネリックという仕組みを知りましたが
classのメンバ変数は対応表ごとに作る必要がありますか?
>>918 の2の例が答えになるかとおもい調べています
読んで頂きありがとうございます >>920
>classのメンバ変数は対応表ごとに作る必要がありますか?
必要かもしれないし必要ないかもしれない
扱う対象と用途次第
ただ初心者なら最初から汎用的な実装を実現しようとせずに
めんどくさくてもまず冗長な実装をしてから
必要に応じて汎用化することを考えたほうがいい static string[] 製品列名 = new string[] { "製品名", "大部品", "小部品" };
Dictionary<string, string> ToMap(this List<string> row, string[] columnNames) => Enumerable.Range(0, columnNames.Length)
.ToDictionary(i => columnNames[i], i => row[i])
foreach(var 製品 in rows.Select(r => r.ToMap(製品列名))) {
Console.Write(製品["製品名"]);
Console.Write(製品["大部品"]);
}
これでいいよ
ただのテーブル処理なのだから行をいちいちクラスにする必要はない
製品が特有の振る舞いを持ち始めたらクラスにすればいい >>923
辞書をExpandoObjectにすれば完璧だね
IEnumerable<List<string>> rows = MyParser.Parse(src);
var query = rows.Select(row => row.ToDynamic("ProductName", "Part1", "Part2"));
foreach(var x in query) WriteLine($"{x.ProductName}, {x.Part1}, {x.Part2}"); 行ごとに文字列出力してる時点で特有の振る舞いしてる なんか質問と回答が微妙に噛み合ってないような気もするけど
正直質問者さんが結局何が聞きたいのか何度読んでも読み取れないので何も言えんw >>918,923,925 は俺こんなテク知ってるぜ、すげーだろって言うガキでしょ
初心者スレではマジ邪魔 基本をしっかりしてからとのこと承知いたしました
辞書については当初考えたのですが、重複あり得るため棄却しました
身に余るご助言につきましてもキーワードを手がかりに勉強をしています
出発点のわたしの質問がずれていたり、仕様が不明瞭なため
みなさまには様々斟酌いただいてしまい申し訳ございませんでした
この度は大変勉強になりました
ありがとうございました >>931
初心者が使うのかよw
そもそも>>924が言うように見辛いし >>928
なんか変なのいるよね
何で初心者スレでそんなの書くんだよ
ってクソ
早くくたばれよな >>934
> 目おかしんじゃないの
お前は頭が…ww お前らそんなとこでムキになるなよ
エネルギーの無駄 >>923
List<string>を対象とした拡張メソッドをラムダ式で書いたものですか
メソッドの内容は引数の配列をkey、List<string>をvalueとするDictionaryの生成
rows.Select(r => r.ToMap(製品列名))
の部分で入れ子になったList<string>を1つずつToMapでDictionaryに変換していく
なるほどー
面白かったです ショートカットキーの中にはvisual studioのCtrl + K, Ctrl + Dのように、特定のキーと就職キーを押した後に更に押したキーで判定するものがあるけど、winformsでどう実装したらいいのかな?
検索してもよくあるControl+キー一回分のしかヒットしない…… >>941
ToolStripMenuItemsを継承してサクッとできるだろ...と思ったけど
ちょっとやってみた感じ意外とハードル高そうw
いい感じで出来たら是非シェアして欲しい >>941
「C# キー同時押し」でググれば出てくるように見えるが?
特定のキーと修飾キーの「後にさらに押したキー」じゃなく単純に同時押しならKeyDownイベントでWinAPIのGetKeyboardStateかGetKeyStateを使ってキーボードの状態を参照 ctrl k d みたいなタイプのショートカットキー使ったこと無いんでしょ
こういうタイプみるようになったの割と最近だと思うから Rx使ってシンプルに実装してるの見たことあるがどこで見たのかは忘れた
モードの状態遷移を管理しないといけないから少し面倒だよね
>>948
Visual Studio用語ではchordとかkey chord >>947
AltはあったけどCtrlってあったっけ? >>952
.NETになってからのVisual Studioにはあったような気がする >>946みたいなショートカットはemacsとかそれに影響を受けたプログラムではよく見るね。
Microsoftのアプリで使ってたかどうかは知らんが。 20年前からよくみる機能だったなら俺の知識不足だ
ここ10年くらいでいろんなアプリで見るようになったなぁという感覚だったから ToolStripMenuItemに実装するのがベストだと思うけどやっぱりこっちはハードル高いな。
どうやったらいいかさっぱり分からん。
Form自身にショートカットのリストを持たせるのは割と簡単にできた 難しいんだなこのショートカット
タイマーでどうにかなるかなあ
ありがとう 客が入れたいっつーなら仕方ないけど
こんな操作一般的じゃないし
ショートカットキーまで覚えて押してるやつアホだろって思うし
ライブラリについてない機能だとやりたくねぇなって思う >>957
初出がいつかなんぞどうでもよくて
よく見る機能だったかどうか?なんだけど本気で言ってる? >>960
お前が無知なだけ
emacsとかbriefとか知らんのだろ
馬鹿は黙ってろよ おじさんしか分からんと思うけど河合奈保子は消息不明らしいw 僕、最近英語が読めるようになりました。
英語は最近できたものですよね? emacsに入ってりゃよく見る機能に分類されるんか
せめてofficeやadobe製品に入ってるレベルだと思ってたよ 初心者向けC#スレでemacsでイキる老害
早めにくたばればいいのにw 5chは老害の巣窟ですよ
子供は他所で遊んだ方が良いですよ 昔からあるでしょ
昔はguiなんて無かったしメニューも無かったし
機能を増やすにはそうならざるを得なかった
マウス操作が当たり前の世代の人には判らんかも 話の前提がWindowsアプリなのかそれ以外も含むのか明確にしておかないと話が混乱するだけ > せめてofficeやadobe製品に入ってるレベルだと思ってたよ
って言う流れなのでGUI以前とかの昔の話をされても困る 突然後付けでOfficeとか言い始めた馬鹿
Windowsができる前からあるのに
低レベルの知識で知ったかして後付けの言い訳をするとか
最初に書いたように、
「馬鹿は黙っていればいいのに」 自分もいいオッサンだけど、「emacs知らんのか?」とか、恥ずかしくて口が裂けても言えんわ。
しまいには「JUNET知らんのか?」「パンチカード知らんのか?」とか言いそう。
こういう老害は、リアルでも「俺の若い頃は〜」とか「今の若いもんは〜」とか言ってるんだろうな。 ID変えて必死に言い訳する馬鹿
元の書き込みはこれだからな
↓
946 デフォルトの名無しさん[sage] 2020/09/21(月) 16:22:28.33 ID:fotjvOj5
ctrl k d みたいなタイプのショートカットキー使ったこと無いんでしょ
こういうタイプみるようになったの割と最近だと思うから いつからあるかないかなんて話してないっつってんのに…
よく見るの?一般的だったの?様々なアプリに搭載されてたの?
そんな広まってる機能がなんでライブラリ等々でサポートされて無くて実装例を探さなきゃならないの? 無知蒙昧で幼稚な輩は自分基準だから、
自分が始めて知った時=一般に使われ始めた時
なのだろうね。 くだらないマウント合戦やる連中はこの重複スレと一緒に沈んどけ >>978
わざとか?それともマジでボケてんのか?もとのレスは >>941 だ、ドアホ もういいでしょ。
全部>>944が悪い
建前論としてはC#の開発環境はVSだけじゃないが実態としてC#のスレで
VSのショートカットのシステムを知らない人が偉そうなこと言っちゃうのはかなり滑稽
元はそういう話だよね
起源は何かとかどれだけ一般的かとかは関係がない >>983
いや、そういうキーの組合せは最近のものだ!と知ったから始めた頭の弱い人が出てきたから変になったのでしょ >>985
>>983の言う通り「初心者用」のC#スレで昔から使われてるとかイキって虚しくね? このスレは元々ワッチョイ有り148を立てるときのミスがそのまま使われてしまった物です
続きはお好きな方へどうぞ
ワッチョイ無し
ふらっと C#,C♯,C#(初心者用) Part141
https://mevius.5ch.net/test/read.cgi/tech/1544838367/
ワッチョイ有り
ふらっと C#,C♯,C#(初心者用) Part148
https://mevius.5ch.net/test/read.cgi/tech/1590578921/ このスレは間違って立てられたもので立てた本人が「立て直しお願いします」って書いていて本来落とすべきスレ
C#の質問は>>989のスレでいいけどレスバトルの続きはマ板でどうぞ wpfで画面起動時Loaded?に最小化ボタンを無効化する方法を教えて下さい
起動後、特定のプロパティ変更で有効化したいです。 >>991
うろ覚えだけど、API叩かないとダメなんじゃなかったっけ? Windows標準の動作を破壊するようなことは枠なしウインドウでやるかな WPFのアプリってウィンドウの左上隅ダブルクリックで閉じない? メソッドの呼び出し側に自動でsummaryのコメントを付ける機能ってない? new Window().Show();
しただけのウィンドウなら閉じる
後はアプリケーションの作りこみ次第 このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 120日 23時間 12分 18秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。