ふらっと C#,C♯,C#(初心者用) Part136

■ このスレッドは過去ログ倉庫に格納されています
2018/03/03(土) 15:09:05.75ID:SBEkwl3H
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part135
http://mevius.5ch.net/test/read.cgi/tech/1517749348/

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

■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
-
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2018/03/22(木) 07:06:16.48ID:dIG91/vu
>>419
C#で作られたものならILSpyなどのデコンパイラを使えばかなり高精度でソースを復元できる
でも他人のソース見て勉強したいならGithubでOSSを読むのが一番だと思う
上の人はこの板の名物基地外だから無視するように
2018/03/22(木) 08:16:03.10ID:Cb8k5JAF
ていうかc#って難読化しないとソースが丸々実行ファイルに入ってるよね
2018/03/22(木) 09:00:19.19ID:Yz4YgUU6
>>423
難読化しても丸々入るやろ
2018/03/22(木) 09:04:15.42ID:Cb8k5JAF
>>424
読まれちゃうよね
2018/03/22(木) 14:56:38.14ID:fyCa2g0B
読まれたら困るような技術やマルウェアでも仕込んでんのか?
2018/03/22(木) 15:38:32.20ID:Cb8k5JAF
>>426
僕たちの技術が安売りされておる!
2018/03/22(木) 17:44:35.45ID:s6EbUNWz
>>419
CとC#が同じように見えるレベルででデコンパイルで勉強とか無理
それ以前に言語スレで質問するときは最低限その言語で「Hello World!」実行できるようになってから
2018/03/22(木) 19:07:00.07ID:JQhOGY5j
Cで書いても逆アセンブルすればだいたい読めるじゃん
2018/03/22(木) 19:12:37.50ID:2OJ71Hoj
>>429
それは質問の要件に合う話?
431414
垢版 |
2018/03/22(木) 19:18:29.35ID:+BApurZo
>>415-416
ありがとう。
調べてみます。

>>417
茨の道っぽいかもですね。
まあ先の用例のケースなら <!-- --> でコメントを入れてもいいので、適宜、工数を考えてみます。
でも <!-- --> でコメント入れると、行挿入したときとかに勝手に改行が入ったりするので。。
2018/03/22(木) 19:41:14.86ID:cv696+3f
読み込んだ画像を縦横に連結して新しく出力したい。
横への結合はあるけれど、縦・横並べるにはどうしたらいいんだ



■■■
■■■

こういう風にしたい
2018/03/22(木) 19:45:29.56ID:kZrJsqkn
読み込んだ画像を上下にずらしながら描画すればいいんじゃねーの?
2018/03/22(木) 19:59:53.87ID:52tkzdW9
>>432
C#以前に画像の大きさと座標を考えるだけじゃないの
横に連結できるのに縦横ができない方が意味不明
2018/03/22(木) 20:05:24.46ID:T2vZ1xLC
>>432
どこに出力するのかぐらい書けや
2018/03/22(木) 20:47:55.73ID:ni48WVgw
class TypeA: IType{}
class TypeB: IType{}
IType[] table;

こんな感じの構成で配列にI/Fを格納してステートマシンをやりたいのに、
何をnewして配列を初期化したらいいのか分からない誰かたすけて
2018/03/22(木) 21:04:10.32ID:uk+GlZCh
Listを使うようにしたらいいよ
2018/03/22(木) 21:16:31.83ID:/twRZ4qU
>>436
IType[] table = { new TypeA(), new TypeB() }
とか?
2018/03/22(木) 21:17:50.71ID:ni48WVgw
ごめん
IType tmp = new IType[2];
としたら普通に出来た

インターフェースはnew不可能って嘘言ってる奴は死ねばいいのに
2018/03/22(木) 21:26:09.52ID:06GLHVJW
Interfaceはnew出来ないぞ。
それは配列をnewしてるのであってInterfaceをnewしてるわけでは無いんだよ。
2018/03/22(木) 23:23:13.81ID:R5Phquw0
>>421,428
サイト見ながらハイ&ローゲームを作ったけどめっちゃ難しかった
でもマインクラフトなんかよりずっと面白いな!
お前らみたいに長年プログラムを書いてるとソースコードを見ただけで吐き気がしたり嫌になったりすることもあるの?
今でも楽しく書けてる?もうロボットになっちゃった?
2018/03/23(金) 10:18:12.37ID:dRbnJSq+
ソースなんか見なくても
テストが全くない、仕様書はない、前任者が逃亡
のどれかを聞いたら吐く
2018/03/23(金) 15:25:59.96ID:4mHfCYml
好きなことは趣味だけにとどめておけとは良く言うな
まぁ広い世界を見るのと見ないのじゃ、得るものも考えも違ってくるけど
2018/03/23(金) 18:41:53.25ID:K8shiMoF
起動中の任意のウィンドウをクリックスルーさせるアプリを作りたいんですが開発言語は何がいいでしょうか?
C#で作れますか?
2018/03/23(金) 18:48:37.93ID:KCL7rjza
> クリックスルーとはウェブサイト上の広告をクリックすることによって広告主のコンテンツに移動することであり、
> ウェブサイトの広告効果を測る一つの尺度である。

残念ながら意味不明
2018/03/23(金) 19:16:30.96ID:WXYYX9lz
エスパーすると任意のwindowの後ろの座標クリックしたいんじゃね?
2018/03/23(金) 19:16:54.09ID:K8shiMoF
言い方が悪かったですね
クリックスルーとは手前に表示されているウィンドウではなくその奥にクリックイベントを送ることです
私の作った造語です。
クリックをスルーさせる。なら分かったでしょうか?
2018/03/23(金) 19:19:36.49ID:f2Ovt9hj
windowマネージャー次第じゃね
2018/03/23(金) 19:20:07.85ID:K8shiMoF
>>446
そうです
2018/03/23(金) 19:26:06.63ID:oo1PkjPG
WndProcでマウス関連のメッセージが来たらそれを後ろのウインドウに送れ
2018/03/23(金) 19:41:03.71ID:K8shiMoF
関数も知らない初心者なのでよくわかりませんが、
ありがとうございます
頑張ってみます
2018/03/23(金) 20:04:04.89ID:Wu9wrvWh
C#でWindows7や10の通知を検知する方法ありますか?
2018/03/23(金) 20:07:18.14ID:YkCX9UZt
>>450
これだと自分自身のフォームに対するクリックしか対応できないんじゃね?
>>448で自作する話かと思った
454デフォルトの名無しさん
垢版 |
2018/03/24(土) 02:01:16.50ID:eOg1kWoS
int[] ii = {1,2,3,4,5,6,7,8,9,10};
var i = ii.Where(x=>x>=11).FirstOrDefault();
Console.WriteLine(i);
こんな感じのことをしたいのですが、iに0が入っていたときに0が検索結果なのか?それともデフォルト値の0が返されたのか?を調べる方法ってないのでしょうか?
2018/03/24(土) 02:12:40.29ID:RAJoRlJs
>>454
var i = ii.Where(x=>x>=11).Cast<int?>().FirstOrDefault();
これならデフォルトはnullになる
2018/03/24(土) 02:22:55.04ID:f2IRc2qS
11以上の0てw
457デフォルトの名無しさん
垢版 |
2018/03/24(土) 02:23:26.48ID:eOg1kWoS
>455
ありがとうございます
null許容型にしてしまう技は全然思いつきもしませんでした
2018/03/24(土) 03:52:47.12ID:vYyJGm6o
普通に.Any()みたいのでチェックしたほうがいい気がする
2018/03/24(土) 06:34:16.57ID:kwFJV00Z
普通にanyとFirstでやるほうがいいと思う
null許容型を嫌っている人も多いし
2018/03/24(土) 11:02:27.65ID:nWAEGsYu
forでやればいいと思うけど一行で無理やりやるとしたら

var i = ii.ToList().FindIndex(x => x > 11);

で位置が取れる
見つからなかったら-1が帰る

値はii[i]

※これはLINQじゃない
2018/03/24(土) 11:07:47.22ID:nWAEGsYu
見直したら

var i = Array.FindIndex(ii, x => x > 11);

でも行けた
失礼
2018/03/24(土) 11:54:28.18ID:I8UGP+gf
そういうラムダ式ってぶん回してるとGCガリガリしそうな気がする俺は素直にforで判定してる
2018/03/24(土) 12:07:26.69ID:Y8GXLzWd
GC大量発生しているじゃないか!とGen0と1の数字で大騒ぎしているお客さんみたいなこと言わないでよ
2018/03/24(土) 12:20:02.80ID:qA6u9GtS
俺はRustで書く
2018/03/24(土) 12:36:49.22ID:I8UGP+gf
>>463
VRが90fpsなんて無茶を求めて来なきゃ俺だってLINQとか使いたいよ
2018/03/24(土) 12:42:55.44ID:9NxgdLlD
Listの実装にもよるけどvector的ならインスタンス1つ増えるだけでしかも速やかに回収される
GCからみたらただの良い子だね
2018/03/24(土) 13:07:03.68ID:7/CvCtkV
要件違うんだから争いはしないでよね
2018/03/24(土) 13:12:57.55ID:l0JTVUuX
>>465
お前の自己紹介スレじゃないんで
2018/03/24(土) 14:15:34.65ID:gWAI6lWw
いくらLINQでも探索でGCガリガリなんてするわけないじゃん
470デフォルトの名無しさん
垢版 |
2018/03/24(土) 14:17:13.44ID:iw5iXVod
パフォーマンス追求するときは使わなきゃいいだけじゃん
何回目だよ
2018/03/24(土) 14:22:26.64ID:qA6u9GtS
何度でも言うよ
2018/03/24(土) 14:37:03.09ID:8uBzLhlU
>>470
だったら使うの止めてよ
パフォーマンスが要求されるところで使えないんでしょ
普通に組めばいい話じゃん
2018/03/24(土) 15:03:34.89ID:kwFJV00Z
コンパイラーによって最適化された結果リンクの方がパフォーマンスがいいときもある
勝手に使えないと決めつけるんじゃなくてちゃんと調べた方がいいよ
2018/03/24(土) 15:10:01.14ID:FeWoBRlr
>>473
その調査で生じる賃金はどこのどなたが払って下さるんですか?
2018/03/24(土) 15:13:32.64ID:o+lnSplR
今回はLINQ関係ないだろ
Listのメソッド使ったんだから

ラムダが嫌ならPredicateのdelegate渡せばいい
2018/03/24(土) 15:52:30.11ID:kwFJV00Z
リンクだろうとラムダ式だろうとパフォーマンスは実際にやってみないとわからないってのが言いたかった
こんな所でボトルネックなんてでないから好きに書けばいいと思うけど
477デフォルトの名無しさん
垢版 |
2018/03/24(土) 16:25:40.93ID:iw5iXVod
>>472
簡単だし楽だから使うよ
おまえは全部C++でやっとけよ
2018/03/24(土) 16:32:05.01ID:7/CvCtkV
どのくらいのパフォーマンスが必要なのかも分からないのにパフォーマンス必要だから止めろって奴何なの?
2018/03/24(土) 16:42:29.03ID:vRs+3qfJ
>>478
でも遅いことは確定なんだよね?
2018/03/24(土) 16:44:31.30ID:o+lnSplR
くだらないことで揉めるんじゃない
ただanyからのfirstは無駄だとは思う
2018/03/24(土) 16:55:19.70ID:dHFi9bQj
またはじまった
2018/03/24(土) 17:05:10.25ID:1VnhiIny
無駄というか作法的にイマイチ
IEnumerableは列挙するたびに結果が変わったり一度しか使えなかったりする実装もあり得るから、
終端操作を二度やるのは一般には良くないね
2018/03/24(土) 17:08:19.43ID:7/CvCtkV
>>479
何に対して何が遅いと言っている?

あと許容出来る遅さと許容出来ない遅さは区別することを前提でお願いね。
2018/03/24(土) 17:12:04.07ID:uMtlf+0x
質問でも回答でもないのなら他でやれ
2018/03/24(土) 17:32:20.25ID:vYyJGm6o
>>480
>ただanyからのfirstは無駄だとは思う

なんでそう思うの?
2018/03/24(土) 17:35:46.41ID:+6yqXiQK
>>485
本来同時に得られるはずの情報をわざわざ二度の処理で求めているからだろ
処理効率は別にしても、マルチスレッドとか考慮するとバグの元になる可能性もある
2018/03/24(土) 17:36:08.58ID:kwFJV00Z
anyで条件付きのループした後にfirstで同じことをするより、2回目は直接該当データを参照する方が早そうって感覚
2018/03/24(土) 17:42:42.62ID:1VnhiIny
列挙元の内容が変更されないことが保証されているのは列挙子が有効な間だけ(変更されたら列挙子が無効になる)
Anyの直後のFirstは新しい列挙子を使用して列挙をやり直すので、
前回から列挙元の内容が変更されていない保証は一般には無い
2018/03/24(土) 17:46:38.61ID:Yt7o4U/B
>>488
正しいよ
でもお呼びじゃないんだカス
静かにしててくれる?
2018/03/24(土) 18:01:34.62ID:kwFJV00Z
>>488
anyは存在確認でfirstはデータ取得が目的だから順序が変わっても問題なし
むしろfindindexからインデクサでデータ取得する時の方が大事になってくるかな
だから、>>461はいいけど、>>460は少し危ない気がする
2018/03/24(土) 18:04:19.15ID:0F1bgfLW
いや正しくないってw
別のスレッドでコレクションが変更される可能性があるならそもそもLINQは使えない。

LINQのメソッドが返す列挙子はオリジナルのコレクションのコンポジションに過ぎないことを
忘れちゃダメよ
2018/03/24(土) 18:06:03.71ID:0F1bgfLW
>>490
問題あるとかないとか以前に、同じコレクションを2回スキャンするのは
無駄だなと思うことはプログラマの最低要件だと思う
2018/03/24(土) 18:13:37.30ID:kwFJV00Z
>>492
別にそこは否定してないんだけど
また、リストや配列のメソッドはスレッドセーフじゃなかったと思うからanyがとか以前にロックしなきゃ駄目かな
それはまた別の話だから別に触れないけど
2018/03/24(土) 18:14:09.89ID:9NxgdLlD
こんな場合には使えないんだ!←わかる
だから絶対にどんな場合にも使うな!←キチガイ
2018/03/24(土) 18:16:14.46ID:vYyJGm6o
>>486
うーん、考え方としては理解できるんだけど、
現実問題としてintみたいにdefault値に0を返す型の場合で
whereでフィルタした結果に要素があるかないかで処理を分けたいときにどうしてるの?

>>455みたくnull許容型にキャストするのは一案だけど読みやすさは低くなるよね
2018/03/24(土) 18:41:22.21ID:RopZoVkn
>>495
場合によっては Enumerable.DefaultIfEmpty 使うものあり
2018/03/24(土) 18:45:31.61ID:Jt5uczDI
>>495
whereでフィルタかけたならそのリストを作って、countで判別でもよさそう
2018/03/24(土) 18:55:23.66ID:o+lnSplR
いやそれこそ無駄だよ
2018/03/24(土) 19:02:00.05ID:vYyJGm6o
>>496
例えば Where(…).DefaultIfEmpty(-1).First() みたいなこと?

>>497
それは遅延評価のメリットを完全につぶしてるよね
扱ってる型によってはcountでもO(1)で性能的な問題はない場合もあるだろうけど
2018/03/24(土) 19:29:35.04ID:RopZoVkn
>>499
> 例えば Where(…).DefaultIfEmpty(-1).First() みたいなこと?
そう。元のコレクションに -1 があったら使えないけど
2018/03/24(土) 20:06:30.63ID:WPuMsPfE
>>494
プログラマなんざ99%キチガイだから正しいだろ?
根拠あげろって?皆さんが根拠だろうにご冗談を
2018/03/24(土) 20:49:58.95ID:emfSYqOj
public static class MyLinqExtensions {
public static T? FirstOrNull<T>(this IEnumerable<T> s) where T : struct {
foreach (var i in s) return i;
return default(T?);
   // return s.Cast<T?>().FirstOrDefault();
}

public static void ForEach<T>(this IEnumerable<T> s, Action<T> a) {
foreach (var i in s) a(i);
}
}

class Program {
static void Main(string[] args) {
var s = new [] {7, 0, 1, 2, 13, 3, 4, 5};

var x = s.Where(i => i >= 11).FirstOrNull();
if (x != null) Console.WriteLine(x);

s.Where(i => i >= 11).Take(1).ForEach(Console.WriteLine);
}
}
503デフォルトの名無しさん
垢版 |
2018/03/24(土) 22:39:25.79ID:eOg1kWoS
俺、そんな大ごとになるようなことを聞いちゃったのかな・・・・・
2018/03/24(土) 22:41:42.98ID:Y93sH5Wg
このスレはlinqを異常に嫌っているおじいちゃんが生息してるから注意してね
2018/03/24(土) 22:43:55.34ID:Y8GXLzWd
>>503
週末よくある光景だから気にすんな
2018/03/24(土) 22:49:20.91ID:NMOsnRxi
WEBサイトのデータを取得するコードを書いているのですが
サーバのデータを書き換えて、クライアントからアクセスしても
キャッシュされた値が取得されてしまい困っています。

キャッシュポリシーというのでキャッシュしない設定が出来る様です。
以下コードを書きましたが、エラーが出てしまいます。

何が原因なのでしょうか?


using System.Net; //WebClient
using System.Net.Cache;

****************************************************

HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
request.CachePolicy = noCachePolicy;

******************************************************

エラー
Error 8 The type or namespace name 'HttpRequestCachePolicy' could not be found (are you missing a using directive or an assembly reference?)
Error 11 The name 'request' does not exist in the current context
Error 10 The name 'HttpRequestCacheLevel' does not exist in the current context
2018/03/24(土) 22:57:42.79ID:ADnClyNC
>>506
コードも張らないとアドバイスできんがな
2018/03/24(土) 23:01:20.44ID:NMOsnRxi
>>507



WebRequest req_1 = null;
req_1 = WebRequest.Create(str_url);
res = req_1.GetResponse();

でWEBサーバに設置したデータを取得しています。
2018/03/24(土) 23:03:09.08ID:S2nO/hPq
>>506
https://msdn.microsoft.com/ja-jp/library/system.net.cache.httprequestcachepolicy(v=vs.110).aspx
HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
WebRequest request = WebRequest.Create(uri);
request.CachePolicy = noCachePolicy;
uriに文字列設定したら普通にビルド通るけど、他に何やってる?
2018/03/24(土) 23:04:36.74ID:NMOsnRxi
>>509
ありがとうございます。
凡ミスしてました!

using System.Net.Cache;

を別のソースファイルに書いてました、、、
2018/03/24(土) 23:07:50.50ID:bzBaKL6p
なぜいまどきWebRequest?
2018/03/24(土) 23:11:22.61ID:NMOsnRxi
エラーは消えましたが、WEBサーバ上で書き換え前の値が取得されてしまいます。
うーん、キャッシュポリシーの設定はあっているはずなのですが。
HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
request.CachePolicy = noCachePolicy;
2018/03/24(土) 23:13:30.74ID:NMOsnRxi
>>511
今ナウいのは何に使うんですか?


WEBサーバ上にはというファイルをおいてます。
[ hoge_status.dat ]
1,aaa
2,bbb
3,ccc

そして、サーバ上で「2,bbb」→「2,babaa」に
書き換えて、クライアント(C#)から上のコードを実行した時に
「2,bbb」が取得されてしまいます。
2018/03/24(土) 23:16:00.40ID:rHDBuOYV
https://code.i-harness.com/ja/q/81ef3
2018/03/24(土) 23:24:46.34ID:NMOsnRxi
ありがとうございます。
サイトに記載の内容を参考に↓のコードを書きました。


namespace ns_test
{
public class c_udoxn
{
[DllImport("WinInet.dll", PreserveSig = true, SetLastError = true)]


Error 29 The type or namespace name 'DllImportAttribute' could not be found
(are you missing a using directive or an assembly reference?)

すると今度は、DllImportAttributeが見つからないというエラーがでます。
何か間違っていますか?
2018/03/24(土) 23:27:01.58ID:NMOsnRxi
using System.Runtime.InteropServices; // DLL Import

これでエラー消えました。
2018/03/24(土) 23:32:05.55ID:NMOsnRxi
解決しました!!
ありがとうございました!
2018/03/25(日) 00:22:20.31ID:30He22WI
How can I view the allocation unit size of a NTFS partition in Windows 10?
2018/03/25(日) 02:55:25.41ID:QkJGWpF+
>>518
fsutil fsinfo ntfsinfo
2018/03/25(日) 02:58:05.04ID:Z3IDZNHN
>>511
>>513
いまだとHAPかな?
521デフォルトの名無しさん
垢版 |
2018/03/25(日) 03:08:23.05ID:eoB6ZVmc
特定のクラスのインスタンスを探したり列挙したりすることって出来ないのでしょうか?

A a = A();//オブジェクトの生成をどこかに記録するとか面倒なこと無しに
A b = A();
A c = A();
FindObjects(A).ForEach(・・・・・);//雰囲気としてはこんなことがやりたいんです
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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