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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん (ワッチョイ df89-moxv)2020/05/27(水) 20:28:41.27ID:Pggemlyq0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part147
http://mevius.5ch.net/test/read.cgi/tech/1582100741/
■関連スレ
C#, C♯, C#相談室 Part94
http://mevius.5ch.net/test/read.cgi/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

0952デフォルトの名無しさん (アウアウクー MM1b-iTOR)2020/12/09(水) 02:33:30.28ID:WuZTb4kZM
なにごちゃごちゃ抜かしとるんじゃ我ェ!?

0953デフォルトの名無しさん (ワッチョイ 7fb0-kRr2)2020/12/11(金) 09:52:21.87ID:xnlTyNu60
エンディアンのバイトスワップめんどくせー

0954デフォルトの名無しさん (ワッチョイ df40-orE1)2020/12/11(金) 11:23:36.63ID:RmJd06BU0
あるウェブサイトにWebrequestを使ってアクセスしようとしたところ、
「ご使用のブラウザはCookieまたはJavaScriptの設定が無効です」
と出てウェブブラウザでは表示されるページが取得できませんでした。
webrequestは今まで何度も使っていますがこんなことになったのは初めてです。
↓のようにどこの解説サイトでも掲載されているような普通のやり方でやっているだけなのですが、回避する方法はあるのでしょうか?

CookieContainer myCC = new CookieContainer()
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.CookieContainer = myCC:

0955デフォルトの名無しさん (ワッチョイ df40-orE1)2020/12/11(金) 12:09:30.98ID:RmJd06BU0
すいません、自己解決しました

プロジェクト内で定義された派生クラスを全てリストする方法ってあるでしょうか?
例えば動物という基底クラスがあり、
派生クラスに猫、犬と2つ作ったとします。
基底クラスには鳴き声メソッドがあるとします。
猫の鳴き声メソッドは「ニャーニャー」と返します。
ある関数で「ワンワン」という文字列が来た際に
プロジェクト内の動物派生クラスを個別に生成して鳴き声メソッドを叩き、
ワンワンと鳴く派生クラスを特定する逆引きのような処理をしたいです。
if文で全派生クラスを書けばいいですが、派生クラスはガンガン増えていくので、派生クラスを定義するたびににそのif文をメンテするのはメンテ漏れのバグのリスクがあるので
プロジェクト内に現在定義された動物派生クラスを全部取ってくる事が出来れば、それをグルグル回せばメンテナンス不要のコードにできるのですが

0957デフォルトの名無しさん (スップ Sd7f-H4RV)2020/12/11(金) 12:46:55.66ID:VHLzC15hd
SourceGeneratorならできるだろうけど、何の情報もなしにclass探すのは無理じゃない?
テーブル内のclassに対して全部処理するとかはできるだろうから編集箇所は最小限で済ませられるけど

0958デフォルトの名無しさん (スッップ Sdff-QrRs)2020/12/11(金) 12:49:19.99ID:9hZE0nsxd
>>956
リフレクションで頑張れば行けるかもね

0959デフォルトの名無しさん (アウアウエー Sa9f-5lnE)2020/12/11(金) 13:03:11.90ID:exUCYAAha
>>956
動的にサブクラスを列挙するのはたぶん無理じゃないの?
public abstract class Animal
{
  public Animal(Animal a)
  {
  ...
  }
}
こういう風にAnimalのコンストラクタでthisを渡すことを強制しておけば
少なくともインスタンス化されたものは把握できるね。

0960デフォルトの名無しさん (ワッチョイ ff7c-kRr2)2020/12/11(金) 14:37:47.39ID:m/dnIqsS0
typeof(Animal).Assembly.GetTypes().Where(_type => _type.IsSubclassOf(typeof(Animal)))
型の列挙自体はこんなんでできるけど
インスタンスどうするの?っていう
全部の型にpublicな引数なしコンストラクタが必ずありますならなんとかなるけど

0961デフォルトの名無しさん (ワッチョイ 7fbb-Drbj)2020/12/11(金) 15:40:59.87ID:69jKb/QY0
そういやクラスに、静的に実行される静的イニシャライザを書けるようにしてくれたらいいのにと思うことあるな

>>961
書けるぞ

0963デフォルトの名無しさん (ワッチョイ e701-BALy)2020/12/11(金) 18:41:57.69ID:bOY22DN70
>>959
それthisじゃない。

0964デフォルトの名無しさん (アウアウエー Sa9f-5lnE)2020/12/11(金) 19:31:50.50ID:exUCYAAha
>>963
意味が分からんけど
public class Cat:Animal
{
  Cat():base(this){ ... }
}
これはNGみたいだね。
別にこれで良かったのか
public abstract class Animal
{
  private static List<Type> Animals = new List<Type>();
  public Animal()
  {
    var t = this.GetType();
    Animals.Remove(t);
    Animals.Add(t);
  }
}

0965デフォルトの名無しさん (ワッチョイ df2f-Goa5)2020/12/11(金) 19:37:25.05ID:PS9oWtr00
>>960
自分のインスタンスを返す静的メソッドって作れないのか
それを親クラスかインターフェイスで規定しておけばよいんじゃ

つかわざわざインスタンス生成しなくても、鳴き声が自分かどうか判定する静的メソッドで事足りる気がするな

0966デフォルトの名無しさん (ワッチョイ 7ff2-5K8T)2020/12/11(金) 20:32:27.16ID:ZS/vCbaU0
>>940-941
渋谷で超勇者展始まったぞ!

0967デフォルトの名無しさん (ワッチョイ 7fbb-Drbj)2020/12/11(金) 21:16:51.65ID:69jKb/QY0
>>962
ま、まじで?
なんて機能名でググれば出てきそう?

0968デフォルトの名無しさん (アウアウイー Sa1b-j1yc)2020/12/11(金) 21:34:43.36ID:bOExnmUya
「C# 静的イニシャライザ」で検索して普通に引っかかるでしょ
イニシャライザ/コンストラクタと呼び方が異なるだけで

0969デフォルトの名無しさん (アウアウクー MM1b-iTOR)2020/12/13(日) 02:19:21.24ID:1g8P/X2hM
c#でRSSリーダー作れましゅか?

0970デフォルトの名無しさん (ワッチョイ 8710-kDsR)2020/12/13(日) 02:27:42.98ID:mhM78eSV0
もちろん作れるさ

0971デフォルトの名無しさん (ブーイモ MMeb-egwc)2020/12/13(日) 06:26:58.36ID:TsdjEAD7M
c#では作れないものはありますか?

0972デフォルトの名無しさん (ワッチョイ bf62-MC0k)2020/12/13(日) 07:37:48.18ID:18RrlrES0
>>965
全ての派生クラスで同じ名前の静的メソッドやプロパティを強要できるならそれでよさそうだけど出来なくね?

0973デフォルトの名無しさん (ワッチョイ df2f-Goa5)2020/12/13(日) 09:06:36.69ID:unG5NNsQ0
>>972
静的メソッドって継承できないのか。知らなかったぜ
C#8.0でインターフェイスに定義できるようになったのかな

0974デフォルトの名無しさん (ワッチョイ df01-1sNk)2020/12/13(日) 10:08:37.85ID:3XNF+7/F0
>>971
お前の能力を超えたソフト

0975デフォルトの名無しさん (アウアウウー Sa6b-lled)2020/12/13(日) 10:11:14.52ID:7La4X7B8a
ネイティブDLLが作れるようになってくれないかな

0976デフォルトの名無しさん (ワッチョイ df24-S/l1)2020/12/13(日) 10:21:46.03ID:BQqdDV6m0
>>971
カーネルドライバ

0977デフォルトの名無しさん (ワッチョイ c702-kNbH)2020/12/13(日) 10:26:06.52ID:QKeUnYpp0
>>971
完全なマシン語にコンパイルされるプログラム
これでないとOSカーネルとかデバイスドライバとか作れない

0978デフォルトの名無しさん (ワッチョイ 2766-H4RV)2020/12/13(日) 11:14:15.79ID:KcA96kkp0
マシン語にしたバイナリを出力するアプリをC#で作ればなんでもできることになる

0979デフォルトの名無しさん (ワッチョイ bf8c-2hao)2020/12/13(日) 14:02:37.13ID:U1NW+seS0
nativeaot(-llvm)?(旧corert)ってのがあってぇ…

0980デフォルトの名無しさん (ワッチョイ df01-1sNk)2020/12/13(日) 14:07:55.69ID:3XNF+7/F0
.NETNative をちゃんと作ればC#でもネイティブコードにコンパイルできるだろうし、そもそも性能がたいして必要ないならインタプリタでもドライバを書くことはできるだろうけどGCに依存してる言語はタイミングが読めないから難しいわな

0981デフォルトの名無しさん (ワッチョイ a74f-sAgx)2020/12/13(日) 14:47:32.03ID:E31xy0lw0
C++/CLI復権してくれたらなぁ。まずないとは思うが。

0982デフォルトの名無しさん (ワッチョイ 4768-Goa5)2020/12/14(月) 19:47:40.61ID:EY+baBGY0
WEBの写真ダウンロード処理をしてるのですが、出来るものと出来にくいものがあります。
出来にくいもの(EDGEブラウザで開けるとすぐ見れるがダウンロードでは20秒くらいかかる)
https://i.dailymail.co.uk/i/pix/2013/05/09/article-2321812-19B162BA000005DC-124_634x449.jpg
出来るもの(すぐにダウンロードできる。EDGEブラウザでもすぐ見れる)
https://i.imgur.com/bnUR6en.png

System.Net.WebClient client = new System.Net.WebClient();
client.DownloadFile("https://i.dailymail.co.uk/i/pix/2013/05/09/article-2321812-19B162BA000005DC-124_634x449.jpg";, @"D:\tmp.jpg");
こういうのはサーバー側でアクセス種類がブラウザかプログラムか見分けられて
対策されてるのでしょうか?

0983デフォルトの名無しさん (ワッチョイ a724-S/l1)2020/12/14(月) 20:29:19.80ID:w+atsEVh0
出来る出来ないなら、サーバー側でUserAgentやクッキーやその他ヘッダを見てブロックするというのは普遍的な手法だからよくある事だけど
出来るものと出来にくいものはよくわからないが、一応ダウンロード前にこれ挟んで試してみるといい
client.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36");

0984デフォルトの名無しさん (アウアウイー Sa1b-j1yc)2020/12/14(月) 21:37:41.18ID:A7r1gxtPa
ブラウザでの表示が早いのはキャッシュされてるだけだと思うけど・・・・
キャッシュ全クリアしても本当にすぐ見れる?

0985デフォルトの名無しさん (ワッチョイ 4768-Goa5)2020/12/15(火) 10:35:58.18ID:md2wlUIm0
>>983
やってみましたら止まらずすぐにダウンロードできるようになりました。
サーバー側でUSERAGENTが入ってるか入ってないかでプログラムアクセスかどうかの選り分けをして
USERAGENTが空のものには20秒くらいわざとジラシが入ってるようです。
一括ダウンローダーとかの対策かなんかかもしれませんね。
ありがとうございました。

0986デフォルトの名無しさん (ワッチョイ 7f33-c5Po)2020/12/15(火) 12:40:58.94ID:uedfi1MA0
UA偽装とかリファラ偽装とか懐かしいワードを思い出した

0987デフォルトの名無しさん (ワッチョイ a724-S/l1)2020/12/15(火) 13:14:41.01ID:fP0YYSyi0
>>985
ちなみにChromeはかなり小まめにアプデ入る訳だが
Botは往々にして"Chrome/87.0.4280.88"の部分が古いままという特徴があって最新版一つ手前よりも前のバージョンだと弾くって言う対策してる鯖もある
まぁここまで対策してくるのは稀だから放置でも大方問題にはならないが、インスコフォルダやレジストリや最悪webなどからバーション取得する方法あった気がするから暇なら最新版のUAにするロジックも入れておいた方がいい

規模のでかいプロジェクトを開発してるといつもどのファイルを開いてるのかわからなくなったり、目的のファイルが見つからなかったり大変なんですけどどうしたらいいですか?
目的のフォルダに対してブックマーク的なものが設定できたりしたら迷子にならなくてすむんですがそんなのないですか?

0989デフォルトの名無しさん (ワッチョイ a724-S/l1)2020/12/15(火) 23:06:40.58ID:fP0YYSyi0
ref readonly変数のstructのメンバ関数呼ぶと防御コピーが発生するのは仕様?
refだけなら防御コピー発生しないのは確認できたんだけど

0990デフォルトの名無しさん (ワッチョイ 7f63-H4RV)2020/12/15(火) 23:23:22.02ID:j+VqSr9F0
>>988
フォルダじゃなくてファイルだけどvisual studioならブックマークあるよ
ただ、そもそも大規模になっても迷子にはあんまならないかな?

>>990
クソみたいな設計だから困ってたんですよ
ありがとうございます

0992デフォルトの名無しさん (ワッチョイ 4733-BALy)2020/12/15(火) 23:32:36.78ID:korWFWn50
>>988
同じ事思ってる。
VSだと開いてるファイルのタブに、プロジェクト毎に色分けする拡張入れてる。
あとソリューションエクスプローラーを複数開いたりしてる。

0993デフォルトの名無しさん (ワッチョイ ba3e-3rSP)2020/12/16(水) 01:40:22.65ID:FCFqtT9K0
>>992
複数開くってどうやるの?

0994デフォルトの名無しさん (ワッチョイ ff54-G9sQ)2020/12/16(水) 03:17:07.88ID:eAMqD84A0
共通プラットフォームの .NET 5 が出てきたってことは、.net standard はもう次バージョンは出ないんですか?

0995デフォルトの名無しさん (ワッチョイ eaad-8w8B)2020/12/16(水) 03:21:40.46ID:4YU+JB8/0
うん

0996デフォルトの名無しさん (ワッチョイ 0fa7-o020)2020/12/16(水) 07:09:48.69ID:ksVkXCtR0
>>994
誰も新しい方使わなかったらまだワンチャンあるかも?

0997デフォルトの名無しさん (ワキゲー MMa2-Gz4g)2020/12/16(水) 11:31:10.25ID:TSvQ057dM
次スレ立てた
ふらっと C#,C♯,C#(初心者用) Part149
https://mevius.5ch.net/test/read.cgi/tech/1608085775/

0998デフォルトの名無しさん (ワッチョイ be2c-bCZc)2020/12/16(水) 20:14:15.21ID:p7rmX8ox0
>>989
そりゃメソッドは内部でメンバを書き換えてるかもしれないからな
readonlyなメソッドならコピーされない

0999デフォルトの名無しさん (ワッチョイ be7b-kLfm)2020/12/17(木) 20:00:41.21ID:Z1ozW/Gv0
>>997
スレたて乙

1000デフォルトの名無しさん (ワッチョイ be2c-bCZc)2020/12/17(木) 20:54:36.61ID:czJEN8EN0
埋め

10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 204日 0時間 25分 55秒

10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。