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

■ このスレッドは過去ログ倉庫に格納されています
2017/07/18(火) 06:40:45.47ID:mH9qbH+m0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

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

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

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

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part129
http://mevius.2ch.net/test/read.cgi/tech/1497000961/

■関連スレ
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/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2017/08/05(土) 00:24:38.91ID:1UeI4N1k0
ヌルポ → ガッ
この流れの起源はなんですか?
2017/08/05(土) 00:26:50.64ID:BtyjozB4a
>>312
スレチ
javaの人に聞きなさい
2017/08/05(土) 00:30:34.65ID:LVyF9Gx2a
>>310
それはないと思うよw

っていうか。等価コードこうじゃなかったっけ?

if (a == null)
  result = null;
else if (result = a.xxx == null)
  result = b;
2017/08/05(土) 00:30:46.86ID:l55BpX17a
>>311
こういう初見で見てわからん気持ち悪いコード書く奴早く死ねって思う
一生一人だけでプログラム組んでろよって感じ
2017/08/05(土) 00:32:53.10ID:LVyF9Gx2a
>>315
いやいや、さすがに>>307の例は読めない自分を恥じなきゃダメ。
2017/08/05(土) 00:40:32.35ID:l55BpX17a
>>316
でも言語仕様を確認しなきゃ何やってるかわからないぜ
わざわざなんでこんな書き方するの?
気持ち悪い
2017/08/05(土) 00:49:24.41ID:7yvfOtT+0
>>317
同じものをを複数回かくことに疑問を持たないのは、センスがない
2017/08/05(土) 00:50:39.67ID:L80K1fJH0
>>314
違う。>>309で合ってる。
2017/08/05(土) 00:53:06.57ID:LVyF9Gx2a
>>319
ああ、そうだねw
ビール飲みながら適当にレスするとこうなる
>>316こんな偉そうなこと書いてるのに笑えるなw
2017/08/05(土) 01:01:23.26ID:jB/epMOsd
>>317
言語仕様を知らずにプログラミングできると思う頭をどうにかしろwww
2017/08/05(土) 01:07:52.25ID:l55BpX17a
>>320
だっせーな
ほら、間違えたじゃんバーカ
2017/08/05(土) 01:07:52.45ID:L80K1fJH0
>>317
よくある処理の割に記述が長くなるから、簡潔に記述出来るように追加された文法だし。
記述が減ればそれだけバグが入り込む余地が減るし、慣れれば等価コードより読みやすい。
2017/08/05(土) 01:09:00.48ID:l55BpX17a
>>323
それ、自分のことしか考えてないよね
素直にダサい
2017/08/05(土) 01:18:59.52ID:L80K1fJH0
>>324
ラムダ式や3項演算子も毛嫌いしてそう。
2017/08/05(土) 01:24:45.10ID:jB/epMOsd
>>324
お前varも認めないんだろ
2017/08/05(土) 01:27:34.97ID:vNOMYJ7x0
今時Accessとか使ってる奴いたんだ。

煽りじゃなくて割とまじで
2017/08/05(土) 02:25:47.56ID:a3wHtGnJ0
皆さんレスありがとうございます。

>>309
>>310
なるほど!
仮に>>307の式を合体演算子だけでやると、
a.xxxのnullはチェックできてもa自体のnullは検知できないから
aがnullだと例外になってしまうという事ですね、やっと理解できました
2017/08/05(土) 02:27:12.87ID:YGVZb4Ys0
C#ってわりかし言語仕様追加される方だと思うけど
C#2.0で頭止まってんの?
2017/08/05(土) 03:33:33.37ID:jB/epMOsd
こないだはASP.NETチームで、今度はNuGetチームがこの手の話題で炎上か
https://github.com/NuGet/NuGetGallery/pull/4437
2017/08/05(土) 08:28:33.27ID:d5W5Muf+M
自分が使う機能を他人が使えない方が悪いと考えるタイプの人間
自分が使えない機能を使う他人の方が悪いと考えるタイプの人間
どっちもどっちの気がするけど
チームや会社の成長や将来性を考えると前者の方がいいよね
後者が群れると互いの足の引っ張り合いになって永遠に停滞する
2017/08/05(土) 08:39:35.43ID:F87TSa+B0
>>331
役職の手前、後者。
でも、内心は前者って人も少なくないだろうな。

本音と建前だと
2017/08/05(土) 10:32:36.69ID:UPRRV420a
正直
result = a?.xxx ?? bは気持ち悪い
どのレベルが等価なのかよくわからないから

でも代案を聞かれるとわからない

result = ?a.xxx ?? b
result = a ? a.xxx : b
2017/08/05(土) 11:01:55.42ID:P20UcjsVM
notnullとoptionalはよ
2017/08/05(土) 11:08:03.88ID:UeASor4i0
原本がVS2005だから2005で開発してねとか、開発環境縛りで使いたくても使えない言語仕様多すぎて泣きそう
今2017年なのに・・・
2017/08/05(土) 11:20:19.76ID:POjfJmBG0
うちの親戚の子供がそうだった。
生まれたときからウォシュレット付きの洋式便所だったからウォシュレットがないところは嫌がるし、、
和式にしゃがむこともできない。たぶんボットン便所なんて怖がって近寄らない。
2017/08/05(土) 11:30:21.81ID:P20UcjsVM
そういう例えだと選ぶ方がワガママで悪いみたいなイメージだけど
企業が社員の移動に馬車を使わせてるようなものだと例えるとイメージが変わるね
2017/08/05(土) 11:40:50.92ID:QQbgaNKK0
>>327
普通にいるだろ
データベース自体の機能は無償のSQL-Server Expressとかでもいいけどレポート機能とかが便利らしい
2017/08/05(土) 11:43:09.69ID:YGVZb4Ys0
言語仕様は知らねー方がバカなんだよ
例えばExcelに入った商品リストの合計額調べるとき
・SUM関数使う
・セル1個ずつ選択して足す
・電卓で1個ずつ計算して記入する

どのレベルに合わせるべきかってことよ
SUM関数なんてExcel関数知らんとわからんやんセル一個ずつ足せって言うバカいるかって話
データがそもそもExcelじゃなくて紙ベースデータみたいなときはしゃーない電卓で計算するがの
2017/08/05(土) 12:12:37.78ID:FiPcVS8O0
>>307,309
より厳密には
result = ((a != null) ? a.xxx : null) ?? b;
と等価。三項演算子使わないとこうかな?(よく確かめてない)
if(a != null)
{
var temp = a.Value;
if( temp == null)
{
result = b;
}else{
result = temp;
}
}else{
result = b;
}

xxxがプロパティやメソッド呼び出しなら、複数回呼ぶと遅くなったり副作用があったりする可能性がある。
あと、スレッドセーフにも関わってくる
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/null-conditional-operators

MSDNにも書いてある
A?.B?.C?[0] ?? E
とかをパフォーマンスやスレッドセーフを考慮して妥当に展開すると十行では収まらないコードになる。
構造からの取り出しの場合同様の処理が連続する可能性も結構あってnullチェックで埋め尽くされるのでNull条件演算子は使えるなら使うべき
2017/08/05(土) 12:21:22.29ID:POjfJmBG0
>>337
理由があってそうしてるならしょうがないんじゃない?
坂道が多い長崎の住宅地は荷物を馬で運ぶことも多いとか。
2017/08/05(土) 13:33:46.87ID:QMwZUMGFa
使うには使うけどA?.Bという書式が不気味
先行した多言語があるからそれに合わせたんだから仕方ないが
c#が先にnullチェック演算子をきれいな形で実装できていれば…
2017/08/05(土) 13:49:49.32ID:yyPrM6Kja
そういうの、大昔の{}が見づらいみたいな思い込みに基づいた言い掛かりと同じだと思うよ
不気味てw
2017/08/05(土) 14:09:36.65ID:QMwZUMGFa
?演算子の後にドット演算子が来ているようだし

単体で?だと三項演算子とかぶるからMSは ?. と ?[ (?[ ] ではない)の二つを
null条件演算子と呼んでいる

充分気持ち悪い
2017/08/05(土) 14:11:58.38ID:QMwZUMGFa
?[ が演算子だとして残りの ] は何なのか?
2017/08/05(土) 17:33:38.81ID:irr7ncKbd
>>335
2005とかもうサポート切れてね?
2017/08/05(土) 18:41:13.40ID:JI4Kw2jEa
UI部をバージョン依存にして
中の処理をバージョン非依存とかに
する造りじゃないと駄目だな

同じc#で作ったものすら移行できないのは俺らのせいじゃなくて言語作ってる奴が馬鹿なんだから
2017/08/05(土) 20:00:04.83ID:pxuR0+Dw0
何言ってるのかさっぱり分からんが
多分俺らじゃなくて言語作ってる奴でもなくて347が馬鹿なんだと思う
2017/08/05(土) 20:02:18.61ID:JI4Kw2jEa
>>348
ああ、うん、早く死ねよ
2017/08/05(土) 20:04:55.97ID:jKU+//lw0
C#2.0で作ったプロジェクトとソースなら現行のものでビルドしたら問題なく動くんだが
初心者スレで間違った情報広められても困るし業界談義は他でやってもらえないかな
2017/08/05(土) 20:35:00.59ID:P20UcjsVM
2.0はラムダがないのが致命的だな
LINQライクなライブラリ書いたけどエレガントに記述できない
2017/08/05(土) 20:40:50.48ID:9lI3pOf8a
>>350
細かいこというと、VS2005の時代のプロジェクトはUAC対応のマニフェストが
自動生成されないので、たぶん単純に変換しただけではGUIアプリの場合は問題が出ると思う
2017/08/05(土) 20:45:43.72ID:JI4Kw2jEa
>>350
お前嘘つきじゃん
2017/08/05(土) 20:55:15.95ID:irr7ncKbd
>>350
問題ないかどうかは場合による
2017/08/05(土) 21:02:43.39ID:jKU+//lw0
>>352
ここを見て
http://dobon.net/vb/dotnet/system/asadmin.html
「管理者として自分自身を起動する」参考にして組んだことはあるけど
マニフェスト自動生成するのは知らなかったというか見てなかったw
2017/08/06(日) 13:00:00.86ID:BrCgX9l20
元MSだった奴がいってたけど

VS2010当初でも開発に2,000人関わってたらしいよ。


旧バージョンを使って次のバージョンを作っていたとか

VS2010でVS2015といった具合
357デフォルトの名無しさん (ワッチョイ f7f4-FEhw)
垢版 |
2017/08/06(日) 22:21:19.12ID:KuiVNrm90
SharpDevelopを使ってとあるソースを開いて、ビルドしたらNewtonsoft.Jsonが無いよ、と。

SharpDevelopに組み込まれてるNuGetでNewtonsoft.JsonをインストールしようとしたらNuGetが古過ぎてインストールできません、と。

NuGetコマンド単体の最新版を落としてNewtonsoft.Jsonパッケージを導入した。
でもビルドするとNewtonsoftっていうNamespase知りません、みたいなエラー(CS0246)に。

パッケージがGACに入ってる必要があるの?と思ってGacutil.exeを使おうとするも、Visual Studioにしか入ってないっぽい。
でも諸事情でVisual Studioはいま使えない。

何とかSharpDevelopでビルドを通したいんです。何が足らない || 間違ってるのでしょうか?
2017/08/06(日) 23:00:35.42ID:wBidTTBD0
単純にdllが参照されていないだけでは?
2017/08/06(日) 23:02:52.27ID:gMkMFbW8M
アセンブリロードのアルゴリズムってどっかに文書化されてたと思う
それ探して読んで一個一個ステップを確認すればいいんじゃないか
2017/08/07(月) 00:52:46.16ID:76ycnzjh0
ビルドオプションで、エラーメッセージを詳細に表示できないの?

そして、そのエラーメッセージで検索すれば?
2017/08/07(月) 11:23:39.74ID:JkTML+vTM
358の繰り返しになるけど
NuGet単体版ならプロジェクトがパッケージを自動的に参照とかしないだろうから
明示的に参照させる必要があると思うけど大丈夫?
2017/08/08(火) 19:51:55.76ID:sqi2YB040
Publicクラスの中にPublicクラスを定義しているソース見かけたんだけど、これって何の意味があるの?
2017/08/08(火) 20:37:03.55ID:huw00Yx4a
>>362
書いた人に聞かないと分からないでしょ

まあ、推測だけど、たぶんクラスAと一緒にしか使われない、
従属的なクラスBがあったとして、BをAの内部クラスにしたら
そういう従属的な関係が分かりやすくしたいという意図なんじゃないか。

たぶん今時の流儀じゃないと思うけど、.NET 1.0の時代からあるWindows Formなんか
そういうのいくつかあった気がする
364デフォルトの名無しさん (ワントンキン MM73-op1F)
垢版 |
2017/08/09(水) 11:25:35.60ID:eM0BjlR2M
Formクラス1つに対応するビジネスロジッククラス1つを作ること
0個でもだめだし2以上でもだめ

っていう頭のおかしいコーディング規約を押し付けてきたバカSEがいて
そのアホくさい制約を回避するために内部クラスを多用したことがある
2017/08/09(水) 12:15:14.19ID:RfXzvPKwM
>>364
formと紐付かないクラスを作ればよかったんじゃないの?
2017/08/09(水) 12:35:36.16ID:nKeLDL7B0
>>363
読み返してみたら確かに内部クラスは従属的な位置付けだわ、サンクス
2017/08/09(水) 12:47:34.22ID:eM0BjlR2M
>>365
だから作っちゃいけない規約なんだって
FormA LogicA
FormB LogicB
FormC LogicC
って風に最初からクラス構成が固定
なので内部クラスを使うしかなかった
2017/08/09(水) 13:00:01.19ID:MPlilw1qd
頭おかしいやつの下で働かなくちゃいけないなんて哀れだな
2017/08/09(水) 13:03:58.48ID:aEwDYdDeM
それを疑問に思わないレベルのバカPGばかり相手にしてるんだろうから仕方ない
PGの能力に全く期待しない前提なら悪くないルールだと思う
参考にさせてもらうわ
2017/08/09(水) 13:21:54.76ID:25dY/z/Na
>>366
あと、内部クラスって外側の非publicのメンバにもアクセスできるので
(当然インスタンスメンバの場合は参照握ってる必要があるけど)
publicにはしたくないけどある特定のクラスにだけアクセスを許したい、
っていう事情もあった可能性もあるね。
2017/08/09(水) 20:17:29.94ID:gdB1BRW90
>>367
Formの数しかクラスが存在し得ないとしたらたしかに頭おかしい規則だが、Applicationはどうしたの?
2017/08/09(水) 20:45:34.77ID:CWuob4yka
wpfのmodelファイルみたいに作って欲しいんちゃう?
2017/08/09(水) 21:35:29.81ID:AMRrv1DKM
何にせよ
「なんでそんな事するのか」をハッキリさせとかないと本末転倒になるな
ルール守るために余計に無駄なことしてたら
374デフォルトの名無しさん (ワッチョイ 9aea-J0Eq)
垢版 |
2017/08/10(木) 03:50:16.42ID:p+YoIwRr0
あるブランチの、あるブランチ(例えばmaster)との差分が
わかる方法ってないですかね?
今は別ディレクトリにクローンしてディレクトリの差分を見ています
375デフォルトの名無しさん (ワッチョイ 9aea-J0Eq)
垢版 |
2017/08/10(木) 03:51:33.59ID:p+YoIwRr0
>>374
誤爆しました。すみません
2017/08/11(金) 13:17:03.53ID:6/W84wqN0
あるファイルと削除しようとすると
「別のプロセスで使用されているため、プロセスはファイル XXXX' にアクセスできません。」と出ます。
vshost32.exe がファイルを掴んでいるので削除できないようです。

なのでVSを終了すれば削除はできます。
自分自身が掴んでいるファイルを削除するのはどうすればいいですか?
別にexeを作成して終了後に起動して削除するくらいしか思いつかないのですが・・・
2017/08/11(金) 14:04:52.87ID:es+zQmez0
>>376
「あるファイル」も状況もよくわからないが
プロパティからデバッグの項目開いて「Visual Studio ホスティング プロセスを有効にする」のチェックを外す
コード上で掴んだファイルがそのままとか言う話ならそのコード示して
2017/08/11(金) 17:15:57.26ID:Aa/k6vVq0
>>376
もし画像表示中に削除できない問題なら、ググれば色々やり方が見つかると思うよ
2017/08/11(金) 17:43:30.26ID:ppZy/8OZa
xmlとかxlsをusingで読み込んでdisposeだかreleaseだかしてない系?
2017/08/11(金) 18:38:14.54ID:es+zQmez0
>>378
それはこれだな
http://dobon.net/vb/dotnet/graphics/drawpicture2.html
ファイルパスを直接渡さなければいいのでストリームでなくてもバイト配列にしてもいい
わかりにくくなるが一行で済ませるには
(Image)new System.Drawing.ImageConverter().ConvertFrom(System.IO.File.ReadAllBytes(filename))とか
>>379
usingから外れると自動でDispose()されるから、それはC#と違う話じゃないかな
2017/08/11(金) 18:45:46.80ID:ppZy/8OZa
>>380
旧コードはされないらしい
また、クラスを作った奴がやる気なくてもusingで解放されないらしい
usingの自動解放は言語機能ではなく努力目標
2017/08/11(金) 19:52:36.07ID:XseWY9lE0
関係ないが、HttpClientも一時期話題になったよな
2017/08/11(金) 20:17:13.35ID:OJhNtZ6yM
クライアント側アプリでは一通りやりたいことできるようになったので、webアプリというか、サーバーサイド系に進みたいのですが、ASP.Netでお勧め書籍ありますか?
2017/08/11(金) 21:28:23.22ID:6EMGAntMa
なぜここで聞いた?
2017/08/11(金) 21:34:01.45ID:IamXCzdT0
>>381
usingが努力目標ってなんだそりゃ。usingはスコープを抜ける時に必ずDisposeを呼ぶだけ。
そのクラスのDisposeの実装に問題があるだけだろ。
2017/08/11(金) 21:37:53.60ID:wSoZciMN0
>>384
え?C#の話だとおもったんだけど違う?
2017/08/11(金) 21:50:24.05ID:6EMGAntMa
>>385
まあ、そういうことですよ
2017/08/11(金) 22:13:33.39ID:IamXCzdT0
>>383
ASP.NETとASP.NET MVCは別物なので注意。
今から勉強するなら、ASP.NET MVCの方。
2017/08/11(金) 22:22:31.29ID:nYdKnbI0M
今は非常に時期が悪いのでMVCすらお勧めできないよ
2017/08/11(金) 22:26:56.25ID:IamXCzdT0
>>387
usingさん濡れ衣。
2017/08/11(金) 22:30:44.53ID:6EMGAntMa
>>390
idisposeさんと共犯なので合わせ技で死刑
2017/08/11(金) 22:49:39.74ID:XseWY9lE0
>>388
ASP.NETとASP.NET Web Formsとを同一視してないかい?
2017/08/11(金) 22:53:50.57ID:nYt6U0do0
>>392
同じようなもんだろ
2017/08/11(金) 23:05:25.17ID:XseWY9lE0
>>393
いや全然ちげーよw
ASP.NETの中にMVCとWeb Forms(とその他諸々)が含まれるんだから
2017/08/11(金) 23:09:41.68ID:IamXCzdT0
>>392
ASP.NETだけだと、WebFormsを指す場合が多いからね。特に書籍。
補足として書いとくべきだったな。
2017/08/11(金) 23:14:24.88ID:XseWY9lE0
>>395
ASP.NET Core MVCの方にしか力入れてないけどね
あ、最近だと特にSignalRもか
2017/08/11(金) 23:14:52.52ID:QPma/SU3d
>>395
いつの時代の話だよ
2017/08/12(土) 04:55:15.59ID:mqOU9Lu00
>>388
ちょww 古い本買ってしまいましたぁー

情報ありがとう(>_<)
2017/08/12(土) 04:56:24.27ID:mqOU9Lu00
>>389
どのように時期がわるいのですか?
宜しければ業界背景とか教えてください
2017/08/12(土) 05:03:39.72ID:mqOU9Lu00
あ、ちなみに私は別業界の週末趣味プログラマで、あまりトレンドとかわからんのです
401デフォルトの名無しさん (アウアウカー Sac3-zcd+)
垢版 |
2017/08/12(土) 06:18:07.36ID:cSGImtaOa
ASPの話題なんでちょっと聞きたいんだけど、linuxサーバー用のwebアプリ作ろうと思ったら.net coreでやるのとjavaでやるのとどっちが敷居低いかな?昔javaでちょっとやってたらマッピングやらがえらい面倒だった記憶あるんだけど
2017/08/12(土) 06:23:29.36ID:lZqlh0rmM
JavaならSpring Boot使えば楽
.NET Coreは敷居とか気にするレベルの人が手を出しちゃダメ
2017/08/12(土) 10:17:36.21ID:tF3yiAv3M
>>399
今新しいのに移り変わったんだけど全然普及してない
OSSにいるライバル達が強すぎてびくともしてない
従来使ってた人が離れつつある

目新しさがないのが非常にまずい
今後新しいなにかを提案できなければ
早い時期に丸々消える可能性がある
2017/08/12(土) 10:35:14.70ID:L/rIKl2kM
>>403
なるほどですね。

しかし、本も買ってしまったし、一通りは知識として吸収しておこう。
2017/08/12(土) 11:44:11.27ID:QUYKn6+oM
結局、今Webアプリを構築するなら、何がベストなんでしょうか?

クライアント側はjavascript一択ですよね。
サーバ側が、自分はweb formで止まっています。
.net coreなるものを調べてみればいいんでしょうか?
2017/08/12(土) 11:46:52.46ID:GgO+n98Ld
>>403
.NET Standard2.0あたりを理由として持ち出すならまだしも、そんな理由かよwww
2017/08/12(土) 11:47:53.88ID:GgO+n98Ld
>>405
Webアプリで何をしたいの?言語はc#縛りなの?
2017/08/12(土) 11:49:32.71ID:P/Mf2N0c0
pythonだと思う
2017/08/12(土) 12:03:21.67ID:QUYKn6+oM
>>407
イントラ環境で、DBを絡めた様々な情報を提供したいです。
目的によってGridViewで表示したり、グラフで表示したり。

C#縛りではないですが、VS2008時代にゴリゴリ作った経験があるので一番馴染みがあります。
2017/08/12(土) 12:23:38.79ID:lZqlh0rmM
Node.jsとかでいいんじゃね
Coreも含めた今時のWebはWinFormsや昔のASP.NETとは全く思想が違ってて、コンポーネントというものが存在しない
MVC系なら何選ぼうが似たようなもんだから環境の整えやすさとかで選べばいいと思うよ
2017/08/12(土) 12:50:34.80ID:kxAFQxd/0
この前、Rubyとやったわ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況