ふらっと 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/07/31(月) 23:55:32.54ID:JdXkXzvI0
var[] array = {};
こーゆうのできゆる?
2017/08/01(火) 00:04:40.32ID:e+FvcYbC0
初心者の質問で申し訳ないんですが、c#のスクリプトって必ず最初にクラスを作成(または継承)しないといけないんでしょうか?
2017/08/01(火) 00:11:35.45ID:5fOoTB1q0
>>259
その書き方では駄目。
var array = new int[ 0 ];
var array = new int[ 3 ] { 0, 1, 2 };
var array = new [] { 0, 1, 2, 3 };
2017/08/01(火) 01:31:15.62ID:edKic7OG0
>>250
MS のC# のコーディング規則には、
When the type of a variable is not clear from the context, use an explicit type.
コンテキストから明らかでないときには、型を書け
とある。
2017/08/01(火) 01:59:26.32ID:5fOoTB1q0
一部だけ抜き出すとニュアンスが変わるから、まずは全部読もう。

C# のコーディング規則 (C# プログラミング ガイド)
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/inside-a-program/coding-conventions
2017/08/01(火) 02:08:50.05ID:yW2ASqGfa
まだやってんのか

>>262
>>250に反論してるだけなのは分かるが、そういう「訓詁学」に意味はない。
だいたいその文章はちょっとおかしい。
コンパイラに型が分かるなら"clear"じゃないかって言われたら反論できないでしょ。
2017/08/01(火) 02:29:23.89ID:yW2ASqGfa
っていうか、いい加減論点整理して終わりにした方がいいよ。

(1) varが使える場面では全部varを使え。あるいは使って問題ない

(2) var容認だが明示的に型を書いた方が分かりやすい場万もあるので、
情況によって柔軟に使い分けるべき

(3) varを使うと可読性が落ちるので一律禁止


なんか誤解してるのがいるとしか思えないが、var使え論者(というかC#プログラマの大半)の立場は、
一部のバカを除けば恐らく(2)だと思われる。

varによってむしろ可読性が落ちるケースなんか存在しないと思っている人間は、おそらくむしろ少数派。

その多数派の見解が正しいとすれば、var禁止プロジェクトは一定の合理性があることになる。
メンバーのvarを使うべき場面かどうか判断する能力が疑わしければ、
var禁止の方が多少コスト増であったとしても少なくとも安全だからだ
2017/08/01(火) 02:33:19.96ID:5fOoTB1q0
>>264
さすがにそれは言いがかりだろw
例も挙げられてるし、人間が見てってことだろう。
2017/08/01(火) 05:05:12.09ID:nCDZZVYR0
>>262
> コンテキストから明らかでないときには、型を書け

> newみたいな明示的なとき以外var使うなって言ってる
では相当違うと思うぞ w
>>238は脳内確定?
268遊園地 ◆OM5/jtEIXw (ワッチョイ be96-FEN5)
垢版 |
2017/08/01(火) 08:50:27.72ID:CTbyL2210
C# 難しい
2017/08/01(火) 09:24:34.03ID:cWGHzdKF0
>>260
名前空間にフィールドやメソッドは直接書けないからね。

ただ、メインはProgramクラスじゃなくてもビルドできる。
2017/08/02(水) 14:06:29.12ID:/Yd2n8P20
初心者すぎて恥ずかしいんですがVisualstudioのC#でLINQをつかいAccessのDBにアクセスしようと考えています。
そこでLINQという項目をVisualstudioで探しているんですが見つけることができません。
どこを探せばよいでしょうか?
2017/08/02(水) 14:08:35.92ID:597Omi5cd
>>270
LINQ to SQLのことを言ってるんなら、もう非推奨だからやめときな
2017/08/02(水) 14:12:17.44ID:/Yd2n8P20
>>271
まじですか!!知らなかったです。
別の方法考えます助かりました。ありがとうございます。
2017/08/02(水) 14:45:10.89ID:x+1N4OhAM
entityframeworkの事じゃないの?
2017/08/02(水) 17:11:04.60ID:EHe3ZB7L0
EntityFrameworkてAccessに使えるん?
2017/08/02(水) 17:36:18.47ID:DSdx5nEBM
JetEntityFrameworkってライブラリがあるにはある
2017/08/02(水) 17:37:18.47ID:vt8a1S/T0
>>274
使えるらしい
http://qiita.com/siamcats/items/3d307fa8e9e0c9b215dc
2017/08/02(水) 17:38:15.34ID:upkfkfqNa
スタンダードな方法はなんなん?
2017/08/02(水) 17:41:52.53ID:upkfkfqNa
access c# 接続でググると
System.Data.OleDb
とか出てくるけどこれでいいんちゃうの?
2017/08/02(水) 19:07:55.68ID:+4F2ZrBo0
まずAccessなんて使ってるシステムを捨てろ
2017/08/02(水) 21:36:57.94ID:L+93Eq5i0
用途によっては MDB 使うよ
(複数端末からアクセスしない、データサイズが知れてる等)

dbOpenTable で開いてインデックスにジャストミートした使い方だと
とにかく速い。べらぼうに速い

Access で簡単に読み書きできるのも素晴らしい
2017/08/02(水) 21:37:56.32ID:L+93Eq5i0
あ OpenRecordset(テーブル名, dbTable) だったっけ?
SQL文じゃない、それ以前の Btrieve みたいなアクセスの仕方するやつね
2017/08/02(水) 21:43:07.03ID:xKynJRToa
ダウここに来て7連騰すんのかキチガイやな
2017/08/02(水) 22:51:04.44ID:rvyn4SJsa
22k$とか半端ないな。完全にバブル
まあスレと関係ないけどねw
2017/08/03(木) 02:37:18.01ID:yqoCedJN0
株のプログラム作ってる人いるの?
2017/08/03(木) 07:07:21.62ID:y/LGBxl4M
普通にいるよ
2017/08/03(木) 08:23:24.22ID:wSZ2pXrJ0
>>280
それももうSQLiteだろ
2017/08/03(木) 09:23:46.03ID:G7zaqCUm0
ポストSQLiteと言われるRealmってどうなんだろうな?
元はiOSらしいが、最近UWPに対応したそうな
2017/08/03(木) 14:18:47.80ID:zSQ4gTJt0
http://ideone.com/I4S7rq
上記のコードなのですが宣言と同時に初期化しようとしているんですが、ビルドが通りません
どう書けば通るのでしょうか?
2017/08/03(木) 14:29:27.06ID:XOuExNezd
>>288
エラーメッセージ読めよ
2017/08/03(木) 14:41:53.48ID:gag1Q2E/d
staticとかクラスで配列呼びとかこれ直すとどうなるか気になるけど、目的の物への直し方が分からない初心者
2017/08/03(木) 16:17:17.57ID:W8S0u/iSa
>>288
逆にどうしてそれで初期化できると思ったのか聞きたいな
2017/08/03(木) 18:20:40.50ID:y6PJbWOJ0
>>288
まずstaticの意味を調べような
2017/08/03(木) 19:58:25.54ID:AAnCTaTb0
>>288
思い込みの書式が通ると思うのならプログラムなんかできないから基本から見なおせ
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/classes
2017/08/03(木) 21:01:13.46ID:eLAt0wVza
また始まったよ
質問者叩いてる奴こそ>>1のテンプレを「基本から見直せ」バカが。

俺はもともと「ふらっと」スレの存在意義なんか認めないけど、
こうやって質問者叩いてるバカに限ってスレ統一しろっていうと反対するのな
2017/08/03(木) 21:04:28.86ID:9rdLVHxUa
俺は板自体が過疎ってるからどうでもいいぜ
2017/08/03(木) 21:06:21.11ID:y6PJbWOJ0
>>294
じゃあお前が率先して回答しなよ
口だけじゃないって証明してくれ
2017/08/03(木) 21:06:50.15ID:Wy5AX0em0
それは君がこのスレを便所だと思っているから言える発言であって
便所に住んでる人からしたらここが自分の部屋なんですよ

スレ民は自分が便所に住んでることを思い出してください
2017/08/03(木) 21:09:58.25ID:Wy5AX0em0
>>296
それはおかしい
彼はここが便所であると思っていて
ヤジは飛ばせど、関わりあいたくないと考えているのだから
質問には答えないし、そのつもりも無いハズだよ
答えるのはあくまでスレ民の仕事だと
2017/08/03(木) 21:20:27.19ID:1DsfYpVq0
質問です

最近チンコが痒いんですが
どうすればよいか教えて臭い

(´・ω・`)
2017/08/03(木) 21:25:09.64ID:aUvJQCED0
hospital.Ablation( Chinko );
2017/08/03(木) 21:29:08.33ID:AAnCTaTb0
>>294
存在意義認めないのに自治するやつなんか初めて見た
288に対しては無意味な回答しているのは>>290だけだ
お前は2度と来るな
2017/08/03(木) 21:29:39.92ID:A2tW+WgX0
>>288
・staticなクラスはnew出来ない。
・初期化の仕方が間違ってる。

http://ideone.com/ur8MnV
2017/08/03(木) 21:31:46.35ID:MwbRiP+T0
>>302が一番有能
2017/08/03(木) 21:38:04.30ID:A2tW+WgX0
>>302のコンストラクタ追加版
http://ideone.com/49oLlc
2017/08/03(木) 21:40:01.22ID:A2tW+WgX0
あ、>>304のPointクラスのコンストラクタ間違えた。
ま、分かるでしょ。
2017/08/03(木) 22:13:07.27ID:KofxmfPad
>>301
直し方分からんから俺も気になるレベルの無意味なレスしたのはすまん
pointの呼び方の直し方がわからんかった

>>304
の書き方でpoint呼べばいいのね
2017/08/04(金) 21:32:08.81ID:eXZebYv+0
つい最近C#を学習し始めた者です。
null演算子について質問させてください。

null条件演算子/合体演算子を解説しているサイトや書籍に
下記のような両者の併用が紹介されていたのですが、
良く理解できませんでした。

result = a?.xxx ?? b

a.xxxのnullチェックは合体演算子がやってくれているように見えるのですが、
何故a.xxx自体にも条件演算子を設けているのでしょうか?
合体演算子だけを利用した場合とどのように違うのでしょうか?
2017/08/04(金) 22:01:29.79ID:ma8HhYcB0
aがnullならa.xxxやるとヌルポ例外が発生するでしょ
2017/08/04(金) 22:03:52.23ID:RvTw87/B0
>>307
これと同じ
if(a != null && a.xxx != null)
result = a.xxx;
else
result = b;
2017/08/05(土) 00:14:15.76ID:l55BpX17a
>>309
こう書いてくれたほうが分かりやすいのにな
2017/08/05(土) 00:23:56.45ID:L80K1fJH0
慣れじゃないかな。
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が参照されていないだけでは?
■ このスレッドは過去ログ倉庫に格納されています