ふらっと C#,C♯,C#(初心者用) Part130 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
「どんなにくだらない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 あ、>>304のPointクラスのコンストラクタ間違えた。
ま、分かるでしょ。 >>301
直し方分からんから俺も気になるレベルの無意味なレスしたのはすまん
pointの呼び方の直し方がわからんかった
>>304
の書き方でpoint呼べばいいのね つい最近C#を学習し始めた者です。
null演算子について質問させてください。
null条件演算子/合体演算子を解説しているサイトや書籍に
下記のような両者の併用が紹介されていたのですが、
良く理解できませんでした。
result = a?.xxx ?? b
a.xxxのnullチェックは合体演算子がやってくれているように見えるのですが、
何故a.xxx自体にも条件演算子を設けているのでしょうか?
合体演算子だけを利用した場合とどのように違うのでしょうか? aがnullならa.xxxやるとヌルポ例外が発生するでしょ >>307
これと同じ
if(a != null && a.xxx != null)
result = a.xxx;
else
result = b; >>309
こう書いてくれたほうが分かりやすいのにな >>310
それはないと思うよw
っていうか。等価コードこうじゃなかったっけ?
if (a == null)
result = null;
else if (result = a.xxx == null)
result = b; >>311
こういう初見で見てわからん気持ち悪いコード書く奴早く死ねって思う
一生一人だけでプログラム組んでろよって感じ >>315
いやいや、さすがに>>307の例は読めない自分を恥じなきゃダメ。 >>316
でも言語仕様を確認しなきゃ何やってるかわからないぜ
わざわざなんでこんな書き方するの?
気持ち悪い >>317
同じものをを複数回かくことに疑問を持たないのは、センスがない >>319
ああ、そうだねw
ビール飲みながら適当にレスするとこうなる
>>316こんな偉そうなこと書いてるのに笑えるなw >>317
言語仕様を知らずにプログラミングできると思う頭をどうにかしろwww >>320
だっせーな
ほら、間違えたじゃんバーカ >>317
よくある処理の割に記述が長くなるから、簡潔に記述出来るように追加された文法だし。
記述が減ればそれだけバグが入り込む余地が減るし、慣れれば等価コードより読みやすい。 >>323
それ、自分のことしか考えてないよね
素直にダサい >>324
ラムダ式や3項演算子も毛嫌いしてそう。 今時Accessとか使ってる奴いたんだ。
煽りじゃなくて割とまじで 皆さんレスありがとうございます。
>>309
>>310
なるほど!
仮に>>307の式を合体演算子だけでやると、
a.xxxのnullはチェックできてもa自体のnullは検知できないから
aがnullだと例外になってしまうという事ですね、やっと理解できました C#ってわりかし言語仕様追加される方だと思うけど
C#2.0で頭止まってんの? 自分が使う機能を他人が使えない方が悪いと考えるタイプの人間
自分が使えない機能を使う他人の方が悪いと考えるタイプの人間
どっちもどっちの気がするけど
チームや会社の成長や将来性を考えると前者の方がいいよね
後者が群れると互いの足の引っ張り合いになって永遠に停滞する >>331
役職の手前、後者。
でも、内心は前者って人も少なくないだろうな。
本音と建前だと 正直
result = a?.xxx ?? bは気持ち悪い
どのレベルが等価なのかよくわからないから
でも代案を聞かれるとわからない
result = ?a.xxx ?? b
result = a ? a.xxx : b 原本がVS2005だから2005で開発してねとか、開発環境縛りで使いたくても使えない言語仕様多すぎて泣きそう
今2017年なのに・・・ うちの親戚の子供がそうだった。
生まれたときからウォシュレット付きの洋式便所だったからウォシュレットがないところは嫌がるし、、
和式にしゃがむこともできない。たぶんボットン便所なんて怖がって近寄らない。 そういう例えだと選ぶ方がワガママで悪いみたいなイメージだけど
企業が社員の移動に馬車を使わせてるようなものだと例えるとイメージが変わるね >>327
普通にいるだろ
データベース自体の機能は無償のSQL-Server Expressとかでもいいけどレポート機能とかが便利らしい 言語仕様は知らねー方がバカなんだよ
例えばExcelに入った商品リストの合計額調べるとき
・SUM関数使う
・セル1個ずつ選択して足す
・電卓で1個ずつ計算して記入する
どのレベルに合わせるべきかってことよ
SUM関数なんてExcel関数知らんとわからんやんセル一個ずつ足せって言うバカいるかって話
データがそもそもExcelじゃなくて紙ベースデータみたいなときはしゃーない電卓で計算するがの >>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条件演算子は使えるなら使うべき >>337
理由があってそうしてるならしょうがないんじゃない?
坂道が多い長崎の住宅地は荷物を馬で運ぶことも多いとか。 使うには使うけどA?.Bという書式が不気味
先行した多言語があるからそれに合わせたんだから仕方ないが
c#が先にnullチェック演算子をきれいな形で実装できていれば… そういうの、大昔の{}が見づらいみたいな思い込みに基づいた言い掛かりと同じだと思うよ
不気味てw ?演算子の後にドット演算子が来ているようだし
単体で?だと三項演算子とかぶるからMSは ?. と ?[ (?[ ] ではない)の二つを
null条件演算子と呼んでいる
充分気持ち悪い UI部をバージョン依存にして
中の処理をバージョン非依存とかに
する造りじゃないと駄目だな
同じc#で作ったものすら移行できないのは俺らのせいじゃなくて言語作ってる奴が馬鹿なんだから 何言ってるのかさっぱり分からんが
多分俺らじゃなくて言語作ってる奴でもなくて347が馬鹿なんだと思う C#2.0で作ったプロジェクトとソースなら現行のものでビルドしたら問題なく動くんだが
初心者スレで間違った情報広められても困るし業界談義は他でやってもらえないかな 2.0はラムダがないのが致命的だな
LINQライクなライブラリ書いたけどエレガントに記述できない >>350
細かいこというと、VS2005の時代のプロジェクトはUAC対応のマニフェストが
自動生成されないので、たぶん単純に変換しただけではGUIアプリの場合は問題が出ると思う >>352
ここを見て
http://dobon.net/vb/dotnet/system/asadmin.html
「管理者として自分自身を起動する」参考にして組んだことはあるけど
マニフェスト自動生成するのは知らなかったというか見てなかったw 元MSだった奴がいってたけど
VS2010当初でも開発に2,000人関わってたらしいよ。
旧バージョンを使って次のバージョンを作っていたとか
VS2010でVS2015といった具合 SharpDevelopを使ってとあるソースを開いて、ビルドしたらNewtonsoft.Jsonが無いよ、と。
↓
SharpDevelopに組み込まれてるNuGetでNewtonsoft.JsonをインストールしようとしたらNuGetが古過ぎてインストールできません、と。
↓
NuGetコマンド単体の最新版を落としてNewtonsoft.Jsonパッケージを導入した。
でもビルドするとNewtonsoftっていうNamespase知りません、みたいなエラー(CS0246)に。
↓
パッケージがGACに入ってる必要があるの?と思ってGacutil.exeを使おうとするも、Visual Studioにしか入ってないっぽい。
でも諸事情でVisual Studioはいま使えない。
何とかSharpDevelopでビルドを通したいんです。何が足らない || 間違ってるのでしょうか? アセンブリロードのアルゴリズムってどっかに文書化されてたと思う
それ探して読んで一個一個ステップを確認すればいいんじゃないか ビルドオプションで、エラーメッセージを詳細に表示できないの?
そして、そのエラーメッセージで検索すれば? 358の繰り返しになるけど
NuGet単体版ならプロジェクトがパッケージを自動的に参照とかしないだろうから
明示的に参照させる必要があると思うけど大丈夫? Publicクラスの中にPublicクラスを定義しているソース見かけたんだけど、これって何の意味があるの? >>362
書いた人に聞かないと分からないでしょ
まあ、推測だけど、たぶんクラスAと一緒にしか使われない、
従属的なクラスBがあったとして、BをAの内部クラスにしたら
そういう従属的な関係が分かりやすくしたいという意図なんじゃないか。
たぶん今時の流儀じゃないと思うけど、.NET 1.0の時代からあるWindows Formなんか
そういうのいくつかあった気がする Formクラス1つに対応するビジネスロジッククラス1つを作ること
0個でもだめだし2以上でもだめ
っていう頭のおかしいコーディング規約を押し付けてきたバカSEがいて
そのアホくさい制約を回避するために内部クラスを多用したことがある >>364
formと紐付かないクラスを作ればよかったんじゃないの? >>363
読み返してみたら確かに内部クラスは従属的な位置付けだわ、サンクス >>365
だから作っちゃいけない規約なんだって
FormA LogicA
FormB LogicB
FormC LogicC
って風に最初からクラス構成が固定
なので内部クラスを使うしかなかった 頭おかしいやつの下で働かなくちゃいけないなんて哀れだな それを疑問に思わないレベルのバカPGばかり相手にしてるんだろうから仕方ない
PGの能力に全く期待しない前提なら悪くないルールだと思う
参考にさせてもらうわ >>366
あと、内部クラスって外側の非publicのメンバにもアクセスできるので
(当然インスタンスメンバの場合は参照握ってる必要があるけど)
publicにはしたくないけどある特定のクラスにだけアクセスを許したい、
っていう事情もあった可能性もあるね。 >>367
Formの数しかクラスが存在し得ないとしたらたしかに頭おかしい規則だが、Applicationはどうしたの? wpfのmodelファイルみたいに作って欲しいんちゃう? 何にせよ
「なんでそんな事するのか」をハッキリさせとかないと本末転倒になるな
ルール守るために余計に無駄なことしてたら あるブランチの、あるブランチ(例えばmaster)との差分が
わかる方法ってないですかね?
今は別ディレクトリにクローンしてディレクトリの差分を見ています あるファイルと削除しようとすると
「別のプロセスで使用されているため、プロセスはファイル XXXX' にアクセスできません。」と出ます。
vshost32.exe がファイルを掴んでいるので削除できないようです。
なのでVSを終了すれば削除はできます。
自分自身が掴んでいるファイルを削除するのはどうすればいいですか?
別にexeを作成して終了後に起動して削除するくらいしか思いつかないのですが・・・ >>376
「あるファイル」も状況もよくわからないが
プロパティからデバッグの項目開いて「Visual Studio ホスティング プロセスを有効にする」のチェックを外す
コード上で掴んだファイルがそのままとか言う話ならそのコード示して >>376
もし画像表示中に削除できない問題なら、ググれば色々やり方が見つかると思うよ xmlとかxlsをusingで読み込んでdisposeだかreleaseだかしてない系? >>378
それはこれだな
http://dobon.net/vb/dotnet/graphics/drawpicture2.html
ファイルパスを直接渡さなければいいのでストリームでなくてもバイト配列にしてもいい
わかりにくくなるが一行で済ませるには
(Image)new System.Drawing.ImageConverter().ConvertFrom(System.IO.File.ReadAllBytes(filename))とか
>>379
usingから外れると自動でDispose()されるから、それはC#と違う話じゃないかな >>380
旧コードはされないらしい
また、クラスを作った奴がやる気なくてもusingで解放されないらしい
usingの自動解放は言語機能ではなく努力目標 関係ないが、HttpClientも一時期話題になったよな クライアント側アプリでは一通りやりたいことできるようになったので、webアプリというか、サーバーサイド系に進みたいのですが、ASP.Netでお勧め書籍ありますか? >>381
usingが努力目標ってなんだそりゃ。usingはスコープを抜ける時に必ずDisposeを呼ぶだけ。
そのクラスのDisposeの実装に問題があるだけだろ。 >>384
え?C#の話だとおもったんだけど違う? >>383
ASP.NETとASP.NET MVCは別物なので注意。
今から勉強するなら、ASP.NET MVCの方。 今は非常に時期が悪いのでMVCすらお勧めできないよ >>390
idisposeさんと共犯なので合わせ技で死刑 >>388
ASP.NETとASP.NET Web Formsとを同一視してないかい? >>393
いや全然ちげーよw
ASP.NETの中にMVCとWeb Forms(とその他諸々)が含まれるんだから >>392
ASP.NETだけだと、WebFormsを指す場合が多いからね。特に書籍。
補足として書いとくべきだったな。 >>395
ASP.NET Core MVCの方にしか力入れてないけどね
あ、最近だと特にSignalRもか >>388
ちょww 古い本買ってしまいましたぁー
情報ありがとう(>_<) >>389
どのように時期がわるいのですか?
宜しければ業界背景とか教えてください あ、ちなみに私は別業界の週末趣味プログラマで、あまりトレンドとかわからんのです ASPの話題なんでちょっと聞きたいんだけど、linuxサーバー用のwebアプリ作ろうと思ったら.net coreでやるのとjavaでやるのとどっちが敷居低いかな?昔javaでちょっとやってたらマッピングやらがえらい面倒だった記憶あるんだけど JavaならSpring Boot使えば楽
.NET Coreは敷居とか気にするレベルの人が手を出しちゃダメ >>399
今新しいのに移り変わったんだけど全然普及してない
OSSにいるライバル達が強すぎてびくともしてない
従来使ってた人が離れつつある
目新しさがないのが非常にまずい
今後新しいなにかを提案できなければ
早い時期に丸々消える可能性がある >>403
なるほどですね。
しかし、本も買ってしまったし、一通りは知識として吸収しておこう。 結局、今Webアプリを構築するなら、何がベストなんでしょうか?
クライアント側はjavascript一択ですよね。
サーバ側が、自分はweb formで止まっています。
.net coreなるものを調べてみればいいんでしょうか? ■ このスレッドは過去ログ倉庫に格納されています