C#, C♯, C#相談室 Part92 [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2017/01/28(土) 16:46:53.58ID:op86qfG/http://www.visualstudio.com/downloads/
■コードを貼る場合はこちら
http://ideone.com/
■前スレ
C#, C♯, C#相談室 Part91
http://echo.2ch.net/test/read.cgi/tech/1467211515/
■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
0449デフォルトの名無しさん
2017/03/10(金) 12:51:59.29ID:wvkqDHaLそれはその通りだね
EntityFrameworkはもうそろそろ10年たつんだけど
0450デフォルトの名無しさん
2017/03/10(金) 13:10:03.19ID:mpFYTheR0451デフォルトの名無しさん
2017/03/10(金) 13:53:22.42ID:AGPJ29Rn同じ長所短所でも環境によって評価が変わるからどっちが絶対にいいってのはない
それ考慮してどっち使うって当たり前の選択ができない奴多すぎるんだよ
0452デフォルトの名無しさん
2017/03/10(金) 15:40:00.20ID:y8xCqliGんなの書き方によるだろ
0453デフォルトの名無しさん
2017/03/10(金) 18:15:05.97ID:NraHDdZK俺は使うのをやめた。理由を他人に説明する必要も、他人が納得する必要もない。
0454デフォルトの名無しさん
2017/03/10(金) 18:36:12.55ID:wvkqDHaL使えるやつは使う、使えないやつは使わない
0455デフォルトの名無しさん
2017/03/10(金) 18:42:37.52ID:NraHDdZK0456デフォルトの名無しさん
2017/03/10(金) 18:43:15.86ID:NraHDdZK0457デフォルトの名無しさん
2017/03/10(金) 18:46:25.98ID:Gc8NaZGi新しいものに対応できないジャパン。
0458デフォルトの名無しさん
2017/03/10(金) 18:49:44.85ID:YN/8CtFTADO.NET直書き?
0459デフォルトの名無しさん
2017/03/10(金) 19:38:33.09ID:jSwjVui3Microsoftはバグ管理にExcel使ってるんだぞ
振り回されたらあかん
0460デフォルトの名無しさん
2017/03/10(金) 19:44:07.45ID:PPM6ZnbB日本もこれからはMVCとPOCOにシフトしていくだろうね(希望)
0461デフォルトの名無しさん
2017/03/10(金) 20:10:01.97ID:cBCq3F3F基本的にはEntityFrameworkで、パフォーマンスほしいとこはDapper
0462デフォルトの名無しさん
2017/03/10(金) 20:35:03.91ID:BdCDiQus0463デフォルトの名無しさん
2017/03/10(金) 20:40:29.72ID:cBCq3F3F上にもいろいろ比較出てるけど、とにかく速くて簡単
DBとオブジェクトの最低限のマッピングだけでいい場合はこれで十分
0464デフォルトの名無しさん
2017/03/11(土) 09:49:08.82ID:+LwMML+Jクライアントにキャッシュさせて更新があった時だけアクセスしてほしいです
0465デフォルトの名無しさん
2017/03/11(土) 09:53:48.23ID:h5T3JHpBブラウザーがやってくれるんじゃないか?
0466デフォルトの名無しさん
2017/03/11(土) 13:46:01.01ID:SoGUL2Zuタプルとか求めていたものが有ったので使おうとしたら
ValueTupleのライブラリが標準で入らずNuGetにしか無いとか
まだ安定しない無いとか何かあるんだろうか・・・
凄い作りかけ感あるコンパイラに仕上がってるwww
使うべきか暫く様子見すべきか?
0467デフォルトの名無しさん
2017/03/11(土) 13:50:47.46ID:/3A6iA0R0468デフォルトの名無しさん
2017/03/11(土) 14:02:34.64ID:SoGUL2Zuローカル関数いいね、これやる時名前空間が汚れてインテリセンスが腐るから欲しかった
これだけでも移行価値は無くは無いか・・・
IEnumerable<int> Enumerate(int begin, int end)
{
if (end < begin
|| end < 0
|| begin < 0)
throw new System.ArgumentOutOfRangeException("ほげぇ");
IEnumerable<int> Body()
{
for (int i = begin; i <= end; ++i)
yield return i;
}
return Body();
}
0469デフォルトの名無しさん
2017/03/11(土) 14:40:42.15ID:SoGUL2Zuhttp://www.buildinsider.net/column/iwanaga-nobuyuki/008
言語みたいな基幹部分を小出しにするとか、頭おかしくなってるなw
今までそんな事をした言語の末路がどうなったか知らないわけじゃなかろうに・・・
NuGetにして普通にコードする人には使わせないようにするのは、これはヤバイと中の人が感じているのかもしれんね
マイクロソフトの技術力&組織力低下酷いな、半端に才能ある奴のスタンドプレーでグダクダなってるんだろうな。
Web系に翻弄され過ぎだろ
とりあえず使えそうなのは、ローカル関数と型switchくらいかな
この辺りなら変更あってもダメージ少ないだろうし。
タプルの実装に致命的問題があるならローカルclass&struct&enum宣言でもええんやでぇ
名前空間お腐れ問題はカッコイイ事しなくても、これでも解決するんや > microsoft
0470デフォルトの名無しさん
2017/03/11(土) 15:24:01.58ID:SoGUL2Zu横だけど、式木はちゃんと言語でサポートしなきゃ誰にも読めない言語になるなと思った。
逆に、それ自体は難解でもないし難しい話じゃないなとも。
プログラムとは違うけれど
3Dモデラーでツリー構造とか法線とか難解な数学概念が見ての通りの操作で動かしたり創れたりするようになって
門外漢の3Dデザイナーが普通に使えるようになったように
一度概念をキッチリ整理する必要があるんだよ、あれは。
そして言語の作りこみがあの頃から甘くなってき始めてたな、ちょっと残念な感じになっていった時代だね。
とりあえず腐り過ぎのWin10をWin7の仕様に戻せや、ストアもユニバーサルアプリも使い物にならん、色使いも糞でUIが見ずらい > microsoft
あと、WindowsUpdateのタイミングはユーザーの自由にさせよ、お前がお前のタイミングで勝手にやったら業務はむちゃくちゃになる。
0471デフォルトの名無しさん
2017/03/11(土) 22:05:54.03ID:h5T3JHpBタプルなんて昔からあるだろ
0472デフォルトの名無しさん
2017/03/11(土) 22:18:07.78ID:15EAzLR8残念ながら昔からあるTuple<>とは全くの別物
機能的には匿名型にも似ているが、匿名型との互換性もない
ローカル関数なんかも極めて場当たり的なゴミだろ
デリゲートの型を省略できるようにして var func = (int x) => x * 2; と書けた方がずっと便利
0473デフォルトの名無しさん
2017/03/11(土) 22:40:13.41ID:7U1HyGmGいつからここが初心者用になったんだ
0474デフォルトの名無しさん
2017/03/12(日) 01:14:05.08ID:+ulIycHHhttps://github.com/dotnet/roslyn/issues/13177
によると、.NET4.7に入れることにしたみたいだね
nugetで済むのに.NETのバージョンを上げるのは面倒が多いし、今後C#のリリース速度を早めるならある程度まとめて.NET4.7にしようって考えじゃないかなぁ
言語機能の小出しについても他の言語と比べれば遅いし、互換性と将来を考えて慎重に作ってるから完全な完成を待つと永遠にリリースできなくなっちゃうし、やむをえんだろ
CLRのバージョンを保ってくれれば文句は無い
0475デフォルトの名無しさん
2017/03/12(日) 02:13:23.38ID:lK2SBg8Lそのlistのx番目からy個文字列連結したいのですがLinqでどう書けますか?
x番目から3個なら
var result = $"{list.Skip(x).Take(1).FirstOrDefault()}{list.Skip(x + 1).Take(1).FirstOrDefault()}{list.Skip(x + 2).Take(1).FirstOrDefault()}";
こんな感じですけど短く綺麗にしたいのですが…
0476デフォルトの名無しさん
2017/03/12(日) 02:33:41.68ID:tHLqC2EAvar result = String.Join( "", list.Skip(x).Take(y) );
0477デフォルトの名無しさん
2017/03/12(日) 05:07:11.99ID:lK2SBg8Lわー、短くて綺麗。
ありがとうございました。
0478デフォルトの名無しさん
2017/03/12(日) 06:43:42.92ID:RIOf9bqD>デリゲートの型を省略
できるならとっくにやってるんじゃないかなw
ラムダ式は書けるコードが限定され過ぎるのが問題かな。>>468 はそれではどうやっても書けないでしょう。
0479デフォルトの名無しさん
2017/03/12(日) 08:53:09.32ID:bReP5RFT自分で理解できねーもん他人に強制するその姿勢がすでにクソ
なんでその処理linqで書いた?
しかも自分は掲示板で質問しなきゃわかんねーのに
さっさと辞めちゃえお前
伸びる目もねーから
0480デフォルトの名無しさん
2017/03/12(日) 09:23:31.23ID:7tB+K/sW0481デフォルトの名無しさん
2017/03/12(日) 10:01:53.12ID:RIOf9bqD0482デフォルトの名無しさん
2017/03/12(日) 10:23:22.36ID:1QMoXo8Qそこまでする価値は無いかな。
0483デフォルトの名無しさん
2017/03/13(月) 06:11:29.33ID:o9PLbB2Zアプリ起動中はAキーを推すと左クリック Bキーをおすと右クリック Cキーを押すとアプリ終了
みたいな感じでキー入力をマウス入力にいれかえるようなアプリを作りたいんですが
Windows上でフォーカスのあるウインドに依存せずにキー入力を取得するのってどうしたらいいんでしょうか
0484デフォルトの名無しさん
2017/03/13(月) 06:55:37.31ID:2GKmTNuX0485デフォルトの名無しさん
2017/03/13(月) 07:01:39.19ID:WHuP7MmVってdobon.netで見つけた
やったことはない
0486デフォルトの名無しさん
2017/03/13(月) 07:17:17.53ID:o9PLbB2ZKeyPreviewについて調べてみます
0487デフォルトの名無しさん
2017/03/15(水) 09:07:02.25ID:k1u612YY下記のようにエンティティを定義して、それを編集するクライアントを作ろうとしています。
とりあえず、Modelに対する編集は無効にしてあるものとします。Unitに変更を加えて保存すると、
DBの中でModelのレコードが増えてしまいます。NameにUnique制約を付けると当然例外が派生します。
Unit.ModelがDbContextの管理外になってしまったので、別のインスタンスとして認識されているという理屈は分かります。
contextを都度作成せずに維持していれば、期待する動作になるのも分かりますが、それはできればしたくはないです。
何か上手い解決方法はないでしょうか?
public class Model
{ public int ModelId {get;set;}
public string Name {get;set;} ※
}
public class Unit
{ public int UnitId {get;set;}
public VM Model {get;set;}
public string Serial {get;set;}
}
List<Unit> GetUnitList()
{ using (var context = ...)
{ return context.units.Include(x => x.model).Select(x => x).ToList(); }
}
void UpdateUnit(Unit unit)
{ using (var context = ...)
{ var target = context.units.Where(x => x.UnitId == unit.UnitId).FirstOrDefault()
target.Model = unit.Model;
target.Serial = unit.Serial;
context.SaveChanges();
}
}
var list = GetUnitList();
...リスト表示->エディタでunit.Serialを編集
UpdateUnit(unit);
0488デフォルトの名無しさん
2017/03/15(水) 09:27:37.16ID:N2+3G59Gそこまで分かってるなら解決策は簡単。
ModelIdで検索し直す。
0489デフォルトの名無しさん
2017/03/15(水) 11:16:57.42ID:k1u612YYありがとうございます、すっきりしました。
期待する結果に対してのコストが少々重くなるかなという気はしているのですが、
処理コストが問題になるほどの規模ではないので、そうさせて貰います
0490デフォルトの名無しさん
2017/03/16(木) 03:52:05.80ID:l+qA2/0G以下のhtmlをwebBrowser.DocumentTextに突っ込んで表示させたいんですが
何故かwebBrowserではそのままjqueryを読み込むことが
できないようでスクリプトエラーが発生してしまいました
対処方法のわかる方いたら教えていただけますでしょうか?
↓以下のhtml
<!DOCTYPE html>
<head>
<meta charset=""utf8"">
<script src=""https://code.jquery.com/jquery-2.1.4.min.js""></script>
<script type=""text/javascript"">
$(function() {
alert(""test"")
});
</script>
</style>
</head>
<body>
0491デフォルトの名無しさん
2017/03/16(木) 11:36:09.87ID:oyR0ujl00492デフォルトの名無しさん
2017/03/16(木) 16:49:18.07ID:l+qA2/0G文字列に突っ込んでるのをそのままコピペしちゃったのでそのようになってます
すいませんがエスケープは無視して考えてください。
0493デフォルトの名無しさん
2017/03/16(木) 16:58:42.52ID:Qa1xgsfZ<head>
<body>
</style>
</head>
</body>
最後のbodyを/スラッシュで括ってないからでは?
0494デフォルトの名無しさん
2017/03/16(木) 17:03:26.21ID:RyFuDdep君は冷静だな
0495デフォルトの名無しさん
2017/03/16(木) 17:05:05.86ID:Qa1xgsfZ<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML5サンプル</title>
</head>
<body>
<p>HTML5で作成しました!</p>
</body>
</html>
連投ですまん
もっと解り易いサンプル
0496デフォルトの名無しさん
2017/03/16(木) 18:14:35.84ID:kQHrflry・jquery 1系使う
・headに
<meta http-equiv="X-UA-Compatible" content="IE=edge">
等を書く
・レジストリでモード変更する
好きなのどうぞ
0497デフォルトの名無しさん
2017/03/16(木) 18:38:16.89ID:RyFuDdep君は詳しいな
0498デフォルトの名無しさん
2017/03/16(木) 20:09:32.60ID:G/L2rMHgpublic static async Task DoHeavyAsync(string path, IProgress<long> progress, CancellationToken token)
という非同期メソッドの単体テストで、同期版の DoHeavy() と同様のテスト以外に、
(1) progress が動作していることの確認
(2) token が動作していることの確認
が必要だと思います
(1) が簡単ではない
var progress = new Progress<long>(n => { Assert.Fail(); });
などやっても、テストが成功してしまう(レポートがメソッド終了後に届くため)
まじめにやるとしたら別スレッドを作る必要がありそう?
(2) は、巨大ファイルを使って new CancellationTokenSource(20) などでキャンセルされることを確認という
汚い手法でテストしています(処理速度があがった場合にテストが失敗する可能性があるのが汚い点)
(1)と(2)、それぞれどのようにテストするべきでしょうか? 特に(1)
NUnit を使ってますが、他のフレームワークでもいいです
0499デフォルトの名無しさん
2017/03/16(木) 20:16:08.57ID:kgKaK9fl0500デフォルトの名無しさん
2017/03/17(金) 07:37:50.30ID:gTyXrRTfTaskなんだから結果が出るのを待機すればいいだろ
Progressは呼ばれたらcalledフラグを立てるようにしてそいつでAssetする
タイムアウトが必要かどうかは状況次第
2つめは、内部でFileStreamを使っているならだが
Streamを受け取るインターフェースを追加する
クッソ遅いStreamは自由に再現できる
0501デフォルトの名無しさん
2017/03/17(金) 08:16:11.77ID:VDcrtJ6Nありがとうございます!大変助かりました!
0502デフォルトの名無しさん
2017/03/17(金) 21:11:54.40ID:G6TjLWRUやっぱり妥協かなー
>>500
(2) はなるほどね。作ってみる
(1) なんだけど、Progress.Report() での通知は、タスクを await で待機したとしても、
待機が終わった後でも Action<T> が呼ばれているとは限らない
巨大なタスクを渡して、 Progress.Report() が『たぶん』呼ばれるという妥協が必要かなー
単体テストをパスしたとしても、たまたま運良く Action<T> が先にスケジュールされただけだよ
下記のコードはうちの環境ではテストに失敗してた
public static async Task DoLightAsync(IProgress<long> progress)
{
await Task.Delay(10);
progress.Report(123);
}
[Test]
public async Task DoLightAsyncTest()
{
bool called = false;
await DoLightAsync(new Progress<long>(n => { called = true; }));
Assert.IsTrue(called);
}
0503デフォルトの名無しさん
2017/03/18(土) 00:00:39.16ID:3lIBsEeSProgressのインスタンスを渡すのではなく
IProgressを継承し同期のReportを実装したクラスのインスタンスを渡す
0504デフォルトの名無しさん
2017/03/18(土) 10:58:29.15ID:UTVmwL6L確かに Progress<T> にこだわる必要はなかったなー
public class SynchronousProgress<T> : IProgress<T>
{
private readonly SynchronizationContext _Context;
private readonly Action<T> _Action;
public SynchronousProgress(Action<T> action)
{
_Action = action;
_Context = SynchronizationContext.Current ?? new SynchronizationContext();
}
private void Callback(object state)
{ _Action?.Invoke((T)state); }
public void Report(T value)
{ _Context.Send(Callback, value); }
}
見づらいと思うので一応 pastebin にも貼っておく
http://pastebin.com/QjF0XkH4
0505デフォルトの名無しさん
2017/03/19(日) 00:14:21.68ID:xAk2llJg0506デフォルトの名無しさん
2017/03/19(日) 00:19:27.37ID:8DI2TWvJFileInfo
0507デフォルトの名無しさん
2017/03/19(日) 00:30:52.74ID:VKtnwSVxhttp://www.atmarkit.co.jp/fdotnet/dotnettips/370timestamp/timestamp.html
が一発で出てくるんだけど掲示板で聞く方が面倒じゃないの
0508デフォルトの名無しさん
2017/03/19(日) 06:34:49.31ID:bkt1N2YW0509デフォルトの名無しさん
2017/03/19(日) 13:50:14.09ID:PWrmpV5o0510デフォルトの名無しさん
2017/03/19(日) 14:33:00.16ID:DWsQT7k40511デフォルトの名無しさん
2017/03/19(日) 14:45:08.30ID:1DEeFth30512デフォルトの名無しさん
2017/03/19(日) 14:53:33.02ID:VKtnwSVxこの程度の事も検索しないのならコードなんか書けないような
0513デフォルトの名無しさん
2017/03/19(日) 15:03:19.30ID:lJcyTqFlそして煽って議論させるのも好き
だからわざわざ検索しないでここに投げてあげたりする
0514デフォルトの名無しさん
2017/03/19(日) 15:04:25.29ID:1DEeFth30515デフォルトの名無しさん
2017/03/19(日) 15:10:14.91ID:p4p+SSjy0516デフォルトの名無しさん
2017/03/19(日) 16:02:53.06ID:T5IZ831S0517デフォルトの名無しさん
2017/03/19(日) 16:06:30.35ID:z5/tCjGKそういうのは初心者向けふらっとの方でやってくれw
あそこなら解決済みでもグダグダ続けたがるのがいっぱいいる
0518デフォルトの名無しさん
2017/03/19(日) 18:48:36.73ID:lJcyTqFlでも質問してくれないと寂しいんだろ?
0519デフォルトの名無しさん
2017/03/19(日) 18:52:31.68ID:bcM43571本当にプログラムやっているのかって感じの
ここにも来てるのか
0520デフォルトの名無しさん
2017/03/19(日) 21:56:16.72ID:HC9gBYvT0521デフォルトの名無しさん
2017/03/20(月) 01:44:39.35ID:SU/B8MWaトラフィックエクスチェンジ
http://tra-chan.jugem.jp/?eid=1
0522デフォルトの名無しさん
2017/03/20(月) 10:11:03.85ID:Afs087wZ0523デフォルトの名無しさん
2017/03/20(月) 12:24:29.57ID:y4a+UdUhマ板行け
0524デフォルトの名無しさん
2017/03/20(月) 14:10:48.91ID:pi/vFj6F0525デフォルトの名無しさん
2017/03/20(月) 14:57:32.61ID:98bjORSB0526デフォルトの名無しさん
2017/03/20(月) 15:41:51.51ID:4DDUMBY50527デフォルトの名無しさん
2017/03/20(月) 15:48:57.55ID:LcNjV7jZ0528デフォルトの名無しさん
2017/03/20(月) 16:00:23.53ID:pi/vFj6Fいい加減うざいって、お前らずっとスレちがい
0529デフォルトの名無しさん
2017/03/21(火) 05:52:14.36ID:SG0A/rfmジェネリックのローカル関数まで書けるのにオーバーロードは出来ない事に気づいてがっかりモードになっている件
なぜできんOrz
あと大抵の場合キャプチャは要らないんだけどな・・・
0b1110_1011 とか二進数のリテラル地味に便利w
0530デフォルトの名無しさん
2017/03/21(火) 06:45:57.61ID:0zsWCCNl内部で使うだけなら紛らわしいだけだろ
オーバーロードが欲しくなるほど長いメソッドを作ること自体が間違ってるし
0531デフォルトの名無しさん
2017/03/21(火) 14:40:35.20ID:SG0A/rfmそんな事は無いよ、型別にスイッチするくらいならオーバーロード見通しいい
0532デフォルトの名無しさん
2017/03/21(火) 19:18:26.99ID:bA9h/8/p中で分岐させて使え、その方が保守楽だから
↑
って言われたことある。
オマエラも結局中で分岐させてる?
0533デフォルトの名無しさん
2017/03/21(火) 19:23:26.02ID:qbQ1Fjub時と場合による
何でもかんでも共通部分をまとめようとするのはバカだが
0534デフォルトの名無しさん
2017/03/21(火) 19:24:42.66ID:qRIPyX6L似たような処理のメソッドが複数出来る時点で設計からして間違っているだろうし
0535デフォルトの名無しさん
2017/03/21(火) 19:30:08.87ID:72kEtT2Q利用するかどうかは別にしてわざわざ禁止するほどのことではないよね
ってことだろ
0536デフォルトの名無しさん
2017/03/21(火) 19:31:27.83ID:qbQ1Fjubループ中で分岐処理が必要な場合があるので2行目は違うと思う
速度ちょっとでも稼ぎたいと思ったらループの外で分岐させておくだろうし
0537デフォルトの名無しさん
2017/03/21(火) 19:39:30.55ID:RrALGwywそういうことするとすぐに分岐が増えて収集がつかなくなる
この業界は既存のコードの権力が強すぎる
一回でもはまるともう最後まで逃れられない
だから最初から妥協せずクリーンな状態を維持し続けるしかない
0538デフォルトの名無しさん
2017/03/21(火) 19:50:56.44ID:UqOt5XZ1実行して見ないとなんの処理が走るか分からないコードにメリットなんて感じない
資料にも書けないしお客さんにも説明できない
0539デフォルトの名無しさん
2017/03/21(火) 20:14:47.71ID:7sd4gAxoオーバーロードを許すと実装コストは増えるよ
オーバーロードされたメソッドのマングリングってこれまでにやったことないはず
クソ長いメソッドを定義する馬鹿のために無駄な実装コストをかけることは許容できない
0540デフォルトの名無しさん
2017/03/21(火) 23:05:57.08ID:UqOt5XZ10541デフォルトの名無しさん
2017/03/22(水) 02:05:33.87ID:YDOC/IGa可能なら多分やってる、というかキャプチャ無しならオーバーロード可能にしてほしい感じ
さらにいうなら、キャプチャ無し指定をして普通のメソッドが単純に名前空間上に合わられないだけにして欲しい。
でもって、ローカル変数と被る名前OKにしてくれれば一番いい。
結局、ローカル関数にした理由はインテリセンスが機能不全になって欲しくないという話なだけだから。
0542デフォルトの名無しさん
2017/03/22(水) 02:11:31.86ID:YDOC/IGa関数型言語のように一度割り当てられたら変更がないことが保証されれば見通し良いし使い勝手も良いけれど
手続き型言語にキャプチャが入ると見通し悪い事この上ないから、可能な限り使わないようにしたい気分になっている。
0543デフォルトの名無しさん
2017/03/22(水) 11:28:29.87ID:hks7EAC10544デフォルトの名無しさん
2017/03/22(水) 12:58:18.38ID:7zaDxJTN何で作れない分際で文句言ってるんだか
0545デフォルトの名無しさん
2017/03/22(水) 13:01:02.87ID:+8Koiwe20546デフォルトの名無しさん
2017/03/22(水) 13:23:33.31ID:6nIA/xoV0547デフォルトの名無しさん
2017/03/22(水) 13:50:44.67ID:FLtL2zh7お前も同レベルに頭わるそうだなw
0548デフォルトの名無しさん
2017/03/22(水) 14:47:13.98ID:T50yqk9Qできらぁ!
■ このスレッドは過去ログ倉庫に格納されています