ふらっと C#,C♯,C#(初心者用) Part146
レス数が950を超えています。1000を超えると書き込みができなくなります。
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part145
https://mevius.5ch.net/test/read.cgi/tech/1570446977/
■関連スレ
C#, C♯, C#相談室 Part95
https://mevius.5ch.net/test/read.cgi/tech/1508168482/
■コードを貼る場合は↓を使いましょう。
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 System.Drawing の Point は int か PointF の float なのに
System.Windows の Point は double で
結局3種類ある訳で
なんでこんな面倒くさいことになってんの? いや学んでないでしょ
本で勉強すれば最序盤で解説されることだし
ググって拾っても確実にその知識には最序盤で出会う Media.Color「そんなこと言ってもなぁ?」
Drawing.Color「ああ、今更だよなぁ」 >>846
まず同期処理で書くことできる?
async、awaitは非同期をあまり意識させることなく実装できるのが強み
なんで、まずは普通に書けないと話にならない
自分は非同期じゃなかったらこうするってコードをあげてみたらどう? async await って Unity でも使えたっけ >>851
System.Drawingはuwpで使えるかな? asyncawait使っちゃうと普通のメソッドとして呼びたいときハングアップするよ
ババ付きにしちゃうよりはDoEvents呼んだ方がいいからね WPFはそこそこ普及したがUWPは完全に死産だったな 意味不明な縛りプレイとか雑談とか回線コロコロしている人他へ行ってくれないかな プログラムとして良い悪いは別にして
グローバル変数使わずにローカルだけでやるというのは
明確にオブジェクト指向を意識する練習でもあるから
頭の体操にはいいじゃん >>859
するよ
少なくともするときがあることは知ってるだろ?
そしてそれは同期処理にしておけば起きないことも知ってるだろ?
じゃあ、するんだよ await を使ったメソッドの完了を待つTask で
Task.Wait()
するとGUI アプリではデッドロックする
でも、そこさえ注意すればいいだけ めんどくせえから全部ConfigureAwait(false)書いときゃいいんだよ! >>862
オブジェクト指向関係あるかな?w
というかね、フィールドという明示的な実体を持たないくせに
インスタンスと同じ寿命を持つ「何か」が存在する、というのを
気持ち悪いと思わない人はプログラマの適正が疑わしいと個人的には思うよw 書いてみたけどくだらんなやっぱりw
protected async override void OnLoad(EventArgs e)
{
base.OnLoad(e);
var foo = WrapAction(() => textBox1.Text += "1", 1000);
var bar = WrapAction(() => textBox2.Text += "2", 2000);
await RepeatAction(() =>{foo(); bar();}, 10);
}
private async Task RepeatAction(Action a, int interval)
{
var closed = false;
FormClosed += (sender, e) => closed = true;
while(!closed)
{
await Task.Delay(interval);
a();
}
}
private Action WrapAction(Action a, int interval)
{
var timeout = System.Environment.TickCount + interval;
return () =>
{
if(Environment.TickCount >= timeout)
{
timeout += interval;
a();
}
};
} OS:Rasbian Stretch
ランタイム:Mono JIT compiler version 4.6.2 (Debian 4.6.2.7+dfsg-1)
ソース:https://i.imgur.com/cFLOcYN.png
パッケージ:https://i.imgur.com/bWRI0Zg.png
エラー:Method 'System.Net.ServicePointManager.CloseConnectionGroups' not found.
ビルドターゲット:.NET Framework4.6.1
Windowsでは正常に動作します。
AngleSharpを入れていない場合であればMonoのほうでも動作します。
Anglesharpを入れるとバイナリのフォルダに大量のSystem.***.dllができます。
AngleSharpを入れていないと動くのに入れるとエラーが出る理由はなんですか? >>871
相談スレの方ですか?
AngleSharpを入れない場合はちゃんと動く理由がわかりません。 エラー内容見ろ
エラー:Method 'System.Net.ServicePointManager.CloseConnectionGroups' not found.
System.Net.ServicePointManager.CloseConnectionGroupsというメソッドが見つからないと言うことだ
何故見つからないかと言えば前に書いた内容で調べるべき 入門者なのかもしれないけどいきなり面倒な方法を使って勉強しても大変だよ
標準的な内容である程度勉強した後に発展でMONOを使うならいいと思うと書いてもまあ理解されないだろうな
標準的な入門を選ぶか
いばらの道の入門を選ぶかは個人の自由だもの >>873
AngleSharpを入れなければそのようなエラーは出ません
その理由がわからないという質問です。 知らないが憶測
AngleSharpで要求されるバージョンのライブラリを入れると
そのメソッドがないライブラリが入りそちらが優先されてしまうため anglesharpが要求してるもんが環境によって違ってるんじゃない? System.AggregateException: One or more errors occurred. ---> System.MissingMethodException: Method 'System.Net.ServicePointManager.CloseConnectionGroups' not found.
at System.Net.Http.HttpMessageHandler.Dispose () [0x00000] in <27bbdd4ceaf04a95b172ee502d76a725>:0
at System.Net.Http.HttpMessageInvoker.Dispose (System.Boolean disposing) [0x0001e] in <27bbdd4ceaf04a95b172ee502d76a725>:0
at System.Net.Http.HttpClient.Dispose (System.Boolean disposing) [0x0002c] in <27bbdd4ceaf04a95b172ee502d76a725>:0
at System.Net.Http.HttpMessageInvoker.Dispose () [0x00000] in <27bbdd4ceaf04a95b172ee502d76a725>:0
at ConsoleApp17.Program+<MainAsync>d__1.MoveNext () [0x00117] in <a0ba2302dc914c45933daaf9af0bf56d>:0
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) [0x00014] in <8f2c484307284b51944a1a13a14c0266>:0
at System.Threading.Tasks.Task.Wait (System.Int32 millisecondsTimeout, System.Threading.CancellationToken cancellationToken) [0x00052] in <8f2c484307284b51944a1a13a14c0266>:0
at System.Threading.Tasks.Task.Wait () [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0
at ConsoleApp17.Program.Main (System.String[] args) [0x00005] in <a0ba2302dc914c45933daaf9af0bf56d>:0
---> (Inner Exception #0) System.MissingMethodException: Method 'System.Net.ServicePointManager.CloseConnectionGroups' not found.
at System.Net.Http.HttpMessageHandler.Dispose () [0x00000] in <27bbdd4ceaf04a95b172ee502d76a725>:0
at System.Net.Http.HttpMessageInvoker.Dispose (System.Boolean disposing) [0x0001e] in <27bbdd4ceaf04a95b172ee502d76a725>:0
at System.Net.Http.HttpClient.Dispose (System.Boolean disposing) [0x0002c] in <27bbdd4ceaf04a95b172ee502d76a725>:0
at System.Net.Http.HttpMessageInvoker.Dispose () [0x00000] in <27bbdd4ceaf04a95b172ee502d76a725>:0
at ConsoleApp17.Program+<MainAsync>d__1.MoveNext () [0x00117] in <a0ba2302dc914c45933daaf9af0bf56d>:0 <--- .net framework ≠ monoのframework
それぞれ違う実装で別物
それを.net standardで標準化しようとしてる
でも実際にちゃんと実装されてるか不明
仕組みがすべてうまくいってるのか不明
対応したライブラリを作っている人の検証も十分かどうかわからない
動かない場合他人に聞くより自分で調べるしかない >>880
ありがとうございます!
しかしそのまま削除してしまうと下記のようなエラーが出てしまいますね…
コンパイルからするとしたら勝手にコピーされるのを禁止する的なオプションが必要そうで難しそうですね…
Unhandled Exception:
System.BadImageFormatException: Could not resolve field token 0x04000002
File name: 'ConsoleApp17'
at ConsoleApp17.Program.Main (System.String[] args) [0x00000] in <a0ba2302dc914c45933daaf9af0bf56d>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.BadImageFormatException: Could not resolve field token 0x04000002
File name: 'ConsoleApp17'
at ConsoleApp17.Program.Main (System.String[] args) [0x00000] in <a0ba2302dc914c45933daaf9af0bf56d>:0 コンインハイブで有罪判決 ♪─O(≧∇≦)O──♪
ユーザーな cpu、gpu を勝手に使い、外部にデータを送信していたのがダメっぽい。
ユーザーの許可なく、デリゲートに処理なげるコードを書いてるc# 犯罪者も全員逮捕すべきだね。
ボタンを押した時の処理をボタンクラス等に書いておけば、インテリセンスで入力補完できて便利なのでみんなでそうすべき。 Hoge[] hage = new Hoge[123];
List<Hoge> hige = new List<Hoge>();
foreach(Hoge h in hage) hige.Add(h);
hage.Length と hige.Count とでプロパティ名が違うのが気になります そりゃ列には長さはあるけど、リストに載ってるものは個数じゃないか? リストはコレクションを継承してるからな
コレクションに長さはおかしい 配列だと.Countが呼び出せないのにIList<T>にキャストすると呼び出せるようになるのって、そういえば何故なんだろう? 物によって lengthの時もあるのが…ってこと? 気になったから調べたぞ
Arrayクラスの実装に↓のようなものがあるというのが答えかな
(IListはICollectionを継承してる)
// Number of elements in the Array.
int ICollection.Count
{ get { return Length; } }
こう書くとCountはprivateになるから見えないが
インターフェイスは全部publicだからインターフェイスに直接アクセスすると当然見える
なんか微妙な挙動な気もするが そもそも愚問だと思うよ
逆に実装してるはずのインターフェイスのメンバーにアクセスできなかったらおかしいでしょw
意味がわからないよ
インターフェイス周辺の文法はVBの方がイケてるね。
VBの文法ならこういう変な勘違いは起こらない 何の問題もないからVBとかいらない
想像するしかないけど配列の長さとしてはLengthの方がふさわしいから隠したんだろ
ICollectionとして扱えば一貫してCountが使えるんだから何の問題もない 明示的実装にしたのは単に混乱防止のためでしょ。
(ジェネリッククレクションは.NET 1.0の時代には存在しない)
Lengthという名前が採用されている理由はシンプルにCountにすると、
例えばnullを要素としてカウントしないアプリケーションだと違和感があるからじゃないの?
かといってCapacityとも違う。だからLengthなんでしょう。たぶん。 もっとシンプルに、たとえ多次元配列であっても配列はメモリー上の連続した領域であることを
意識させたかったのかもしれない。考えすぎかw cnt「フフフッ」
siz「ワレラガ」
len「ミツカルカナ?」
typ,mng,ary,kbn←四天王 平日の昼間にスレ違いの雑談で埋めるようなところにワッチョイはもういらないよな
次スレは
ふらっと C#,C♯,C#(初心者用) Part141
https://mevius.5ch.net/test/read.cgi/tech/1544838367/
使ってここの継続は立てるなよ。前スレからだがテンプレも読めず雑談やスレ違いで埋める数人のためのスレとかいらん >>903
もともとワッチョイなんて有害無益なのは(普通の思考回路してたら)分かるけど
そうじゃないのに限って「声がでかい」のでそんなこと言っても無駄だと思うよw ワッチョイの意味がよくわかってないのか、有害の意味がわからん
コードが付くだけやん >>904
普通の思考回路してたら分かるとかレッテル張って
反対意見潰そうとするのはフェアじゃないな せっかくレッテルまで貼ったのに誰にも共感してもらえてなくて草 自演ができなくなると何かまずいのか?
たまに単発IDの頭のイカレタ質問と回答が書き込まれる一連のやり取りがそうなのか?
明らかに初心者の域出てるししかも誰も興味ないし
他の初心者の邪魔だからやめた方がいいぞアレ
人の気持ちを考えられない人間になると設計も自然とヘタクソになっていくから
プログラミングの腕も引きづられて落ちていくぞ ようわからんが、単芝生やしてる15/15はこのスレの大古参なので、生意気な口を聞くなよ 15/15ってなんや
(アウアウウー Sa9b-WggA)のことね
大先輩だよ
もう13年くらいいるよね >>905
例えば>>909-910みたいな変なの。
ちょっと前新型コロナの話題が出てたけどあれと同じだよ。
日本人は目的合理性ではなく気が済むかどうかで意思決定しがち。
日本人はこういうところ韓国人と完全に同じだね。
ワッチョイに推進論者が意図するようなプラスの効果なんか期待できないことは自明だ。
そのくせに意図せざる負の効果だけはしっかり存在する。
これ言うと荒れるかもしれないが、ワッチョイ推進論者は匿名掲示板で
「他人が何者か特定した気にならないと気が済まない」ストーカー気質の変な少数者だが、
本人たちにその自覚はない。 ワッチョイみて、なんだまたアイツか。って安心するんだろ >>911
負の効果なんてないだろ
自演できなくて悔しいですって正直に言えば賛成してやらんでもないぞ レス番飛んで変な流れになってると思ったら謎理論を展開してる人が
意図せざる負の効果とかかっこいいこと言ってるけど
ワッチョイでNGされちゃうことで構ってくれる人が減るのが嫌なだけでしょ 自作自演できた方がメリット大な理由
デメリットにならないか等kwsk jsonの配列の行数が欲しくて以下のようなコードを書いたのですが
var jsonlist = DynamicJson.Parse(@"{""a"":1, ""b"":2}");
int cnt = 0;
foreach(var json in jsonlist)
{
cnt++;
}
jsonlist.Count()的な端的な書き方はあるでしょうか? >>917
ちらっと見た限りDynamicJsonってDynamicObject派生の独自の実装みたいだから
クラス作った人に聞くしかないのでは?
http://neue.cc/2010/04/30_256.html Dynamicに物故んだだけみたいだからcount取れるんだろうか? 無理ですか
メソッドチェーンで1行で書けたら綺麗だなと思っていましたが地道にカウントします
ありがとうございます いやいやいや
一行で書きたいなら自分で何でも書けばいいだけだろうw そういう要望ならToList()すればいいのでは? DynamicJSONは実用品というよりPOCで、今時誰も使ってないよ
デファクトスタンダードはJSON.NETで、LINQもdynamicも使える json.netはデファクトスタンダード感あるな
他だとsystem.jsonとかutf8jsonとかが代替じゃないのかな >>923
リンク先のサンプルで配列に変換してたからそれでやんのがいいかもね
試してないから出来るのか知らん
((dynamic[])jsonlist).Length Json.NETって何だ、自分はNewtonsoft.JSONしか使ったことないけど大丈夫かと思ったら前者がライブラリ名、後者が名前空間名で同じものか、焦ったわ jsonライブラリで一番メジャーなのってNewtonsoft.Jsonじゃないの?
Json.Netがこれのことか?
パフォーマンス的には>>921の人が作ったutf8Jsonが世界最強らしいが utf8jsonは早いのかもしれないけど、publicメンバじゃないとダメとか
依存ライブラリが多いとかちょっと使い勝手がな。。
あと全体に言えるけど、
DateTime型をそのままJSONに変換したときに、JSONマッパ毎に結果が異なるのはどうにかならないかな 元々のjavascriptに準拠してないんだよな
jsで読み込めないのにJSONと言い張るなよとw >>933
Newtonsoft.Json==Json.Net listの一部要素を切り出したい時ってインデックスの指定以外で早い方法ある?
要素100で0~8,3~21,10~30,50~61,~~みたいに切り出すとして切り出す長さは事前に与えられるケース
getRangeはコピーつくるみたいなので除外して、skipとtakeはどうなんだろと調べてみたらどうにも結果が安定しない
skipは先頭からn個目まで一気にスキップするわけではなくて、順番に数えてn個までの要素を跳ばしてるのかな JSONは既にJavaScriptの仕様から乖離してるからな。
53bitを超える整数リテラルはJSONでは合法だがJSでは読めるとは限らない。 >>938
ないのでは?
あくまでIEnumerable前提の実装だから非効率なのは仕方ないよね。
分かってるだろうけどそれが気に入らないなら自分で書けばいいだけなわけで IEnumerableって順序ないのにSkipの説明には「シーケンス内の指定された数の要素をバイパスし、残りの要素を返します」って書いてるけどシーケンスって順序決まった列じゃないの? それは単なる使う側の問題では?
その都度乱数を返すIEnumerableとかあったとしてもシーケンスとして扱うことは可能
再現性がないだけで >>944
こんなのあるんだなあ。ありがとう
むしろこっちの書き方に混乱した
> sequence is IList<T> list
C#7からできるようになったみたいだけど、これのメリットって変数のスコープを限定できるって理解でいい? >>943
IEnumerableを継承してるコレクションもシーケンスだったのか
コレクションというくらいだからおもちゃ箱のおもちゃみたいなグチャグチャな塊のイメージだった >>938
arrayに変換できるならspanでアクセスするのが早いんじゃないかな?
spanができて飛び飛びのインデックスへのアクセスが多いケースでは問題なければarrayでことが増えた >>946
型チェックとnullチェックとキャストが同時にできる
キャスト結果がコンパイラによって保証されている 範囲アクセスの新しい構文できたよね
list[0..5]、list[5..10]、list[a..a+5]で5個ずつ抜き出し
使ったことないけど >>946
パターンマッチで一発でできるのがメリットでそれ以外は副産物じゃないかな
if (sequence is IList<T> list) {
return list[5..];
}
は
IList<T> list;
if (sequence is IList<T>) {
list = (IList<T>)sequence;
return list[5..];
}
と同じイメージで変数スコープはちょっと特殊 レス数が950を超えています。1000を超えると書き込みができなくなります。