ふらっと C#,C♯,C#(初心者用) Part131 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2017/09/08(金) 18:12:11.06ID:Ej7G00WU
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part130
https://mevius.2ch.net/test/read.cgi/tech/1500327645/
■関連スレ
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1492843013/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
2017/09/29(金) 19:29:35.92ID:ASjioBld
自分で便利な拡張メソッドやカスタムコントロール作ったんですが、いろいろなプロジェクトで参照したい場合dllファイルにするしかないんですか?
できればdllファイルを使用せずに参照追加したいのですが、できないのでしょうか?
2017/09/29(金) 19:34:42.63ID:5bNcT9xj
プロジェクト参照
2017/09/29(金) 19:49:14.80ID:L7twK2Cs
>>556
NuGetパッケージ化すれば?中身はdllだけど
なんでdllは嫌なの?
2017/09/29(金) 19:49:44.01ID:0RETi72f
>>556
EXEでもプロジェクトから参照出来るけど、プロジェクト分割してDLL化した方がその後楽になると思う
2017/09/29(金) 19:56:55.95ID:k8cuEG9P
>>556
ソースがあるのなら
using (名前空間) で取り込んでしまえばいいだけでは
2017/09/29(金) 20:23:16.47ID:ASjioBld
>>557
参照したいものはクラスライブラリで作成しましたが、参照の追加→プロジェクトを見ても何もないんですよね

>>559
大きいものならそれでいいのですが、わずか200行くらいのものなので・・・
2017/09/29(金) 20:24:19.41ID:f2TxCfjK
>>556
運用を考えてない雑魚の疑問

作成物Aと作成物Bと
共通dllの作成物Sがあったとして

作成物Bには不具合があって
使用している共通dllの作成物Sを修正しました

このとき作成物Aもリビルドすんの?

お前が言ってる共通ソースで運用すると過去に作ったもの全リビルド
誰にも金もらえないわ
客に納めた最終納品物と違う物できるわ
正直ヤバイ
企業だと100個や200個じゃすまへんで
2017/09/29(金) 20:30:58.17ID:k8cuEG9P
>>561
ソリューション->追加->既存のプロジェクト
をやってから
2017/09/29(金) 20:37:34.12ID:YWIP/X75
前もプロジェクト参照知らずにobjフォルダのバイナリを直接参照して
何かトラブってる人おったな
2017/09/30(土) 00:57:22.13ID:BaHp707U
nuget挙げてるやつが一人しかいないことに驚いたわ
2017/09/30(土) 07:45:43.46ID:gi2C/W9N
入れ子になったオブジェクトのListをファイルとして保存、読み込みするのに、
バイナリファイルにして保存、読み込みしていたのですが、List数が千近くになると、
読み込みに5秒以上かかるようになってしまったので、高速化したいと思ってます。

調べてみるとDataContractSerializerがいいかなーとも思ったのですが、
DataMemberAttribute.Orderプロパティを設定していないと、メンバの順番が
数値やアルファベット順になるため、逆シリアル化するときに、正しくできないですよね?
メンバ数が多いので1つ1つ今のコードに設定するのもかなり苦行なんですが、
何かいい方法はないものでしょうか?
2017/09/30(土) 07:54:58.14ID:BaHp707U
>>566
DB使えよ
2017/09/30(土) 08:30:00.41ID:soKv7w/a
>>566
MessagePack for C# いいよ爆速だよ
2017/09/30(土) 08:52:23.73ID:9JH7+33b
>>566
JSON.NETでいいよ
たかが1000件くらいテキストでも楽勝
BinaryFormatterとか昔からあるシリアライザは遅いので有名
2017/09/30(土) 09:03:00.42ID:B9VscmwP
>>566
> 数値やアルファベット順になるため、逆シリアル化するときに、正しくできないですよね?

大丈夫なはずだけどね。
2017/09/30(土) 09:05:50.60ID:B9VscmwP
自動実装プロパティとインスタンス変数の使い分けを教えてくれ。拙者には違いがわからぬ。
2017/09/30(土) 09:26:10.67ID:Np6DtGQS
基本的にpublic/protectedである"外に見せる"ものはフィールドでは書かない
2017/09/30(土) 09:26:41.66ID:soKv7w/a
外部に公開するのは基本プロパティでOK

複数プロジェクト環境だとメンバ変数からプロパティに変更すると
参照している側もビルドしなくちゃいけなくなる
2017/09/30(土) 09:42:51.44ID:B9VscmwP
もう、インスタンス変数は全部自動実装プロパティで良いんじゃないの?
コーディングの負担も{get;set;}だけだし。
2017/09/30(土) 10:45:34.67ID:Np6DtGQS
refで渡せないからInterlockedとかで困るんよ
2017/09/30(土) 12:04:04.74ID:B9VscmwP
>>575
そんなん使わないでget; set;の中でlockしとけば良いんじゃないの?
自動実装じゃできないけど。
2017/09/30(土) 13:48:17.11ID:Q01PrR7m
>>565
>>558
2017/09/30(土) 13:53:25.73ID:Q01PrR7m
>>565
>>558
nuget使うとver管理が逆に面倒になることもあるから
自分で管理したほうがいいかも
2017/09/30(土) 14:04:53.11ID:B9VscmwP
>>556
VS2017(VS2015以降?)には共有プロジェクトと言うのがある。
ソリューションに菱餅みたいなアイコンでプロジェクトが追加されて
他のプロジェクトから共有プロジェクトとして参照できる。
2017/09/30(土) 14:11:11.97ID:kOdc4YYr
>>578
最新getで動かなくなるよね
2017/09/30(土) 16:08:26.95ID:0VHr/jMd
nugetはlockないの
2017/09/30(土) 19:49:16.97ID:+pzyKNCv
console.WriteLineとconsole.Writeて何が違う?
2017/09/30(土) 19:55:11.12ID:++3Es+oD
Lineは改行される
2017/09/30(土) 23:27:46.64ID:TdF+hKVD
>>578
プライベートNuGetリポジトリのことやろあほか
2017/09/30(土) 23:34:38.68ID:+8+f7Kzi
>>584
なに言ってんだ?
その話以外何があるんだ?
自分だけならプライベートリポジトリ使う意味が薄い

会社とかで数人以上なら意味があるけど自分だけで使うなら管理コストが増えるだけ
2017/09/30(土) 23:37:55.27ID:9JH7+33b
自分のところで作ったものも含めて完全にNuGetで管理するのは
自社サービスの会社でない限り現実的ではないわな
2017/09/30(土) 23:39:59.32ID:+8+f7Kzi
DLLが嫌って言ってるんだから普通にソリューションにプロジェクトをインポートするだけでいい
それを知らないから質問してきたんだろ?
2017/10/01(日) 00:43:39.59ID:ly6P0KLu
フラットなのかシャープなのか
スレタイ
2017/10/01(日) 06:51:54.07ID:4KAT4caf
>>587
それだとDLLになるでしょ
2017/10/01(日) 07:38:59.49ID:t00k+6e7
>>585
NuGetパッケージ化したことのない人がこれです
2017/10/01(日) 14:55:40.54ID:vfm/Btvq
WPFわけわかんねぇええええええええええええええええええええ
動的に配置すんのめんどくせえええええええええええええ
なんじゃこれええええええええええええええええ

はぁスッキリした
Formの森に帰る・・・
2017/10/01(日) 18:47:48.34ID:qGSPhC6b
おつおつ
2017/10/01(日) 18:50:37.49ID:9SrqGqLT
普通にやると面倒だから
自分のやりやすいようにヘルパークラスでも作ればいいと思うよ
(MSの人はそういう考え方はないみたいだけど)

動的追加が身につけばそれを使えばいい
594デフォルトの名無しさん
垢版 |
2017/10/01(日) 20:18:09.95ID:jNXAXxmY
結局ASP.NET MVCはweb開発の市民権を得れたの?
2017/10/01(日) 20:30:42.79ID:tmbSNjLz
>>594
最近使ってる企業を見たことがない
しかもMVC自体が今後やって行けるのかどうか謎

asp.netシリーズは早く終息させたほうがいい
開発リソースの無駄
業務じゃASP.NET Coreはほとんど誰も使ってないんだから明日捨ててもほとんど支障がない
2017/10/01(日) 20:30:49.07ID:YXjJncWi
Web系にはね
ジャパニーズドカタには完全スルー
2017/10/01(日) 21:41:07.77ID:t00k+6e7
>>595
ただの引きこもりさんご苦労様です
2017/10/01(日) 21:41:52.69ID:gcWwR1VP
>>595
bitFlyer
はい論破
2017/10/01(日) 21:44:32.55ID:/bf2JU9V
雑談はマ板かせめて相談室でやれよ
2017/10/01(日) 22:26:04.18ID:tmbSNjLz
調べたぞ
IISのシェアが伸びてると言って喜んでるけど
欧米では下がってる

中国で小規模サイトが増えててそこでIISのシェアが高い
中国ではasp.netの技術者がそこそこいる
2017/10/02(月) 14:14:55.86ID:F+1BxcRZ
Windows FormでPictureBoxにプログラムで描画した画像の上に
マウスドラッグで選択範囲を表すラバーバンドを表示したいと思うんだけど、

(1) 画像はBitmapに描画してPictureBox.BAckgroundImageに設定。
ドラッグ時マウス移動で必要部分を無効化してPainrイベントでラバーバンドを描画

(2) 画像もラバーバンドもPaintイベントて描画。ドラッグ時マウス移動で必要部分を無効化する。

(3) 画像はPaintイベントて描画。ラバーバンドはドラッグ時にMouseMoveイベントでCreateGraphcs使って描画。
ラバーバンド描画時、ラバーバンドが描画される位置の画像をBitBltでBitmapにキャプチャーしておき、
ドラッグ時のマウス移動ごとに無効化する必要がないようにする。

これら3つの実装方法を思いつくけど、他にもっと簡単な方法あります?
DrawFocusRectはさすがにビジュアル的に却下で
2017/10/02(月) 14:54:34.78ID:j0IOuO2e
つボタン(範囲編集モードボタン)+トラックバー+テキストボックス
昔、得意気にそういうの作ったら

ああ、いや、数値でしか入力しないからw

って言われてボタン+トラックバーとテキストボックスになった
トラックバーはあんまり使わないらしい
2017/10/02(月) 15:07:15.72ID:g6h5uIo8
トラックバーってスライダーのことか?
2017/10/02(月) 15:19:06.18ID:j0IOuO2e
>>603
そうとも言う
2017/10/02(月) 15:32:48.09ID:g6h5uIo8
>>604
今まで一度も必要性を感じた事がない。
2017/10/02(月) 15:58:06.97ID:DB16o3JM
基底クラスでvirtual宣言したメソッドを
abstract付けた時のように派生クラスで必ずoverrideしないといけないようにする方法って、無いですかね?
2017/10/02(月) 16:36:15.51ID:rpp5PtTQ
>>606
abstractを付ける
必ずオーバーライドされるのに実装書く意味ないだろ?
superで呼びたいんなら代わりに別のprotectedメソッドにするか、
逆の発想でTemplateMethodパターンで差し替えたいところだけprotected abstractにして基底から呼べばいい
2017/10/02(月) 18:04:51.91ID:L+gIrVvB
継承は悪
2017/10/03(火) 07:22:33.28ID:ObXIbUik
C#やるならCなんて絶対にやっちゃダメだろ

十中八九手続き型プログラム書き始める
2017/10/03(火) 08:27:32.02ID:40an6g8d
>>609
cのポインタの概念を理解出来ないヤツがc#のオブジェクトを扱うと。
以下省略致します。
2017/10/03(火) 08:42:33.72ID:8vSQUt7l
別に問題ないやろ
2017/10/03(火) 08:48:00.46ID:WSVxY9HA
せめてC++くらいはやっとけ
2017/10/03(火) 09:16:05.26ID:40an6g8d
>>611
c#の変数はnewしなきゃいけないと思い込んてるヤツが少なからず居て、newした直後に別のインスタンスを代入とか。
参照と中身の区別の曖昧なやつ多すぎ。
2017/10/03(火) 09:18:07.47ID:eY/q0sas
>>613
それはC関係ないわ
c#理解してないだけ
2017/10/03(火) 09:24:35.82ID:40an6g8d
>>614
結構居るぞ。
cのポインタの概念がわかってりゃありえん。
2017/10/03(火) 09:34:53.80ID:3pqnorgz
いや、違う  ただのバカだ
2017/10/03(火) 09:36:26.96ID:C1bISep1
おまえがな
2017/10/03(火) 09:51:52.72ID:tK4uic5q
>615
それは、
・cのポインタの概念を理解していれば
・c#の参照の概念を理解していれば

が等価じゃないの?

なんにせよ個人の理解力不足で、cを先にの理由にはならなくない?
2017/10/03(火) 09:52:06.38ID:3UnO7l2m
>>613
インスタンスの概念にポインタの理解が必須とか本当にポインタやインスタンスの概念理解していないのはわかる
2017/10/03(火) 09:54:28.45ID:3pqnorgz
Cやったやつが こうに違いないみたいな思い込みしてんだから
そいつ自体が証明してんだよな
2017/10/03(火) 09:59:37.01ID:eY/q0sas
>>615
ただのバカです
2017/10/03(火) 10:01:30.91ID:+1Uci9uD
おまえがな
2017/10/03(火) 10:36:15.57ID:40an6g8d
>>618-619
お前ら、枝葉末節に拘りすぎじゃのう。
もっと森を見ろよな。
2017/10/03(火) 10:42:44.41ID:3pqnorgz
まあ、いまさら言い繕ったってなぁ
2017/10/03(火) 10:49:35.60ID:40an6g8d
物事の上っ面しか見えないお前らにとってc言語は害悪でしか無いのは認めようw
2017/10/03(火) 11:42:19.03ID:sQNA0cCL
要領を得ない例を挙げて「真意がわからないのか」というバカ
2017/10/03(火) 12:14:14.43ID:t6jmh8jv
またアルツハイマー患者の繰り言が始まった。

どうでもいいけど、もともとの話は、入門者がいきなりC#みたいな今時の言語から始めるより
一旦Cを経由した方が回り道のように思えて結局近道なんじゃないかって話だ。

いつもの馬鹿の「老害ガー、俺スゲー」っていう意味不明な被害妄想と
その裏返しの自己陶酔の開陳、みたいな間抜けな話じゃないよ
2017/10/03(火) 12:19:42.20ID:ffaQ93cm
まあ、大抵のやつはポインタでつっかえて終了確定だから
c#のがええよ
そのうちでかいメモリ扱ってるうちにポインタ的要素は理解できるっしょ
2017/10/03(火) 12:44:31.07ID:3pqnorgz
>>625
上っ面の認識で間違った人が言ってもなぁ
2017/10/03(火) 12:50:17.91ID:eY/q0sas
>>627
cわかる俺スゲー
2017/10/03(火) 12:56:03.36ID:xe3IBVNg
ポインタ知らないと出来ないことってなに?
632デフォルトの名無しさん
垢版 |
2017/10/03(火) 13:11:42.49ID:SsPk+8PU
特にない。ハードウェアを知ることはプログラミングに関して必要なだけ
2017/10/03(火) 13:12:52.65ID:I5/niSoP
>>628
ポインターで挫折するようなやつは他の言語でも駄目だ。
cの入門書のポインターの説明もたいがいだがな。
2017/10/03(火) 13:43:05.12ID:ffaQ93cm
>>633
じゃ、お前、なんかうまい解説サイトでも作れよ
2017/10/03(火) 14:28:59.55ID:nMyv2Tqx
>>631
c# unsafeメソッドはむりぽ
2017/10/03(火) 14:39:24.69ID:tdeEXDBR
ポインターとかメモリアロケートの概念に関わらなくてもいいようにC#作ったのに
利用者の頭が進化しないと言語開発者が泣くわ
2017/10/03(火) 14:46:28.17ID:ffaQ93cm
>>636
見えなくしたぶん余計深刻になってる気がするわ
2017/10/03(火) 15:26:44.64ID:aqsVlxub
>>636
ポインタとメモリアロケーションは全く別物
まともなコード書きたければ
C#でもメモリアロケーションの理解は必須
2017/10/03(火) 15:29:43.94ID:kRn3xKyN
>>638
そのためにはcのような低レベルの言語の理解が必要なのだ。
2017/10/03(火) 15:31:08.16ID:ffaQ93cm
>>639
それが最初である必要はねーよ
2017/10/03(火) 15:40:30.50ID:kRn3xKyN
>>640
じゃ、初めての人にオススメは?
2017/10/03(火) 15:45:40.67ID:ffaQ93cm
>>641
c#
だって入門書があって
簡単に画面が表示できる言語っていつの間にかこれしかねーし
2017/10/03(火) 15:54:35.81ID:kRn3xKyN
>>642
そんなこたぁない
2017/10/03(火) 16:01:14.23ID:ffaQ93cm
>>643
理由を書けよ
育ちが悪いな
2017/10/03(火) 16:09:58.24ID:hqS0jqGV
むしろ
入門書が無くて
簡単に画面が表示出来ない言語を知りたい
一般的なプログラミング言語でそんなのあんの?
2017/10/03(火) 16:11:02.55ID:kRn3xKyN
>>644
テンプレートを使ってWinFormなりWPFで画面は簡単に出ました。そこから先で頓挫する。c#は覚えなきゃいけない概念が多すぎる。msdnは奇怪翻訳でわけわからんし。
2017/10/03(火) 16:17:01.64ID:ffaQ93cm
>>645
最近書籍買ってねーだろ
結構苦労しないと他言語でGUIって難しいぞ
2017/10/03(火) 16:19:31.18ID:ffaQ93cm
>>646
ああ、他言語そこまで行かないから

そこまでできたら後はぶっちゃけなんでもできるな
WPFはさわんなくていい
winform覚えてな
直接納品しなくても
ちょっとしたツール作るときに
絶対役に立つから
2017/10/03(火) 16:22:37.95ID:JXAYZM0w
横から失礼
c#の入門書はまだ新刊が結構出てるよ

内容見たらどの本もWPFはなかったことになっててwinformsの使い方が出てる
2017/10/03(火) 16:24:26.51ID:HQuRK9/k
>>648
c#をvb6のように使うのならそれで良いかもね。
2017/10/03(火) 16:25:05.66ID:hqS0jqGV
>>647
普通に考えてJavaとかな
SceneBuilderで簡単に作れる

それとGtkのバインドある言語とかね
Gladeあるから簡単だし
Qtなんかもっと簡単だろ

むしろお前はC#しか知らないんじゃないのか?
2017/10/03(火) 16:27:40.64ID:eY/q0sas
>>651
JavaのGUIだとwww
2017/10/03(火) 16:27:51.55ID:JXAYZM0w
c#は覚えることが多いというのは間違いじゃないです
cなんかと比べると多いです
クラスに始まり event delegate プロパティ インデクサ

そこからLinq ラムダ式 Task async/await パラレルといっぱい概念が出てくるので迷いがち

GUIにこだわらないならpythonでもやればいいと思います
2017/10/03(火) 16:29:12.54ID:hqS0jqGV
>>652
JavaFXな
Swingと違って全然まともだよ
2017/10/03(火) 16:34:15.08ID:JXAYZM0w
新規でjavaを覚えるとしたらandroidがらみか
仕事で使うためとかそんなのじゃないですか?

ホビーでjava使う人ってほとんど死滅したと思う
java単体の入門書も全然でてない
■ このスレッドは過去ログ倉庫に格納されています