2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん :2020/02/19(水) 17:25:41.55 ID:IsrGexiaF.net
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part146
https://mevius.5ch.net/test/read.cgi/tech/1576069931/
■関連スレ
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

2 :デフォルトの名無しさん :2020/02/19(水) 17:29:40.75 ID:edMDbkMkF.net
C#

3 :デフォルトの名無しさん (ワッチョイ ff63-ufZq):2020/02/20(Thu) 01:30:01 ID:0E34SqOf0.net
ガチガイジとスルーもできないキッズには、ワッショイは何の効果もないと十分証明されたろ

4 :デフォルトの名無しさん (ワッチョイ ff6a-Nz9x):2020/02/20(Thu) 01:40:39 ID:C2E41YSR0.net
>>3
全然されてない
ワッチョイなかったらもっと酷いことになってた可能性がある

5 :デフォルトの名無しさん (ワッチョイ a3e7-KdKg):2020/02/20(Thu) 02:48:48 ID:xxzDxoBT0.net
ワッチョイでNGすれば良いし

6 :デフォルトの名無しさん :2020/02/20(木) 03:04:29.36 ID:M4vgGbqza.net
>>3
だから、その通りだけどそんなこと言っても「バカの壁」の向こう側には絶対通じないw
特に日本はそういう国ですってw
そんなこといい歳こいてたら毎日嫌というほど体験してるよね

ワッチョイは有害無益なだけだけど、害と言っても別にたいしたことないので
それでイラショナルな皆さまの気が済むなら目くじら立てることもないと思う。
愚かしいとはいつも思ってるけどwww

7 :デフォルトの名無しさん (ラクッペ MM87-wHG4):2020/02/20(Thu) 07:02:00 ID:lwE/hX+lM.net
本当に証明された?
ワッチョイないと自演楽だからコロコロ変える奴いそうだが

8 :デフォルトの名無しさん :2020/02/20(木) 07:23:34.72 ID:W2AwCBod0.net
息をするように自演するやついるんだよな
プログラマというか技術職自体向いて無いからさっさと立ち去ってほしい

9 :デフォルトの名無しさん :2020/02/20(木) 10:30:18.93 ID:sbHTvmgoF.net
>>6
新型チュンコロ感染と一緒で常在化しててもただちに影響はありませんな

10 :デフォルトの名無しさん (アウアウウー Sae7-icJa):2020/02/20(Thu) 12:38:26 ID:M4vgGbqza.net
言っても無駄だけど、普通の人は2chくんだり、特にこんな人口が少ない板の
人口が少ないスレで「自演」とやらをやりたいなんて動機を持ってない。

もちろんこの世は普通じゃない人もいる。
その普通じゃない人がワッチョイ付いてるぐらいで普通じゃない行為をギブアップするだろうか?
ありえなんじゃないの?

あんあの気が済むだけだよ。
だいたいそもそも他人の自作自演が気になること自体が普通じゃないよ悪いけど。
それ、何が問題なの?意味が分からないよ。

日本って地方の条例どころか国の法律がこういう目的や実効性を吟味せずに
感情論で制定される感情論の国なんだよね。韓国と100%同じ

11 :デフォルトの名無しさん (ラクッペ MM87-wHG4):2020/02/20(Thu) 12:40:53 ID:lwE/hX+lM.net
ワッチョイのどこが有害なのか
なにもしなきゃ無害だろう

12 :デフォルトの名無しさん :2020/02/20(木) 12:43:48.28 ID:sbHTvmgoF.net
防衛する側としてはワッショイのおかげで見なくて済むから気が済むのは確か

13 :デフォルトの名無しさん :2020/02/20(木) 13:22:03.09 ID:mvd02NB50.net
家に鍵かけたって本気の泥棒はどこからでも入ってくる
だから鍵なんて無くすべきだって主張?

一部でも効果があり、他者にデメリットが無いならあっていいんじゃいの?
一部というのが例え1%だろうとあって困らないならあっていいじゃん

デメリットがあるなら効果のある範囲とデメリットの内容の天秤になるのはわかる
そしてその天秤具合は人それぞれなので議論しても答えは出ない宗教論争と一緒

14 :デフォルトの名無しさん :2020/02/20(木) 14:26:02.37 ID:0JvS6qsQ0.net
変な書き込みがあっても、普通は気にしなけりゃいいだけだろう
だけど統合失調症の人には、そういう書き込みが目に入るだけで発狂しちゃうんだろうな
ワッチョイは統合失調症の閲覧者のためにあるようなもん

15 :デフォルトの名無しさん :2020/02/20(木) 14:37:30.03 ID:ZbpWL9ae0.net
毎日IDでNGに放り込むか、週一でワッチョイでNGに放り込むかの違いしかないなw

16 :デフォルトの名無しさん :2020/02/20(木) 15:19:48.73 ID:IVVK5qcRa.net
道端に落ちてるゴミや犬の糞は見たくない。掃除するのが毎日なのか週一ですむのかなら、後者の方がありがたいというのは普通の感覚だと思うぞ。

17 :デフォルトの名無しさん :2020/02/20(木) 15:20:24.08 ID:mvd02NB50.net
ワッチョイって後ろ4文字は1週間でもかわんないんじゃなかった?
いつも後ろ4文字でNG入れてるわ

18 :デフォルトの名無しさん (ワッチョイ ffb9-icXw):2020/02/20(Thu) 15:36:09 ID:jdtbGwr30.net
相談させてください。

System.Windows 名前空間の Thickness 構造体をキーとした
Dictionary のパフォーマンスが期待通りにならなかったので、
試しに new Thickness(0), new Thickness(1), new Thickness(2), ...
のハッシュコードを調べてみたところ、すべて 0 になっていました。

ひとまず以下のような EqualityComparer を定義して対応しているのですが、
もう少し真っ当な解決策がありましたらアドバイスをいただけないでしょうか。

class ThicknessEqualityComparer : IEqualityComparer<Thickness>
{
  public bool Equals(Thickness tx, Thickness ty)
    => tx.Equals(ty);

  public int GetHashCode(Thickness t)
    => (t.Left, t.Top, t.Right, t.Bottom).GetHashCode();
}

それから、もし Thickness 構造体のこの挙動が不具合だとすれば
フィードバックを行おうと思っているのですが、ご意見をいただけないでしょうか。
また実際にフィードバックを行う際は、送信先は IDE である Visual Studio の
メニューバーの「ヘルプ(H) → フィードバックを送信(F)」で適切でしょうか。

どうぞよろしくお願いいたします。

19 :デフォルトの名無しさん (ワッチョイ 8f7c-kENX):2020/02/20(Thu) 15:49:35 ID:huOL9BGI0.net
https://referencesource.microsoft.com/#PresentationFramework/src/Framework/System/Windows/Thickness.cs,109d8135ab5a3074
Left ^ Top ^ Right ^ Bottomだから全部同値なら0
手抜き実装ではあるが別に不具合というわけでもないな

20 :デフォルトの名無しさん (ワッチョイ ffb9-icXw):2020/02/20(Thu) 16:01:01 ID:jdtbGwr30.net
>>19
ありがとうございます。

なるほど。。。メジャーなものでもこういう手抜き実装ってあるものなんですね。
不具合だと認められて直してもらえる雰囲気でもなさそうなら、
諦めて自前で EqualityComparer を作るしかないでしょうか。

ただこうなってくると、>>18 で使っている ValueTuple の
GetHashCode の実装も怪しく感じてしまうのですが、
もしそちらのソースコードもご存知でしたら教えていただけないでしょうか。
(貼り付けていただいた Reference Source では見つかりませんでした)

よろしくお願いいたします。

21 :デフォルトの名無しさん (ワッチョイ 8f7c-kENX):2020/02/20(Thu) 16:23:37 ID:huOL9BGI0.net
https://github.com/dotnet/coreclr
.NET CoreのソースだけどValueTupleなら.NET Frameworkでもそのまま持ってきてるんじゃないかな

22 :デフォルトの名無しさん :2020/02/20(木) 17:21:18.55 ID:Bpu8FWYY0.net
>>1スレたて乙

このスレの雑談厨
ワイーワ2 FFdf-IPX/ アウウィフ FFe7-IPX/
ワッチョイ ff63-ufZq
ワッチョイ ff6a-Nz9x
ワッチョイ a3e7-KdKg
アウアウウー Sae7-icJa
ラクッペ MM87-wHG4
ワッチョイ 83a7-FTwr
ワッチョイ 6388-qdXs
ワッチョイ cf2d-z3z/
ワッチョイ e333-YdYx
アウアウウー Sae7-xY2O
相談室で暴れている人
ブーイモ MMff-o/5i
NG推奨

23 :デフォルトの名無しさん (ワッチョイ ffb9-icXw):2020/02/20(Thu) 17:37:44 ID:jdtbGwr30.net
>>21
たびたびありがとうございます。
確認したところ、示していただいた URL から確認できる
ValueTuple のハッシュコードは問題なさそうでした。

内容を簡単にご報告させていただきますと、
ValueTuple<T1, T2, ...> の GetHashCode は
System 名前空間の HashCode 構造体の静的メソッドである
int Combine<T1, T2, ...>(T1 value1, T2 value2, ...) を
呼び出しているようです。

int Combine<T1, T2, ...>(T1 value1, T2 value2, ...) メソッドの中身は、
まず hash 変数をシードが固定された乱数で初期化し、
value1, value2, ... それぞれのハッシュコードに
素数の掛け算、足し算、巡回ビットシフトを組み合わせた計算で hash を更新した後、
素数の掛け算と(巡回でない)ビットシフトを組み合わせた最終処理を施して
Combine されたハッシュコードを生成するという、かなり丁寧なものでした。

ちなみに .NET Core なら HashCode 構造体が直接使えるので、
少し文字数は増えますが
(t.Left, t.Top, t.Right, t.Bottom).GetHashCode()
ではなく
HashCode.Combine(
  t.Left.GetHashCode(), t.Top.GetHashCode(),
  t.Right.GetHashCode(), t.Bottom.GetHashCode()))
と書いたほうがコードの目的が分かりやすいかなと思いました。

それではこのあたりで失礼いたします。
ご親切にどうもありがとうございました。

24 :デフォルトの名無しさん (アウアウエー Sadf-kvRF):2020/02/20(Thu) 18:09:06 ID:DIV2RvDKa.net
Hello!
って表示された…!

25 :デフォルトの名無しさん :2020/02/20(木) 18:57:40.71 ID:Pb7WanUc0.net
タプルに一括で関数適用する文法でもあるのかと思った

26 :デフォルトの名無しさん :2020/02/20(木) 19:19:27.62 ID:2rLj+nIZM.net
>>15
結構でかくね?

27 :デフォルトの名無しさん :2020/02/21(金) 03:13:35.78 ID:xBmtUMMla.net
石取りゲームできた…!
日記ですみません

28 :デフォルトの名無しさん (ワイーワ2 FFdf-HF0o):2020/02/21(金) 12:21:46 ID:5cQWFY2cF.net
おめ

29 :デフォルトの名無しさん (ラクッペペ MM7f-wHG4):2020/02/21(金) 12:39:57 ID:Z2lAagbxM.net
Twitterでやれ

30 :デフォルトの名無しさん :2020/02/21(金) 15:08:34.18 ID:4h0xZa5sH.net
matrixのライブラリ(C#版 & F#版)
ttp://x0000.net/topic.aspx?id=3711-0
matrixのテンプレート ライブラリ(C++版)
ttp://x0000.net/topic.aspx?id=3674-0
アルファ・ラボ|学術掲示板群
(理系 文系 工学 語学)
ttp://x0000.net/

31 :デフォルトの名無しさん (ワッチョイ cf2d-z3z/):2020/02/22(土) 15:57:17 ID:7CwG8WAb0.net
各DIコンテナがやってくれる注入作業って、どういう仕組みで行われているの?
インターフェイスやらコンストラクタの引数やらをリフレクションで取ってきて、注入してるのかな?

32 :デフォルトの名無しさん (ワッチョイ ff01-pEhb):2020/02/22(土) 16:57:57 ID:nfgptzfk0.net
>>31
基本的にはそう
型情報を取得してActivator.CreateInstance()みたいのでインスタンス生成して渡してる

33 :デフォルトの名無しさん (ワッチョイ cf2d-z3z/):2020/02/22(土) 18:39:28 ID:7CwG8WAb0.net
>>32
ほんと、不思議で不思議でたまらなかったわ
ありがとう

34 :デフォルトの名無しさん (ワッチョイ b317-Nz9x):2020/02/22(土) 19:49:40 ID:CYM04x9q0.net
OSSの中身確認するのが一番早いよ
入り口さえわかれば後の処理を追うのは簡単

35 :デフォルトの名無しさん (ラクッペペ MM7f-wHG4):2020/02/23(日) 00:10:20 ID:wbGqawi7M.net
くだらねえ������

36 :デフォルトの名無しさん (ワッチョイ b35f-Nz9x):2020/02/23(日) 11:37:03 ID:h4Sd0hn50.net
すいません。名前の付け方で悩んでます
Wifiをアプリ全体のグローバルにしようとしているのですが、名前をどうつけたものか・・

program.csの中で
static class Program
{

/// <summary>
/// アプリケーションのメイン エントリ ポイントです。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}

static public WifiControl WifiCtrl = new WifiControl();//テスト
static private long i=100;//テスト
}

こんな感じで宣言してみたのですがプログラム全体で使われるような変数ってどんなルールで名前つけますか?
このままWifiControlなんて名前でいいものか・・・

37 :デフォルトの名無しさん (ワッチョイ b35f-Nz9x):2020/02/23(日) 11:42:20 ID:h4Sd0hn50.net
逆だった
WifiCtrl
でいいものか・・・

38 :デフォルトの名無しさん :2020/02/23(日) 12:15:23.08 ID:U1SoOOADa.net
WifiControlが自作クラスならそっちをSingletonにして WifiControl.Instance でアクセスできるようにすべき
class WifiControl {
private WifiControl() {}
private static WifiControl _instance = new WifiControl();
public static WifiControl Instance { get => _instance; }
}
WifiControlが改変不能ならstaticプロパティをクラス名と同名で Program.WifiControl にする
へんにクラス名とプロパティ名が不一致なのは良くない
あとProgramクラスよりもEnvとかConfigとかそういう別クラスを作ってそっちのプロパティとして持たせるほうが良い気も

39 :デフォルトの名無しさん (アウアウウー Sae7-icJa):2020/02/23(日) 15:06:59 ID:GBgAuRZAa.net
>>36
名前が適切かどうかはそれだけの情報では誰も判断できないでしょうw

質問は変数のネーミングだけど、そもそも変数(フィールド)をそのまま公開するのは
普通は良くない作法だよね。

読み出し専用のプロパティーにした方がいいと思う。
シングルトンにする必要性は個人的には疑問

40 :デフォルトの名無しさん (ワッチョイ 7f52-xY2O):2020/02/23(日) 15:19:44 ID:mVzZkmaX0.net
>>36
変数名を単体で悩むより、名前空間を適切に使えばいいのでは?

41 :デフォルトの名無しさん :2020/02/23(日) 16:11:03.65 ID:HGdGso/xM.net
シングルトンかっこいいじゃん

42 :デフォルトの名無しさん :2020/02/23(日) 16:40:17.12 ID:qRVHuH/p0.net
わかる

43 :デフォルトの名無しさん :2020/02/25(火) 12:06:33.83 ID:K+FIgRaj0.net
シングルトンって利点がよく分からない
それもうstatic classで良くない?って思うんだけど継承とかインターフェースのためだけにそうしないだけ?

44 :デフォルトの名無しさん :2020/02/25(火) 13:15:34.49 ID:FzVRg2bhF.net
static Struct

45 :デフォルトの名無しさん :2020/02/25(火) 13:22:35.51 ID:5IAL5cM20.net
singletonならインスタンス生成タイミングを制御できる利点がある
初期の立ち上げを極力軽くしたい時とか
そういうのあんま気にしなくていい環境ならstaticでもいいかと

46 :デフォルトの名無しさん :2020/02/25(火) 13:30:56.90 ID:rfLfmv0Z0.net
>>43
デバイスなどのアクセスでインスタンス2つ持ちが意味無いかバッティングするから1つにしたいとき?

ログ出力とか単一のファイル書き込み読み込み
DBアクセス(同時アクセス不可時)とかいいかな?

一応やっといてバッティング対策必要だったらやる感じで?
(まあ、だいたいライブラリ側でやってくれっけど)

47 :デフォルトの名無しさん (ワッチョイ a324-D8OL):2020/02/25(火) 14:03:18 ID:K+FIgRaj0.net
>>45
static classだって静的コンストラクタで実質同じ事できるじゃん
_instance ?? (_instance = new Class())って形と実質同じだよね
まぁ継承使えないとか制約多いからってことなんだろうけど、staticおじさんアレルギーなのか知らないけど死んでもstaticは使わないって風潮もどうかと思う昨今

48 :デフォルトの名無しさん (アウアウウー Sae7-icJa):2020/02/25(火) 14:12:26 ID:o7stKPona.net
ほとんどの場合ちょっと大げさ過ぎる感じなんだよねシングルトン。

唯一であることを保証するのにそこまで強制力が必要か疑問だし、
唯一であることを保証する責任を「その」クラス自身に負わせるのが本当に妥当かどうかも疑わしい。

ほとんどの場合、プログラムで唯一のものを共有したいなら、
共有オブジェクト取得用のstaticクラスを作る方が普通に素直な考え方に感じるよね。

必要論者はポカ防止のために強制力が必要って言うんだろうけど
それは問題のすり替えだと思うんだよね。
そんなポカが起こる状況自体が間違ってるよね。

もちろん絶対の強制力が必要なケースだってたぶんあるとは思うけど。

>>47
まあ少なくとも、一度staticクラスでシングルトン実装しちゃうと
今度はマルチにしたいと思っても簡単にできない問題はある。

だからstaticクラスでシングルトンも個人的にはちょっと気持ち悪く感じる

49 :デフォルトの名無しさん (ドコグロ MM67-lfYl):2020/02/25(火) 14:16:11 ID:9IyrqwVFM.net
激しく同意
シングルトンを使う奴はほぼ例外なく「インスタンスを唯一に制限するため」を言い訳にして、その実はグローバル変数が欲しいだけ
実際にはインスタンスが一つでなければならないクラスなどほとんどない
一つしか作れないのではなく「アプリで一つしか必要ない」のであれば、>>48のようにstatic寄せ集めクラスを作るべき

50 :デフォルトの名無しさん :2020/02/25(火) 14:33:00.25 ID:oSeHo6cg0.net
>>47
>static classだって静的コンストラクタで実質同じ事できるじゃん
static classのコンストラクタがいつ実行されるかはコントロールできないよ

確実にlazy loadingしたい場合や
高価なリソースなので状況によっては解放したい場合とか
いろいろと使いどころある

逆にシングルトンは面倒くさいから
static classで間に合うユースケースならstatic使っとけばいい

51 :デフォルトの名無しさん (ワンミングク MM9f-RsP6):2020/02/25(火) 15:01:43 ID:IPCihoyTM.net
おかしい…「モダン言語と現行ライブラリ下においてはシングルトンパターンを適用することは通常開発下ではまずないが」という大前提がまったく共有されていない…
もしかして10年前の感覚で脳内敵を殴りつけてスッキリ喋ってる…?

52 :デフォルトの名無しさん (ワッチョイ ff63-ufZq):2020/02/25(火) 15:04:06 ID:9vKHdmbh0.net
テメエも皮肉ってればいいと思ってんなよガキ

53 :デフォルトの名無しさん (ササクッテロ Sp07-4NuP):2020/02/25(火) 15:27:35 ID:1xtbBMnCp.net
死んでもstatic使わない、じゃなくて死んでもシングルトン使わない、の話になってるが

54 :デフォルトの名無しさん (ワッチョイ 6388-qdXs):2020/02/25(火) 17:25:56 ID:5IAL5cM20.net
singletonがデザパタの中で意義も理解しやすく実装もそこそこ分かりやすく楽で有効に利用できると思わせる範囲が広いから無駄に広まってしまった
他により有効な手段ができても単一インスタンスだからsingletonで!っていう脳死とstaticは結局グローバルだからとにかく駄目!とかいうこれまた脳死が合わさってしぶとく使われているだけじゃない?

55 :デフォルトの名無しさん (ワッチョイ 730c-Nz9x):2020/02/25(火) 19:02:03 ID:YCFpdAhz0.net
どこにstaticはとにくかくダメだなんて話が出てるのか

56 :デフォルトの名無しさん :2020/02/25(火) 20:48:36.91 ID:CjA4SEoV0.net
GoF初版は4半世紀前のJavaすら出る前だぜ
そろそろ新しい版を誰か書いて

57 :デフォルトの名無しさん :2020/02/25(火) 21:46:44.65 ID:rfLfmv0Z0.net
初めstaticで足りると思ったんだけど
対象のクラスに
継承やIFいんじゃんクソが
ってなるといつの間にかにシングルトンなってたりするだけだ

58 :デフォルトの名無しさん :2020/02/25(火) 22:40:31.11 ID:BegpSlwc0.net
>>57
これだよね。
staticクラスやグローバル変数でもいいんだけど呼び出し側に影響させないで実装を拡張できるという。

59 :デフォルトの名無しさん :2020/02/25(火) 23:30:16.22 ID:K+FIgRaj0.net
>>50
シングルトンが初回アクセス時に実行されるのと同様にstaticコンストラクタもそのクラスのいずれかに初回アクセス時に実行されるから同じ事だと思うよ

60 :デフォルトの名無しさん :2020/02/26(水) 01:29:08.48 ID:sMj0eedP0.net
>>59
初回アクセス時よりも前にロードされることが保証されてるのと
初回アクセスしたそのタイミングで実行されるのとは意味が違う

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/static-classes-and-static-class-members

仕様としては明記されてないが
static classを含むnamespaceがロードされるタイミングでstatic classもロードされてたはず

61 :デフォルトの名無しさん (ワッチョイ 4e7c-FlcA):2020/02/26(水) 10:56:30 ID:/kjPVa9J0.net
型名の一部でしかないnamespaceのロードって何…?

62 :デフォルトの名無しさん (ワッチョイ 8a01-k1AF):2020/02/26(水) 11:28:50 ID:sMj0eedP0.net
>>60
念の為試してみたら俺が間違ってたわ
すまん

static classでもLazy<T>使えば必要なタイミングまで確実に遅延できた

63 :デフォルトの名無しさん :2020/02/26(水) 12:01:04.52 ID:QHwYyYy1d.net
当たり前なんだけどsingletonでしか実現できない話じゃなくてsingletonなら自然にできる話だからね
singletonじゃなくたって実現方法はいくらでもある
こうすりゃできるなんてわかりきった上で話してるんだよ

64 :デフォルトの名無しさん :2020/02/26(水) 12:04:17.00 ID:xo5HgIYJ0.net
>>63
そのsingletonが有用な場面ってのを解説してくれ

65 :デフォルトの名無しさん :2020/02/26(水) 12:08:38.94 ID:QHwYyYy1d.net
>>64
環境的にstaticが使えないとか?C#じゃあんまないんじゃない?
組み込みC環境だとstatic不可とかあるよ

66 :デフォルトの名無しさん :2020/02/26(水) 12:11:40.77 ID:QHwYyYy1d.net
ところでsingletonが有用な場面ってどっから湧いた話?
過去レス確認したけど、俺そんなこと言ってなかったんだけど

67 :デフォルトの名無しさん :2020/02/26(水) 12:16:01.74 ID:91Y2xJrV0.net
>>60
メンバーの話じゃなくてコンストラクタね
static class Human
{
static Human(){} //←この部分は保証されてる
}

68 :デフォルトの名無しさん (JP 0H82-SZE8):2020/02/26(水) 14:16:45 ID:oid0ZUpoH.net
ある強力なFor関数を紹介いたす(C#)
ttp://x0000.net/topic.aspx?id=3630-0

アルファ・ラボ|学術掲示板群
(理系 文系 工学 語学)
ttp://x0000.net/

69 :デフォルトの名無しさん :2020/02/26(水) 15:11:05.12 ID:/kjPVa9J0.net
ただのAggregateでは?

70 :デフォルトの名無しさん (アウアウウー Sa2f-A7eh):2020/02/26(水) 17:52:39 ID:FtoTEkgba.net
>>64
昨日>>48に書いた通り俺は唯一性に強制力を持たせる必要性については
懐疑的だけど、シングルトン的な発想が有用なケースは結構あるとは思う

例えばUIでいろんな場面で表示する必要があるサブ画面みたいなのがある時、
こんなことやってる人多いんじゃないかな
public partial class Form2 : Form
{
  public Form2()
  {
    InitializeComponent();
  }

  private static Form2 Singleton { get; set; }

  public static void ShowSingleton()
  {
    if (Singleton == null || Singleton.IsDisposed) Singleton = new Form2();
    if (Singleton.WindowState == FormWindowState.Minimized)
      Singleton.WindowState = FormWindowState.Normal;
    Singleton.Show();
    Singleton.BringToFront();
  }
}

71 :デフォルトの名無しさん (ワッチョイ ca42-DFeu):2020/02/26(水) 18:15:26 ID:uSMym8r00.net
>>70
それはシングルトンじゃねーよ
まずシングルトンはnewしない

72 :デフォルトの名無しさん (ワッチョイ 03a7-efYq):2020/02/26(水) 18:19:20 ID:ZCj63VZA0.net
>>71
一回目は作るべ?

73 :デフォルトの名無しさん (アウアウウー Sa2f-A7eh):2020/02/26(水) 18:21:41 ID:FtoTEkgba.net
>>71
揚げ足取りはいいけど、よく読んでからにして欲しいよね

74 :デフォルトの名無しさん (ワッチョイ ca42-DFeu):2020/02/26(水) 18:22:19 ID:uSMym8r00.net
>>72
つか、インスタンスは自分自身の中にスタティックで用意する
そのクラスのスタティックプロパティー経由でインスタンスを参照するが
最初の参照時にシングルトンクラスで自身の中に生成する

だから外部で使うクラスはインスタンスを明示的に生成しません

75 :デフォルトの名無しさん (ワッチョイ 4e7c-FlcA):2020/02/26(水) 18:30:13 ID:/kjPVa9J0.net
> インスタンスは自分自身の中にスタティックで用意する
private static Form2 Singleton { get; set; }
用意してるな

> 外部で使うクラスはインスタンスを明示的に生成しません
public static void ShowSingleton()
{
 if (Singleton == null || Singleton.IsDisposed) Singleton = new Form2();
してないな

76 :デフォルトの名無しさん (ドコグロ MM13-bE1b):2020/02/26(水) 18:40:31 ID:qN9Z1rJQM.net
>>62
それ実体が生成されないだけでLazy<T>自体はロードされるだろ

77 :デフォルトの名無しさん (ワッチョイ 8a01-k1AF):2020/02/26(水) 18:42:00 ID:sMj0eedP0.net
シングルトンじゃなく
シングルトン的な発想が有用なケースって確かに書いてるね

78 :デフォルトの名無しさん (ワッチョイ ca42-DFeu):2020/02/26(水) 18:50:11 ID:uSMym8r00.net
>>77
シングルトンの最大の特徴は、複数のクラスから一つのインスタンスを参照できることだから
それはシングルトン的なものでもない

>>75
シングルトンではSIngletonクラスの内部にたった一つのインスタンスがプライベートで格納されている
それをSingletonのスタティックメソッドやスタティックプロパティーで参照するのがGOFのデザパタだ

79 :デフォルトの名無しさん :2020/02/26(水) 19:43:16.15 ID:JBdLkQQ40.net
シングルトンって、昔は、複数インスタンスが作られる可能性を潰すためにやってたんだろうけどさ
今は、主にDIコンテナへの指示みたいなもんとして役立ってんじゃねえのか?

80 :デフォルトの名無しさん :2020/02/26(水) 20:21:07.70 ID:J/Z+GoCJM.net
DIコンテナ使ってるなら、DIコンテナが自動的にインスタンス化して単一のインスタンスを各所へ注入してくれるから、
GoFのシングルトンパターン(というかグローバルインスタンスアンチパターンとでも呼ぶべきもの)は全く必要ないよ

81 :デフォルトの名無しさん :2020/02/26(水) 21:07:30.64 ID:JBdLkQQ40.net
単一かどうかはコンテナへの突っ込み具合で違ってくるんじゃないの
シングルトンでって指定していなければ複数インスタンス化されちゃうでしょう

82 :デフォルトの名無しさん :2020/02/26(水) 21:12:48.10 ID:pSd33gsra.net
属性などで指定するだけだよ

83 :デフォルトの名無しさん :2020/02/27(木) 08:46:08.57 ID:LiuiNLxS0.net
>>77
グローバル変数を単にフォームにおいてアクセス制御しただけで次とほぼ変わらないな
staticでいいじゃん側の話に思える

private static Form2 _form;
public static Form2 Hoge{
get{
if(_form == null || _form.IsDisposed)_form ==new Form2();
return _form;
}
}

84 :デフォルトの名無しさん :2020/02/27(木) 08:57:22.75 ID:/W1ksVR5p.net
もうめんどくせえからstaticも中でシングルトン使ってるから
実質シングルトンパターンって事でいいよ

85 :デフォルトの名無しさん :2020/02/27(木) 12:49:09.42 ID:ENhVujQ1a.net
日本人はすぐそういう党派的(どっちの側にお前はつくんだ?}で幼稚な話になるよねw

>>83
そういう話じゃないってw
>>70のコードびShowSingletonというメソッドはもちろんForm2以外のクラスに
書くことも出来るけど、それが分かりやすいですか?

こういう話だから。

シングルトンがあんまり有用じゃないとしても、
「唯一のオブジェクトを管理したり窓口になったりする役割をそのクラス自身に持たせる」
というシングルトン的なアイデアは応用できる、と言ってるんだけど、
これがそんなに難しい話かなw

86 :デフォルトの名無しさん (オッペケ Sr03-8X5p):2020/02/27(Thu) 17:27:49 ID:0jrc+WC1r.net
そのアイデアを実現する手法としてstaticはどうだって話してたんじゃないないのか

87 :デフォルトの名無しさん (ドコグロ MM02-bE1b):2020/02/27(Thu) 19:49:51 ID:6N44UBOdM.net
>>85
日本人はーっていうのも相当アホっぽいけどなw
外人だってエディタとかLinux vs. BSDとか宗教戦争しまくり
てか中東の内戦なんてガチの宗教戦争だし

88 :デフォルトの名無しさん (ワッチョイ 03a7-efYq):2020/02/27(Thu) 20:14:51 ID:NGAf+NLq0.net
うっかり2つ作らせない方法だからな

89 :デフォルトの名無しさん (アウアウウー Sa2f-A7eh):2020/02/27(Thu) 22:15:47 ID:ENhVujQ1a.net
>>87
日本人と欧米人の論争の仕方の違いは明らかで、
それは別に俺のオリジナルの見解でも何でもないよw

今のこの話なら、日本人のダメなところは「シングルトンパターンの利点はここで問題点はここで」
という議論が苦手なこと。
日本人は一度決めた「立場」に固執して全肯定か全否定かになりやすい。
好き嫌いを持ち込むべきでない評価に好き嫌いを持ち込みがち。
エディターとかはいいんよ別に好き嫌いで語れば。技術的な話はおかしいでしょ。

板違いだからもう止めるけどね。

90 :デフォルトの名無しさん (ワッチョイ ca01-bE1b):2020/02/27(Thu) 22:46:12 ID:RMeeA8fN0.net
>>89
> 今のこの話なら、日本人のダメなところは「シングルトンパターンの利点はここで問題点はここで」
> という議論が苦手なこと。
それでどちらかに決まるなら宗教戦争なんてすぐに解決してるよw
そもそも技術的な話とか言うわりには
> それが分かりやすいですか?
なんて人によって意見が違うことを言い出すから戦争はいつまで経っても終わらないわけで…

91 :デフォルトの名無しさん (ワッチョイ 03a7-efYq):2020/02/27(Thu) 23:52:28 ID:NGAf+NLq0.net
>>89
まあ、外人ならってのは幻想だな
そもそも奴らがそんなに頭が良かったのならオブジェクト指向なんて流行ってない

リーナスが言ったようにオブジェクト指向はカルトだ
誰もメリットなんて説明できない
それでも海を超えて日本へ来たのさ

92 :デフォルトの名無しさん :2020/02/28(金) 00:58:28.47 ID:W4dF7kHwa.net
>>90-91
なんか党派的主張のお手本みたいなレスで何だかなあという気持ちになるけど
言っても無駄だねたぶんw

93 :デフォルトの名無しさん (ワッチョイ ca01-bE1b):2020/02/28(金) 06:43:53 ID:lgmUZMDZ0.net
>>92
技術的なお話とか言う割には
> なんか党派的主張のお手本みたいなレスで何だかなあという気持ちになるけど
みたいなレスしかできない時点で…

94 :デフォルトの名無しさん (ワッチョイ 4a63-ZWRU):2020/02/28(金) 09:46:17 ID:JX0D/Sej0.net
いつもいつも同じ流れでよく飽きないですねカスども

95 :デフォルトの名無しさん :2020/02/28(金) 14:13:28.76 ID:zv3KdV1x0.net
シングルトン的なものが必要になったら、殆どはDIのインジェクションでなんとかするけど
コレクションの要素にインジェクションなんて鬱陶しいから普通のシングルトンやStatic Class使ったりするな

96 :デフォルトの名無しさん :2020/02/28(金) 16:17:34.85 ID:5jfHvjE1d.net
シングルトンに依存するコレクションのエレメントとかちょっと悪夢だな。

97 :デフォルトの名無しさん :2020/03/01(日) 05:50:05.37 ID:wVHwYgLC0.net
これが最新ぽいな

98 :デフォルトの名無しさん (ワッチョイ af17-DFeu):2020/03/01(日) 07:54:47 ID:cyJFDbBK0.net
42 デフォルトの名無しさん  2020/03/01(日) 05:43:23.78 ID:wVHwYgLC
なんだ?この糞スレ
と思ったら2016年だとwww
どこから引っ張り出したんだよ

99 :デフォルトの名無しさん (ワッチョイ 679b-DFeu):2020/03/02(月) 10:29:43 ID:NX3+Q9hq0.net
C#というより.NET Framework全般の問題かもしれませんが・・・
ビルドした実行ファイルの拡張子を7zにして開けると
   .rsrc(フォルダ)
   .text
   .reloc
というファイルが出てきます

このうち「.text」をエディタで開けると

「C:\Users\ユーザー名\source\repos\プロジェクト名\obj\Release\実行ファイル名.pdb」

の文字列がそのまま入っておりユーザー名まで見えてしまいます

プロジェクトのプロパティなど見てみましたが該当する文字列は設定されていませんでした

この文字列が入らないようにビルドするにはどうすれば良いでしょうか?

100 :デフォルトの名無しさん (ワッチョイ 1bda-himO):2020/03/02(月) 10:31:50 ID:++2P6Dav0.net
mtawmg

101 :デフォルトの名無しさん :2020/03/02(月) 10:56:03.68 ID:dv6bLfIQ0.net
プロジェクトのプロパティでデバッグ情報の出力を「なし」か「埋め込み」にする
なしの場合はデバッグが難しいから頒布する用のリリースビルドだけにした方が良い

102 :デフォルトの名無しさん :2020/03/02(月) 11:01:21.30 ID:glnmwhpKF.net
ググっただけですぐ出て来たが
https://www.atmarkit.co.jp/fdotnet/dotnettips/831stoppdbfile/stoppdbfile.html
http://var.blog.jp/archives/70196817.html
https://qiita.com/lainzero/items/27681ddc96638e33758b

103 :デフォルトの名無しさん :2020/03/02(月) 11:30:46.56 ID:NX3+Q9hq0.net
>>101-102

ありがとうございました。
pdbファイルがなんなのか理解できました

104 :デフォルトの名無しさん :2020/03/04(水) 15:33:24.81 ID:WNB6X6E30.net
yield returnの挙動について知りたいのですが、
例えばHuman[]からある苗字のHumanインスタンスだけを列挙する場合、
yield returnで貰えば新たな配列は生成されないという理解で良いんでしょうか?(無駄なヒープの生成なども無いと)

105 :デフォルトの名無しさん :2020/03/04(水) 15:41:47.96 ID:VYRn8ATr0.net
配列は生成されないけどIEnumerable<T>/IEnumerator<T>の実体クラスのインスタンスは作られるよ
具体的にどんなクラスになるかはildasm.exeとかで確認してみるといいよ

106 :デフォルトの名無しさん (ワッチョイ ef4a-Xzyn):2020/03/04(水) 20:59:26 ID:i/lDlkx00.net
var a = new int[10];
for(......){
......
}

for(......){
var a = new int[10];
......
}

配列変数の場合はどちらの書き方が正しいでしょうか?
下のほうはループを繰り返す毎に配列を宣言してるので無駄だと思うのですが

107 :デフォルトの名無しさん (ドコグロ MM4f-blPw):2020/03/04(水) 21:02:11 ID:O/qwuvY6M.net
>>106
意味が違うからどっちが正しいもクソもない

108 :デフォルトの名無しさん (ワッチョイ efda-Lqe9):2020/03/04(水) 21:03:35 ID:nSjoZipw0.net
......の内容が大事だよなw

109 :デフォルトの名無しさん (ワッチョイ 4b35-odL1):2020/03/04(水) 21:18:09 ID:vFPRvz7l0.net
>>106
どっちが正しいかは何をしたいかによる

110 :デフォルトの名無しさん (ワッチョイ 4b2d-hds7):2020/03/04(水) 22:58:57 ID:Mg+OXMHj0.net
始めたばっかの頃の自分を思い出すと、おそらく>>106がやりたいのはこれ

int[10] a;
for(......){
a = new int[10];
......
}

111 :デフォルトの名無しさん (ワッチョイ 8b63-UVo+):2020/03/04(水) 23:03:21 ID:w6hLhDKv0.net
全然違うと思う

112 :デフォルトの名無しさん (ワッチョイ 9fad-b9E5):2020/03/05(Thu) 02:53:17 ID:FOFXma0P0.net
>>106
後者はループ処理毎にaが初期化されるが
前者はループ処理毎にaは初期化されない
って違いがあるので、バグが発生しにくいのは後者で
バグは発生しやすいけど効率がいいのが前者

前のループのaを使わないなら、どちらも正しいよ

113 :デフォルトの名無しさん (ワッチョイ 8b48-107Z):2020/03/05(Thu) 09:03:52 ID:Zalo0Xqn0.net
for内部で毎回一時バッファが必要ならfor内に書くべきだけど、ループ枚に配列生成は高コストなのでstackalloc使って良いと思うけどな

unsafe for ()
{
var a = stackalloc int[10]; //配列サイズが[200000]ほど以上になるとスタックオーバーフローの恐れが出てくるので注意
a[0] = 123;
}

114 :デフォルトの名無しさん (ワッチョイ 1bad-Ff7g):2020/03/05(Thu) 09:55:29 ID:C+Zq+iEs0.net
>>110
それ106と全く同じ事だよ
予め配列変数を用意しておいたところで参照型である配列の変数なんてあくまでポインタに過ぎず肝心の中身はnew毎に生成されるからコスト的には全く変わらない

115 :デフォルトの名無しさん (ワッチョイ 9f01-AjW4):2020/03/05(Thu) 10:13:49 ID:sz7+iaAj0.net
言語ではなくて設計のことなのですが、C#でデスクトップアプリを作っていて、canvasに描画する処理を書いてます
そこで、描画部分で状態の更新(例えばlabelで表示する値の計算)を一緒にやった方が負荷が減らせるなと思ったのですがこれは設計としていいのでしょうか?
描画部分は複雑になっていくので、そこにcanvasの描画に関係ない処理を持ってくるのはどうなのかと悩んでます
でも一連の処理で共通部分があるので出来る限り負荷を減らしたいです
canvasの描画とその他の更新でうまく分けた方がいいでしょうか

116 :デフォルトの名無しさん (アウアウウー Sa0f-blPw):2020/03/05(Thu) 10:16:15 ID:4EDBtik+a.net
>>113
悪いけど、それは全く意味ないと思うよ
ループ内で配列を生成する必要があるとしたら、それを他の非同期なメソッドなどに渡していて毎回インスタンスを別にしなければならないケースだろう
stackallocだと領域が結局使い回されてしまうから、それでいいんだったら単純に最初にnewした配列をループ内で毎回クリアして使えばよい

117 :デフォルトの名無しさん (ドコグロ MM0f-blPw):2020/03/05(Thu) 10:28:10 ID:9nI/lMlHM.net
>>115
描画処理は今の状態のスナップショットを画面に反映させるだけなんだろ?
そんなもん状態の更新処理と何をどう共有するんだよ
分けるかどうかは別にして、そんな頭がごっちゃになった状態で書かれたコードなんて俺は読みたくないな

118 :デフォルトの名無しさん :2020/03/05(木) 10:30:44.90 ID:e30M4A2z0.net
>>116
ループ内で生成しないやり方と迷ってるってことはret時にもループ内でも他に渡す盤面は無いってことじゃないかな
なので最高のやり方はSpan<int> a = stackalloc int[10]として最初に確保をしてループ毎にa.Clear()
>>113のやり方も悪くは無いけど使いまわせるのに毎回stackallocするのは無駄

119 :デフォルトの名無しさん :2020/03/05(木) 11:02:10.43 ID:sz7+iaAj0.net
>>117
すみません誤解を招く書き方でした
状態の更新ではなくviewの更新です
viewで表示する値を計算するのに一連の処理が必要ということです
改めて考えてみたら元のデータは頻繁に変わるものではないのでメモ化で対処できそうです

120 :デフォルトの名無しさん :2020/03/05(木) 15:17:30.80 ID:X7H8oXB10.net
自分で使う用のWindows用WinFormsくらいしか作らない俺もSpan利用したいんだけど、そろそろ.NetCore3.1インスコしてええの?
CoreのWinFormsは不完全みたいな事どっかで聞いたからもうかれこれ1年以上.Net Framework4.7.2しか使ってないんだけど

121 :デフォルトの名無しさん :2020/03/06(金) 12:20:46.76 ID:H9scC1320.net
System.Memoryパッケージ入れれば、slow spanになるけど.NET FrameworkでもSpan<T>が使える

122 :デフォルトの名無しさん :2020/03/06(金) 12:24:09.85 ID:7SrrBNmuM.net
SpanならnugetからSystem.Memoryを入れればNET47でも使えるんじゃ?

123 :デフォルトの名無しさん :2020/03/06(金) 12:24:46.59 ID:7SrrBNmuM.net
あ、かぶった

124 :デフォルトの名無しさん (ワッチョイ 4f7c-kMfZ):2020/03/10(火) 13:54:33 ID:Xb+4Rppb0.net
Hoge[] h = new Hoge[]{...};
ArraySegment<Hoge> slice_of_h = new ArraySegment<Hoge>(h, a, b);
Hoge[] new_instance = slice_of_h.ToArray();

125 :デフォルトの名無しさん :2020/03/11(水) 20:14:38.79 ID:Atur+UVNM.net
FormアプリケーションのGUIをそのままWebサイトにできますか?

126 :デフォルトの名無しさん :2020/03/11(水) 20:15:50.74 ID:JtvZFGdC0.net
無理

127 :デフォルトの名無しさん (ワイーワ2 FFca-cUsN):2020/03/12(Thu) 13:35:24 ID:MzPDqAwNF.net
https://docs.microsoft.com/ja-jp/archive/msdn-magazine/2017/september/net-standard-demystifying-net-core-and-net-standard

128 :デフォルトの名無しさん :2020/03/12(木) 14:08:08.81 ID:jMpYX7Pla.net
>>127
懐かしい話だな
.NET Standard はあろうことか 2.1 で .NET Framework を切り捨てたから、もはや .NET Standard には何の意味もなくなり事実上消滅したよ

129 :デフォルトの名無しさん (スップ Sd02-YgZJ):2020/03/12(Thu) 14:19:52 ID:GlTl0MmId.net
まだ消滅してないよ

130 :デフォルトの名無しさん (ワッチョイ 51da-cUsN):2020/03/12(Thu) 14:40:04 ID:dkoVUBxw0.net
どれがホント?
https://blog.ecbeing.tech/entry/2019/03/28/181956
https://blog.hiros-dot.net/?p=9086

131 :デフォルトの名無しさん :2020/03/12(木) 15:00:48.26 ID:jMpYX7Pla.net
>>130
下の方は誤解を招く書き方(というか本人が理解してなさそう)だね
.NET5は.NET CoreとXamarinの新バージョンを含むが、.NET Frameworkは含まない
.NET Frameworkは4.xが最後のバージョンとなり、(Xamarinを除けば).NET Coreへ一本化される

132 :デフォルトの名無しさん :2020/03/12(木) 20:38:24.41 ID:RlMroztpr.net
> Xamarin は、テクノロジー自体は、.NET Framework と C# を基盤としていますが、
> Mono というライブラリを使用します

133 :デフォルトの名無しさん (ドコグロ MM4a-Syvm):2020/03/12(Thu) 23:53:50 ID:jAjbL2IrM.net
>>132
それは明確に間違いだね
Monoは元々MSとは無関係の会社による.NET Frameworkの非公式かつ独自な互換実装で、.NET Frameworkとはソースを共有していない
based on かなんかを誤訳したんじゃね

134 :デフォルトの名無しさん (ワッチョイ 0135-0jaE):2020/03/13(金) 00:04:41 ID:1UhKFURs0.net
テクノロジーを基盤してるって書いてるだけじゃん
ライブラリがおかしい

135 :デフォルトの名無しさん (スフッ Sda2-Wi6o):2020/03/13(金) 07:54:41 ID:/kxy81/Ad.net
>>133
今はだいぶ本家のを使ってるよ。Monoも。
本家がMITになったからね。

136 :デフォルトの名無しさん (アウアウウー Sac5-cOBK):2020/03/13(金) 12:12:59 ID:1Ll5zbJna.net
毎度のことだけど用語の定義のあいまいさからくる混乱だろうね

>>132の引用部分を書いた人は「NET FrameworkをVS2002とかの時代の意味で使ってるんでしょ。
当時は仮想OSみたいに言われてた

その定義だと.NET Coreも.NET Frameworkになっちゃうので(以下略

137 :デフォルトの名無しさん :2020/03/14(土) 03:14:07.89 ID:+KBSM6L30.net
C#の正規表現についてですが...

new Regex(@"^a").IsMatch("abc",0) → true : 納得。
new Regex(@"^a").IsMatch("abc",1) → false : 納得。
new Regex(@"^b").IsMatch("abc",0) → false : 納得。
new Regex(@"^b").IsMatch("abc",1) → false : 納得...できん!!

第2引数が1なら、^で示す入力文字列の先頭が2文字目になってて欲しいじゃん!?
MSDNとか、この挙動について何か書いてある?見つけられなかったわ。
substringとかしたくないんだよな...

なんでこういう挙動になるか、ご存じの方いますか。

138 :デフォルトの名無しさん :2020/03/14(土) 03:47:52.84 ID:eoDNI2O30.net
こういう理由らしい
https://stackoverflow.com/questions/5884922/regex-match-startat-and-start-of-string

139 :デフォルトの名無しさん :2020/03/14(土) 03:55:38.88 ID:eoDNI2O30.net
第二引数は探索の開始位置を指定するのであって検索範囲をどうこうするためのもんじゃないってことかな?
でもその理屈だと二つ目がfalseである説明にならんし流し読みだから解釈間違ってるかもしれないわ

140 :デフォルトの名無しさん :2020/03/14(土) 04:35:36.35 ID:eoDNI2O30.net
139は間違いっぽいので忘れて
IsMatch("abc",0) → abcを探索
IsMatch("abc",1) → bcを探索

リンク先を見るに^は行頭を表すもんでbは行頭ではないのでfalse
aは探索外なので二つ目もfalseってことかな

https://docs.microsoft.com/en-us/dotnet/standard/base-types/anchors-in-regular-expressions

141 :デフォルトの名無しさん (アウアウウー Sac5-M7Q/):2020/03/14(土) 09:39:43 ID:S+o/zRAGa.net
new Regex()するときにRegexOptions.Multilineを指定して『^』『$』の意味づけを変更・・・しても駄目そうだね
日本語のほうで
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/regular-expression-options?view=netframework-4.8#multiline-mode
を読んだけど、
あくまで『^』は入力文字列全体(>>137のなら"bc"ではなく"abc")の先頭、MultiLine指定時は\nを行区切りとした行頭についてのみマッチするんだろう

142 :137 (ワッチョイ 61dd-gN7l):2020/03/14(土) 11:29:21 ID:+KBSM6L30.net
>>138-141
ありがとう!
俺だけではそれらの情報を見つけられなかったわ。

いったん \G を使用することで何とかなりました。
というか \G の仕様(影響範囲)もよくわからん。
最終のマッチってRegexのインスタンスに保存されるのかな?
そうだと思うけど、今一つ確証が持てない。

あと、 \A が正しいんじゃないか、って思いましたが、\Aは「文字列の先頭」でしかないんだね。
Singlelineの場合は^と同じみたい。

143 :デフォルトの名無しさん (ワッチョイ c201-ThK6):2020/03/17(火) 10:51:26 ID:phFjovqc0.net
プログラムではなくライセンスについての質問なのですが、NAudioというライブラリを使いたくてプロジェクトに導入したのですがMs-PLライセンスとなっていて、この場合著作権表示等は具体的にどう表示すればいいのでしょうか。
著作権表示自体がいまいち分かりません。ライセンスの文書(LICENSE.txt等)とは別なのでしょうか。
調べているのですが具体的な表記方法が書かれている記事が無く分かりません。
ご教示お願いします。

144 :デフォルトの名無しさん (ワッチョイ 13b9-hdmr):2020/03/21(土) 13:43:45 ID:/FH0o/RH0.net
相談させてください。
以下のような MyClass1 クラスを作ると、
「IDE0054 複合代入を使用」というメッセージが表示されます。

class MyClass1 {
  int MyProperty { get; set; } = 0;
  public void IncreaseMyProperty(int x)
    => MyProperty = MyProperty + x; // ここでメッセージ
}

まあそりゃそうでしょうということで以下の MyClass2 のように直すと、今度は
「IDE0052 C# プライベート プロパティ は、
 その get アクセサーが呼び出されることがないため、メソッドに変換できます。」
というメッセージが表示されてしまいます。

class MyClass2 {
  int MyProperty { get; set; } = 0; // ここでメッセージ
  public void IncreaseMyProperty(int x)
    => MyProperty += x;
}

なんだそりゃと思いつつ言われたとおり以下の MyClass3 のように直せば
メッセージは表示されなくなるのですが、こんな直し方でいいのでしょうか。

class MyClass3 {
  int _MyProperty = 0;
  void SetMyProperty(int value) => _MyProperty = value;
  public void IncreaseMyProperty(int x)
    => SetMyProperty(_MyProperty + x);
}

ご意見をお聞かせいただけると幸いです。よろしくお願いいたします。

145 :デフォルトの名無しさん :2020/03/21(土) 18:45:34.77 ID:qqrYKjlY0.net
MyPropertyが本当に自動実装プロパティなら
そもそもフィールドでいいんでは?

146 :デフォルトの名無しさん (アウアウウー Sa5d-NT4g):2020/03/21(土) 19:30:58 ID:zN2aQcNta.net
最近のIDEは賢いから定義されてるけど使用されないことが明らかなプロパティやメソッドが見つかったら警告が出るようになってる
>>144のは文法等のお勉強でてきとうなソースを書いてるんだと思うけど、MyClass2なら
MyPropertyをpublicなプロパティにするか、MyPropertyを参照するような処理をちゃんと書けば警告解消するはず
ToString()あたりをオーバーライドして override string ToString() => MyProperty; とか書いてもいいかもね

147 :デフォルトの名無しさん :2020/03/21(土) 20:37:06.12 ID:/FH0o/RH0.net
>>145
レスありがとうございます。
説明が不十分で申し訳ありません。
実際には、以下の様な感じにしていまして、
できればプロパティを使いたいと考えております。

class MyClass4 {
  int _MyProperty = 0;
  event EventHandler MyPropertyChanged;
  int MyProperty
  {
    get => _MyProperty;
    set {
      if (value != _MyProperty) {
        _MyProperty = value;
        MyPropertyChanged?.Invoke(
          this, EventArgs.Empty);
      }
    }
  }
  public void IncreaseMyProperty(int x)
    => MyProperty += x;
}

148 :デフォルトの名無しさん :2020/03/21(土) 20:37:42.93 ID:/FH0o/RH0.net
>>146
レスありがとうございます。
おっしゃるとおりなのですが、MyProperty += x; で
MyProperty の get アクセサーが参照されていることに
ならないため困ってしまっています。
C# の文法的に、自動実装プロパティでなければ

int _MyProperty = 0;
int MyProperty { set => _MyProperty; }

のような書き方も許されているようなのですが、
MyClasss2 の MyProperty の定義をこのように書き換えると、

MyProperty += x;

のところでエラーが出てしまうのです。

149 :デフォルトの名無しさん :2020/03/21(土) 20:45:29.55 ID:rK+/4ZiL0.net
警告とエラーを混同しないで
+=オペレータがget使ってないだけでしょ
開発中で今後使う予定がありまだ未実装なら警告はスルーすればいい

150 :デフォルトの名無しさん :2020/03/21(土) 21:05:47.28 ID:zN2aQcNta.net
いやだからIDEからは「結局MyPropertyってインクリメントで更新はしてるけどどこからも参照されてないんでしょ、無駄なんじゃない?」と怒られてるわけで
他のC#ソースなりXAMLなりでMyPropertyが参照されてればそのメッセージは出ないはずだけど
例示されてるソースであればMyPropertyだけでなくインクリメントする処理も意味のない無駄な処理だから削ればいいし
GUI側etcのソースがまだ書けてないのであれば中途半端な書きかけソースで警告が出るのは当たり前のお話

というかそもそもでいえば、VisualStudioの設定がデフォルトならそのメッセージは
「コンパイルエラー」でも「警告」でもないただの注意喚起なメッセージでしかないから開発にも実行にも一切支障がないので
とりあえずほっとけばいいと思うんだけど

151 :デフォルトの名無しさん (オッペケ Sr85-ED79):2020/03/22(日) 09:23:59 ID:knoRzRG7r.net
classをpublicにと言う話ではなく?

152 :デフォルトの名無しさん (スッップ Sd33-Hfmd):2020/03/22(日) 15:10:18 ID:aFZi4Cdad.net
>>147
MyPropatyをSetメソッドにして、インクリメント_MyPropaty+xを渡せばいいんじゃないの?

これでいいんでしょうか?って内容通りだけど単に値を入れるだけならフィールド直接やればって感じだけど追加作業あるならメソッドでやるのは普通だと思う

153 :デフォルトの名無しさん :2020/03/24(火) 22:53:25.92 ID:7FKkbPj60.net
読んでる入門書の練習問題にアクセサのGetNameメソッドで八文字以下の文字列が渡された場合だけname変数に代入するプログラムを書きなさい
というのがあるんですが、どうやって書けばいいのでしょうか?文字数を判定するプログラムは習ってないので困ってます

154 :デフォルトの名無しさん :2020/03/24(火) 22:59:57.52 ID:0+ccCJA90.net
>>153
stringクラスのメンバーを見てみよう

155 :デフォルトの名無しさん :2020/03/24(火) 23:01:03.36 ID:Q5H6MOZK0.net
>>153
文字数を判定=String.Lengthで判定
https://docs.microsoft.com/ja-jp/dotnet/api/system.string.length?view=netframework-4.8
入門書ならその前の部分の内容で全部答えられるものしか無いはず。そうじゃないのならその入門書は捨てた方がいい

156 :デフォルトの名無しさん :2020/03/24(火) 23:13:43.00 ID:7FKkbPj60.net
>>155
ありがとうございます。とけました!
確かな力がつくC#超入門って本ですが見返してみても書いてないですね…
また良さげな本探してみます

157 :デフォルトの名無しさん (ワッチョイ d1da-InxD):2020/03/24(火) 23:41:48 ID:lhWkdEvF0.net
「猫でもわかる」のほうが良いかも

158 :デフォルトの名無しさん (ワッチョイ 29f1-dbH2):2020/03/24(火) 23:51:16 ID:hJYqJTPr0.net
猫に分かるわけがない、こんな難しいものを。
「ハゲでもわかる」だろ、どう考えても。

159 :デフォルトの名無しさん :2020/03/25(水) 04:47:11.72 ID:LvLtJ7JB0.net
猫は誰でもできるということを比喩的に表している
じゃあハゲは?

160 :デフォルトの名無しさん (ワッチョイ b1f1-Go5d):2020/03/25(水) 08:43:43 ID:nn3rUaIL0.net
能力の劣る者でもできる
このハゲー、と言われるような者でも

161 :デフォルトの名無しさん :2020/03/25(水) 09:09:57.70 ID:IkumKzuJM.net
>>155
たまに「Stringのマニュアルを確認してどんなことができるか確認しておこう」みたいな初心者なめとんか的な項目があったりはする
たぶん説明するの面倒なのだと思う

162 :デフォルトの名無しさん (ワッチョイ 5561-Cd0d):2020/03/25(水) 10:06:03 ID:tUU69eV70.net
>>153
てかなんでGetNameなんだ?SetNameじゃないの?

163 :デフォルトの名無しさん :2020/03/26(木) 00:40:52.54 ID:KtVIRudY0.net
>>162
主観の違いかと思ったけど、確かにセットですね

164 :デフォルトの名無しさん :2020/03/27(金) 23:27:00.17 ID:MpMbbGem0.net
プロポーショナル文字の場合に、画面上の文字の表示位置はどうやって求めるんでしょうか?
1文字ごとに(x,y)座標を計算して配列変数に記憶しておく、
文字を削除、挿入などして位置がずれたときにはすべて計算し直す
というような方法しか思いつきません

165 :デフォルトの名無しさん (アウアウウー Sacd-PYaq):2020/03/28(土) 00:41:06 ID:PEyzMklSa.net
>>164
↓のサンプルコードみたいな話?やったことないから知らんけど
https://docs.microsoft.com/ja-jp/dotnet/api/system.drawing.graphics.measurecharacterranges

166 :デフォルトの名無しさん (ワッチョイ 764a-1K1t):2020/03/28(土) 01:33:04 ID:7wRTqyNf0.net
そんな感じです
毎度毎度文字列の長さを測定するのもなあ〜と、ちょっと思ったもので質問しました

167 :デフォルトの名無しさん (ワッチョイ 0935-lv27):2020/03/28(土) 01:43:01 ID:ngUeRIaE0.net
削除・挿入した文字列のサイズを全体から足し引きする

168 :デフォルトの名無しさん :2020/03/28(土) 06:08:44.57 ID:k+10ZvFP0.net
フォントは左右は良いけど上下に謎のスペースが入って扱いづらい。フォント毎に仕様が違うので厄介

169 :デフォルトの名無しさん (エムゾネ FFb2-nBi6):2020/03/28(土) 10:27:24 ID:juOTiA3TF.net
オリンピックじゃないけどカーリング

170 :デフォルトの名無しさん :2020/03/28(土) 11:24:58.10 ID:+WXFsbEZ0.net
>>164
基本は再描画時に行頭から行末まで1文字つずつカウントアップ

171 :デフォルトの名無しさん (ワッチョイ 92ad-B4Y8):2020/03/30(月) 07:25:35 ID:h/V/0o0/0.net
http://www.wisdomsoft.jp/59.html
ここのコード1はなぜ8になるのでしょうか?
論理積の理屈はまあまあ分かったのですがビットがどうこうってのが分からないのですが

172 :デフォルトの名無しさん (ワッチョイ b5da-3LRk):2020/03/30(月) 07:29:34 ID:6/Nsoznj0.net
両方たっているのが1000bだから

173 :デフォルトの名無しさん (ワッチョイ 5ef2-Bt6E):2020/03/30(月) 07:32:55 ID:X05REbKS0.net
>>171
2進数を理解したらわかるよ

174 :デフォルトの名無しさん :2020/03/30(月) 07:45:18.96 ID:h/V/0o0/0.net
>>173
0cと0aを2進数に直してもなぜそうなるのかわからないのですが…
沼に嵌りそうだから後回しにしたほうがいいかな・・

175 :デフォルトの名無しさん :2020/03/30(月) 07:56:54.43 ID:yPZuudvza.net
>>174
正しく2進数にできてないんじゃないか?いくつになると思ってる?

176 :デフォルトの名無しさん :2020/03/30(月) 08:01:46.25 ID:h/V/0o0/0.net
>>175
1010と1100と思います
それで論理積で評価してtrueが帰ってくるとなぜ13になるのかわからないです

177 :デフォルトの名無しさん :2020/03/30(月) 08:04:27.51 ID:aCqibAU/0.net
図2に書いてあるのが全てだが
8という数字ではなく結果が2^3と考える
各ビットについて
「ビットnが1同士=結果は1」を繰り返して全部の桁を足す
この場合ANDの結果が1なるのは4ビット目だけなので

2^3 x 1
+
2^2 x 0
+
2^1 x 0
+
2^0 x 0
の結果が8だ

178 :デフォルトの名無しさん :2020/03/30(月) 08:13:24.87 ID:h/V/0o0/0.net
>>177
かなり噛み砕いて説明ありがとうございます
・・・でもわからない;;^は排他的論理積の記号ですか?
2進数とビットをもっと勉強して出直してきます

179 :デフォルトの名無しさん :2020/03/30(月) 08:22:46.27 ID:aCqibAU/0.net
あ、C#には累乗演算子ないか
2^3は「2の3乗」の意味です
Math.Pow(2, 3);

180 :デフォルトの名無しさん :2020/03/30(月) 08:23:27.68 ID:h/V/0o0/0.net
>>177
ごめんなさい、理解できました
長々と付き合っていただきありがとうございました

181 :デフォルトの名無しさん :2020/03/30(月) 22:26:07.20 ID:fWO3XlZL0.net
ほっこりした

182 :デフォルトの名無しさん :2020/03/31(火) 05:00:18.54 ID:8jxewuXM0.net
◯っこりした

183 :デフォルトの名無しさん :2020/03/31(火) 12:53:35.20 ID:fWUbK/Ahd.net
マッコリした

184 :デフォルトの名無しさん (ワッチョイ 6924-0ih2):2020/03/31(火) 14:59:25 ID:zOJyTQkJ0.net
どうでもいいんだけど二乗でわざわざMath.Powを使う人の狙いって何?
普通にx*xで良いじゃん

185 :デフォルトの名無しさん (アウウィフ FFcd-MKsy):2020/03/31(火) 15:02:22 ID:uDSFrRRVF.net
i x i

186 :デフォルトの名無しさん (ワッチョイ 5561-Cd0d):2020/03/31(火) 15:05:29 ID:iZe8wtQ40.net
累乗であることを明確にできるんでMath.Powのほうがいいような気がするなあ。

187 :デフォルトの名無しさん (ワッチョイ 45ac-tCKN):2020/04/01(水) 00:45:48 ID:7LP+CGQA0.net
>>185
かわいくてほっこりするからアリ

188 :デフォルトの名無しさん :2020/04/01(水) 03:52:03.60 ID:lVwFrbjs0.net
あえてこじつけるなら仕様書通りの表現ができること
2乗の値をってなってるのが3乗の値に仕様変更された時差分で2が3に変わってる方がわかりやすい

189 :デフォルトの名無しさん :2020/04/01(水) 07:47:41.17 ID:MqGhAKfu0.net
>>184
同じこと繰り返したくない。
変数名がクソ長くてよく似た名前のが存在してたらMathPowの方が安心できる。その程度だぜ。速度的なことは知らんけど。

190 :デフォルトの名無しさん :2020/04/01(水) 09:27:50.48 ID:jWoZ64tYM.net
実数ならMath.Pow使うけど整数ならx * xにするな

191 :デフォルトの名無しさん :2020/04/01(水) 10:40:40.89 ID:Z3CDkAvT0.net
double x = p1.X - p2.X, y = p1.Y - p2.Y;
var dist2 = x * x + y * y;

var dist2 = Pow(p1.X - p2.X, 2) + Pow(p1.Y - p2.Y, 2);

結論:べき乗演算子欲しい

192 :デフォルトの名無しさん :2020/04/01(水) 11:03:28.91 ID:5VJq6KKKF.net
var Dist2 = Func<double, double, double> (dx, dy)=> {return dx*dx+dy*dy;};
var dist2 = Dist2(p1.X - p2.X, p1.Y - p2.Y);
あほだな
var Dist2 = Func<Point, Point, double> (p1, p2)=> {return Pow(p1.X - p2.X, 2) + Pow(p1.Y - p2.Y, 2);};
var dist2 = Dist2(p1, p2);
いまいちだな

193 :デフォルトの名無しさん :2020/04/01(水) 17:09:27.69 ID:9jyTppa90.net
Point型にDistanceメソッドつけといてくれたらええのになあ

194 :デフォルトの名無しさん :2020/04/01(水) 17:11:21.84 ID:0oGZrVNR0.net
点に距離なんて無いだろうに

195 :デフォルトの名無しさん (ワッチョイ 851d-6nIr):2020/04/01(水) 18:49:00 ID:60SS71wY0.net
YouTuberは「最強の職業」である理由。
https://www.youtube.com/watch?v=XjV3Nb0-hgA
【事例付き】YouTuberは最強の副業である件について。
https://www.youtube.com/watch?v=wB8hNuNVoIw&t=267s
【初心者向け】YouTubeの始め方・稼ぎ方を徹底解説!
https://www.youtube.com/watch?v=YEw-a8qlADM
「YouTubeなんていつか稼げなくなる」という主張を論破する。
https://www.youtube.com/watch?v=VatNILApW4U
収益化から丸1年!YouTubeでいくら稼いだか公開。
https://www.youtube.com/watch?v=-zQxuQqZ5eA&t=103s
その動画で月商○○万!? YouTubeで稼ぐ裏技的アプローチ。
https://www.youtube.com/watch?v=7I4APU_6i9o&t=433s
【貧者の工夫で戦え】ガラケーだっていい。YouTube始めるのにパソコンはいらない!
https://www.youtube.com/watch?v=jYdWfjjzD7Y
【第一回】SNS、YouTube、ブログで稼ぐ方法を、丁寧に解説します!
https://www.youtube.com/watch?v=erNiLOncDnY

196 :デフォルトの名無しさん (ワイーワ2 FF93-Wy2p):2020/04/01(水) 18:53:16 ID:86v82W0VF.net
System.Drawing Point Distance なし
System.Windows Point Distance なし
Xamarin.Forms Point Distance あり!!!

197 :デフォルトの名無しさん :2020/04/01(水) 19:50:46.55 ID:ULM1+KSpa.net
描画面上の距離が必要になるケースってあんまりないような気はするね。

直交座標上の点を表すstructがあってそっちに付いてるなら分からんでもない。
.NETのライブラリって数学の名前空間がないんだよな。
MathってSystem直下のstaticクラスになってて、今となっては疑問を感じる設計だよね

198 :デフォルトの名無しさん :2020/04/01(水) 19:51:14.57 ID:o39i6dw+0.net
DistanceよりsqrMagnitudeの方が多用する

199 :デフォルトの名無しさん :2020/04/01(水) 20:15:30.50 ID:2fyvFTga0.net
割と知名度の低いSystem.Numerics

200 :デフォルトの名無しさん :2020/04/02(木) 06:04:40.26 ID:OVS0fpTc0.net
System.Numericsってなんだと思ってググったら、存在知らずにだいぶ前にこれと似たようなの(しかも劣化コピー)自作したぞ。
今ひどい黒歴史が出来たわ・・・・・

201 :193 :2020/04/02(木) 06:58:15.83 ID:JxZO1Jli0.net
>>196
あるのかぁぁぁぁ!!!!!!
Xamarinてことはスマホアプリか。UI関係で使うんかな?

202 :デフォルトの名無しさん (ドコグロ MMe1-qghl):2020/04/03(金) 09:37:19 ID:cBUAwFsBM.net
XamarinがMSに買収される前からあるんだろ?
零細企業のアホ社員がまともなコードレビューも受けないままリリースしちゃったんだろうな

203 :デフォルトの名無しさん (ワッチョイ 8dda-fwpz):2020/04/03(金) 09:38:38 ID:lfI6G99C0.net
人脈が無いと使えないって言ってるでしょうに

204 :デフォルトの名無しさん (エムゾネ FF43-8H9x):2020/04/03(金) 14:53:19 ID:VVxcL9MvF.net
ちょまどさんがきっとなんとかしてくれる

205 :デフォルトの名無しさん (ワッチョイ 4d61-sbZV):2020/04/03(金) 17:02:10 ID:UoNKEVCn0.net
WinForms で、MDI の場合、子フォームのメニューは親フォームにマージされるようですが、この動作を変更して、マージせずに子フォームのメニューバーの位置に直接メニューを表示することは可能でしょうか?
可能な場合、どうすればできますか?

206 :デフォルトの名無しさん (ワッチョイ 4b7b-Teqc):2020/04/03(金) 17:11:49 ID:blY/nayW0.net
>>205
https://dobon.net/vb/dotnet/form/mdiapplication.html#section5

207 :デフォルトの名無しさん (ワッチョイ 0533-tDlu):2020/04/03(金) 17:26:05 ID:j3QBAl3N0.net
>>205
子フォームのそれぞれにメニューバーが欲しいってこと?
すごく邪魔そうだけど…

208 :デフォルトの名無しさん (エムゾネ FF43-8H9x):2020/04/03(金) 17:44:55 ID:VVxcL9MvF.net
>>205
SDI

209 :デフォルトの名無しさん :2020/04/03(金) 18:00:55.95 ID:UoNKEVCn0.net
>>207
そうです。
子フォームも親フォームと同様にタイトルバーの下に独自のメニューバーを持たせたい場合の話です。

210 :デフォルトの名無しさん :2020/04/03(金) 18:01:25.86 ID:UoNKEVCn0.net
>>208
SDIではなく、複数の子ウィンドウを作りたいのです。

211 :デフォルトの名無しさん (ワッチョイ 8dda-fwpz):2020/04/03(金) 18:17:58 ID:lfI6G99C0.net
SetParentで養子に出してしまえ

212 :デフォルトの名無しさん (ワッチョイ 4d61-sbZV):2020/04/03(金) 18:25:08 ID:UoNKEVCn0.net
>>206
読んだんですが、該当する箇所は無いようです。
有れば教えてください。

213 :デフォルトの名無しさん (アウアウウー Sae9-1s42):2020/04/03(金) 18:30:10 ID:ytDWP9uSa.net
>>209
親のMenuStripのAllowMerge = falseだね
デフォでマージされないはずだと思ってたけど勘違いだった

214 :デフォルトの名無しさん (ワッチョイ 4d61-sbZV):2020/04/03(金) 18:40:10 ID:UoNKEVCn0.net
>>213
親Formの AllowMerge を falseにするということは、どんなMDIに対しても
影響が及ぼされてしまうんですね。
一部のMDI Chileだけは個別にメニュー付きで、他のMDI Childは、親のメニューにMerge、という具合には出来ないんですか。

215 :デフォルトの名無しさん (エムゾネ FF43-8H9x):2020/04/03(金) 18:46:29 ID:VVxcL9MvF.net
そこまでこだわるなら floating menu 造って子ウィンドウに載せろ

216 :デフォルトの名無しさん (アウアウウー Sae9-1s42):2020/04/03(金) 18:51:31 ID:ytDWP9uSa.net
>>214
そういうヘンテコなUIはどうかと思うけど、
マージしたくない子のMenuStripのAllowMerge = falseでいけるみたい

っていうかこれぐらい自分で試そうよw

217 :デフォルトの名無しさん (ワッチョイ 4d61-sbZV):2020/04/03(金) 19:07:26 ID:UoNKEVCn0.net
>>211
MDI Child Frame(?)の子として中に別の Window を入れるのでしょうか?

218 :デフォルトの名無しさん :2020/04/04(土) 00:11:51.82 ID:8ZllyE370.net
いくら初心者向けのスレッドっても少しは自分で試してみなよ

219 :デフォルトの名無しさん :2020/04/04(土) 12:59:15.20 ID:PIJg3gqB0.net
コードを変更しても反映されない
いきなり原因不明のエラーが出ると思ったら
Form1.Designer.csの中で勝手にプロパティ初期化してた

220 :デフォルトの名無しさん :2020/04/04(土) 17:22:20.79 ID:9nDXuupl0.net
VS2019のメニューを見ていると、MFCと同様に、無効な項目は
グレイ表示されています。
MFCの場合は、Merge方式ではない代わりに、ActiveなChildWndが
ハンドラを実装していない場合には自動的にグレイ表示になっていたのですが、
WinFormsの場合は、どうやれば良いのでしょうか?

221 :デフォルトの名無しさん (アウアウウー Sae9-1s42):2020/04/04(土) 19:04:00 ID:UFbKis4ca.net
>>220
1年前にも似たような質問があった気が。
MFCは知らないのであれだけど、多分MFCに近いやり方は用意されてないかと。

結果的に同じようなUIをなるべく簡単に実現するには、1年前にも書いたけど
MDI子に共通のメニューを持つFormをまず作って、
個々のMDI子はそれを継承するのがいいんじゃないかなあと

222 :デフォルトの名無しさん (ワッチョイ 2361-sbZV):2020/04/04(土) 19:30:33 ID:C11LX2Y60.net
>>221
それで、ハンドラを実装したくない継承クラスでは、その項目を disable にするという
わけですか。

223 :デフォルトの名無しさん :2020/04/04(土) 19:59:31.83 ID:UFbKis4ca.net
そうそう。
継承後のフォームでもデザイナでコントロールのプロパティーの値を変更というか上書きできたはず
ついでに、MenuStripのVisible = falseにしておけば親にマージされている時以外メニューは表示されないみたい

224 :デフォルトの名無しさん :2020/04/06(月) 03:12:51.01 ID:O7BKGhOT0.net
ビル・ゲイツが私財でコロナのワクチン作る。
c# プログラマに一番最初にワクチンを供給してくれるとおもう。

安全性の確認できないワクチンや薬品をc#プログラマにぶち込めば開発効率が上がる。

人体実験を断ったら、msdn、マイクロソフトid を停止させるとかして、Windows 利用不可にすればいい。
c#コンピューターオタクは断ると当面お金を稼げなくなるから喜んで実験に参加してもらえるはず。

まと、コンピューターオタクには人権はないので、実験により貴重な人命が損なわれることもない。

225 :デフォルトの名無しさん :2020/04/06(月) 07:14:18.13 ID:GDVBsc7B0.net
MSが作るワクチンなんてバグだらけになってそうでこわひ

226 :デフォルトの名無しさん :2020/04/06(月) 08:02:15.03 ID:m5eAFRE+M.net
ワロタ

227 :デフォルトの名無しさん (ワッチョイ e501-fwpz):2020/04/06(月) 09:39:40 ID:78vqHF1U0.net
弱毒化ミスりました。てへ

228 :デフォルトの名無しさん (ワッチョイ 2310-CuPJ):2020/04/06(月) 09:46:00 ID:xLTmiL/Q0.net
そんなミスされたらゲイツの顔がブルースクリーンになっちゃう

229 :デフォルトの名無しさん :2020/04/06(月) 10:17:13.45 ID:TxMJ3ToxF.net
>>224
先生そういう宗教的な分野はMacとかSwiftとかの方が適していると思います

230 :デフォルトの名無しさん :2020/04/06(月) 11:37:10.89 ID:O7BKGhOT0.net
>>225
c# プログラマにベータ版ワクチンをインストールしてもらいデバッグするんですよ。
バグのないワクチンとソフトウェアはありません。

Macユーザーは完成後のワクチンは提供対象外。

だから、MacBook とかに Windows をインストールしてる人は、デバッグと実験の対象になりますが、完成したワクチンの提供は対象外となります。

231 :デフォルトの名無しさん (ワッチョイ b501-bVUD):2020/04/07(火) 17:59:28 ID:Fz3MtvZy0.net
visualstudioで
フォームアプリに追加したクラスライブラリにclass1.csとclass2,csがあるんですけど
class2の方にコントロールを継承してもツールボックスに表示されないのはなぜでしょうか
class1だと表示されました

232 :デフォルトの名無しさん (ワッチョイ 55b0-CuPJ):2020/04/07(火) 18:09:18 ID:haJ3Gg0r0.net
GoogleドライブにファイルをアップをしたくてGoogleの下のサンプルを
参考に動かしてみたのですが、全くアップできず何が悪いのかさっぱりです・・・

https://developers.google.com/drive/api/v3/quickstart/dotnet
https://developers.google.com/drive/api/v3/manage-uploads

以下がコードです。
https://dotnetfiddle.net/4z2iZ4

ファイルのリストは、取得できているので認証はできていると思うのですが
「var file = request.ResponseBody」の行で、fileがnullとなっており
次の行でエラーが発生しています。

どなかたお助けください。よろしくお願いいたします。

233 :デフォルトの名無しさん (ワッチョイ 4b7b-Teqc):2020/04/07(火) 18:10:40 ID:Zxvg5mpZ0.net
>>231
追加部分をビルドしてもツールボックスに表示されないのなら該当するVSのスレで聞いてくれ

234 :デフォルトの名無しさん (ワッチョイ b501-bVUD):2020/04/07(火) 18:23:44 ID:Fz3MtvZy0.net
>>233
VSスレ行ってきます

235 :デフォルトの名無しさん :2020/04/07(火) 18:42:39.03 ID:G5F9VLMpF.net
>>232
var driveService = new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "MyApplicationName",
});

使ってない?

236 :デフォルトの名無しさん :2020/04/07(火) 18:55:57.94 ID:G5F9VLMpF.net
あとは
var fileMetadata = new Google.Apis.Drive.v3.Data.File(){
Name="test.png",MimeType="image/png",};
にしてみるとか
他にはstreamがbinaryになってるかどうかとか

https://gist.github.com/LindaLawton/ead22e44bf88c3afa60753de0445eddf
この人もnullって言ってるな

237 :デフォルトの名無しさん :2020/04/07(火) 18:58:19.21 ID:G5F9VLMpF.net
さすがstackoverflow
https://stackoverflow.com/questions/45662041/null-response-creating-file-using-google-drive-net-api

238 :デフォルトの名無しさん :2020/04/07(火) 19:00:30.98 ID:G5F9VLMpF.net
っていうか
DriveService.Scope.DriveReadonly
じゃだめな気がする

239 :デフォルトの名無しさん :2020/04/07(火) 19:02:03.78 ID:haJ3Gg0r0.net
>>235
すみません。そこ使っていません。コメントアウトしました。
51行目でDriveServiceを宣言しているので、そこでの宣言は不要でした。

240 :デフォルトの名無しさん :2020/04/07(火) 19:42:25.67 ID:haJ3Gg0r0.net
>>237
>>238
出来ました!ありがとうございます!!
なるほど!一度作ったjson消さないと駄目なんですね。
本当にありがとうございました!!

241 :デフォルトの名無しさん (ワッチョイ df01-aZ/i):2020/04/08(水) 18:42:37 ID:4ZoNAvx+0.net
バルクコピーはdatatableだけに対応なのでしょうか?
ググってもジェネリックで使う記事が見当たらないので無理なのかなという気がしていますが

242 :デフォルトの名無しさん (ワッチョイ 622c-N9MB):2020/04/08(水) 21:01:32 ID:SnWF1IxV0.net
SqlBulkCopyの話ならWriteToServerのオーバーロード見る限り
IDataReader頑張って実装すれば何とかなりそう

243 :デフォルトの名無しさん (ワッチョイ 06e3-AglQ):2020/04/08(水) 22:55:22 ID:t+YdRhnM0.net
ググればToDataReaderの拡張メソッドヒットするからそれ参考に実装すればいいんじゃね
俺社環でライブラリの拡張メソッド禁止されているから、IDataReaderで作ったけど

244 :デフォルトの名無しさん :2020/04/09(木) 07:09:54.80 ID:9rfBAHbp0.net
>>243
知らない知識なので参考にさせて頂きます
しかしバルクコピーのメソッドがdatatableという古い技術で実装させる時点で、そもそもバルクコピー自体が古い技術で別の最新技術があるのかなと疑っております
色々な角度で調べてみるつもりです

245 :デフォルトの名無しさん :2020/04/09(木) 07:57:03.98 ID:WaI3ZH+Vr.net
datatableってもう古いの?

246 :デフォルトの名無しさん :2020/04/09(木) 08:44:51.87 ID:lA8JDzIo0.net
win10において
・ネットワークとインターネット設定→プロキシのセットアップスクリプトを使う設定のON/OFF切り替え
・ネットワーク接続のインターネットプロトコルバージョン4のプロパティの
IPアドレスを自動的に取得すると、次のIPアドレスを使うの切り替えと入力
DNSサーバー・・・と次のDNSサーバーのアドレスを使うの切り替えと入力
これをC#アプリで実現できますか?どのようなクラスを使えばいいでしょうか?

247 :デフォルトの名無しさん :2020/04/09(木) 09:25:00.65 ID:x5VgstST0.net
レジストリいじれば設定変更できるやつだろ
ようはwin32だろ、それくらいまでは調べたよな?

248 :デフォルトの名無しさん :2020/04/09(木) 10:21:54.03 ID:uYq8FGtT0.net
IPアドレスの変更の類はnetshコマンドをProcessクラスで使うのが一番手っ取り早いと思う

249 :デフォルトの名無しさん :2020/04/09(木) 11:12:18.01 ID:x5VgstST0.net
ローカルじゃなければProcess使うかなあ

250 :デフォルトの名無しさん :2020/04/09(木) 11:17:42.26 ID:MvrijcPz0.net
目的にもよるんだろうけど、PowerShellでスクリプト書く方が早そうな予感
完全にスレチになるけど

251 :デフォルトの名無しさん :2020/04/09(木) 11:21:39.40 ID:wyC9Ec3D0.net
内部でPowerShellスクリプトを走らせるC#プログラムを作る

252 :デフォルトの名無しさん :2020/04/09(木) 12:41:32.88 ID:kpg/tOgGF.net
>>248
ほんそれ +1

253 :デフォルトの名無しさん :2020/04/09(木) 12:48:40.23 ID:XKMcLRnY0.net
x ほんそれ
o ほんとそれ

正しい日本語で

254 :デフォルトの名無しさん :2020/04/09(木) 14:07:27.20 ID:wyC9Ec3D0.net
日本語を母国語としない人ほど
正しくない日本語で困るのです

255 :デフォルトの名無しさん (ワッチョイ d701-jz5X):2020/04/09(Thu) 21:32:00 ID:ezz+hw670.net
ハンソロ

256 :デフォルトの名無しさん :2020/04/10(金) 07:07:24.38 ID:xmb7c5Fr0.net
>>245
新規開発でdatatable使ってたらうわってなる

257 :デフォルトの名無しさん :2020/04/10(金) 08:53:16.36 ID:9rsnwyfyM.net
>>256
今は何ですか?

258 :デフォルトの名無しさん :2020/04/10(金) 08:53:52.31 ID:GJl9p4h50.net
型付きDataSet

259 :デフォルトの名無しさん :2020/04/10(金) 09:00:25.56 ID:3BYzeKcKM.net
>>245
もうEFかDapperでええやろ

260 :245 :2020/04/10(金) 09:43:04.90 ID:Rte1PrgOr.net
あーそういや気付けばdapperばっか使ってたわ
あいえにゅめにゃんにゃんが便利やしなあ

261 :デフォルトの名無しさん :2020/04/10(金) 10:18:31.70 ID:XzeHNtat0.net
DBとは無関係に
動的列、フィルタ&ソートしたまま行追加、みたいなのが必要な時はDataTable使ってる

262 :デフォルトの名無しさん :2020/04/10(金) 11:00:45.18 ID:nz1tlAhXF.net
DataTableでうわぁっってなるひとはJSONでくぇぇっってならんのまじで?

263 :245 :2020/04/10(金) 11:58:55.10 ID:dIu9zrlt0.net
jitとか使ってそう

264 :デフォルトの名無しさん :2020/04/10(金) 12:04:16.89 ID:sXssV4F30.net
DataTableは2次元
JSONは3次元

265 :デフォルトの名無しさん (ワッチョイ 4e2f-5WFu):2020/04/10(金) 13:26:59 ID:saZPvfHU0.net
EFもDapperも変更追跡がなぁ

266 :デフォルトの名無しさん :2020/04/10(金) 13:54:32.33 ID:/e8vDB+E0.net
>>265
Dapperにそんなもんあったっけ?

267 :デフォルトの名無しさん :2020/04/10(金) 14:10:46.01 ID:saZPvfHU0.net
>>266
ないよ
DataSetにはあるんだよ

268 :デフォルトの名無しさん :2020/04/10(金) 14:29:32.62 ID:/e8vDB+E0.net
EFにはあるやろ

269 :デフォルトの名無しさん :2020/04/10(金) 15:28:01.76 ID:SuSUfgJ80.net
Chartコントロールで横のスクロールバーを表示させる方法を教えてください。
サンプルプログラムは↓のをほぼそのまま使いました。( i < 5のところを i < 500に変えて数だけ増やしています)
チャートは普通に表示されるのですが、いろいろ探してもスクロールバーの出し方が全然わかりません。

https://qiita.com/Aki_mintproject/items/02e98173eb8eee74fc5b

270 :デフォルトの名無しさん :2020/04/10(金) 16:05:22.34 ID:eaxyjA8iF.net
https://stackoverrun.com/ja/q/1249648

271 :デフォルトの名無しさん :2020/04/10(金) 16:06:49.77 ID:eaxyjA8iF.net
https://docs.grapecity.com/help/c1/aspnet/webchart/addscrollbartothexax.html

272 :デフォルトの名無しさん (ワッチョイ 4e2f-5WFu):2020/04/10(金) 19:04:23 ID:saZPvfHU0.net
>>268
ここで言ってるのはモデルが自分自身の変更内容を保持する機能な
EFにもないよ

もちろんモデルに自分で作りこめば可能だけどな

273 :デフォルトの名無しさん :2020/04/10(金) 21:43:50.98 ID:Q8afigXi0.net
DatasetやTableのoriginalが取れたりrejectでロールパック出来たりするのは確かに便利

274 :デフォルトの名無しさん (ワッチョイ d701-jz5X):2020/04/10(金) 22:14:18 ID:phkDJesv0.net
トランザクションログ

275 :デフォルトの名無しさん :2020/04/11(土) 02:58:17.93 ID:EYr99YyX0.net
よぉ〜しよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよしよし

276 :デフォルトの名無しさん :2020/04/11(土) 13:19:24.89 ID:n/kHMKTa0.net
>>270
ありがとうございます。解決しました

277 :デフォルトの名無しさん :2020/04/12(日) 16:27:59.95 ID:WBJoN6ah0.net
if(条件A && !条件B){}
みたいなことをしたいのですが、&&と!をまとめてきれいに書く方法はありますか?

278 :デフォルトの名無しさん :2020/04/12(日) 16:48:42.14 ID:insvI+xF0.net
var 条件C = 条件A && !条件B;
if(条件C){}

279 :デフォルトの名無しさん :2020/04/12(日) 18:02:02.30 ID:Vvo4XdlE0.net
クラスや関数にする
設計を見直す
あーりーりたーんを心がける

280 :デフォルトの名無しさん :2020/04/12(日) 18:08:22.86 ID:sgzIx9p/0.net
>>277
そんなものはない
C# 演算子
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/

281 :デフォルトの名無しさん :2020/04/12(日) 18:11:50.67 ID:7/OoXgJO0.net
>>277
関数にする

282 :デフォルトの名無しさん :2020/04/12(日) 19:13:16.89 ID:tx1YNXXn0.net
if (foo.IsEnabled && !bar.IsEnabled) を
if (foo.IsEnabled && bar.IsDisabled) にすることはある

単語の頭につけるエクスクラメーションマークは
見落としやすいから可読性がやや低い

>>278のパターンで変数にすることはあんまりないけど関数化するのもよくやる

283 :デフォルトの名無しさん :2020/04/12(日) 19:22:29.59 ID:xeq/pDNWa.net
>>277
おそらくそのまんまが一番きれいで見やすいぞ。
条件が長い式なら>>278みたいに一旦、適切な命名の変数に入れるのがいいと思う。

284 :デフォルトの名無しさん (ワッチョイ c62d-kdbN):2020/04/12(日) 19:43:51 ID:WBJoN6ah0.net
一発で書けるのかなと、すごく疑問に思ってたよ
ありがとう!

285 :デフォルトの名無しさん (アウアウウー Sabb-KL7n):2020/04/12(日) 21:05:32 ID:0dL6T2+Wa.net
一発で書けた
if (b ? false : a) {...}

一発で書けた
if (!(!a || b)) {...}

一発で書けた
Func<bool, bool, bool> ippatu = (x, y) => x && !y;
if (ippatu(a, b)) {...}

286 :デフォルトの名無しさん (ワッチョイ cb02-AglQ):2020/04/12(日) 21:27:27 ID:JCmsoVoe0.net
XORでいいんだったら^一個で済むけど違うよな

287 :デフォルトの名無しさん (ワッチョイ 622c-N9MB):2020/04/12(日) 21:57:13 ID:NV9JxSja0.net
Not演算子が見辛いから関数に置き換える
ぐらいでいい気はする

288 :デフォルトの名無しさん :2020/04/12(日) 23:13:55.75 ID:PHqFJcwka.net
>>285
1つ目は短絡評価の場合の動作が異なるから等価な式になってないし、2つ目の式は元の式より見辛くなって無意味だろう

289 :デフォルトの名無しさん (ワッチョイ cb5f-zfCe):2020/04/13(月) 10:34:31 ID:xWnIwwwl0.net
>>286
カルノー図描いて観ろ

290 :デフォルトの名無しさん (ワッチョイ bbda-P/Zs):2020/04/13(月) 11:05:23 ID:DkcwYYbx0.net
それでわかるのー
ベイチ図もありだね
https://qiita.com/YankeeDeltaBravo225/items/48000cdf01dde7698930

291 :デフォルトの名無しさん :2020/04/13(月) 14:35:31.90 ID:6KK4qS560.net
てかそんな条件がパット見でわからんくなるなら、根本的にそこにいたる道筋がおかしいと思うよ

292 :デフォルトの名無しさん :2020/04/13(月) 17:03:53.08 ID:wlUJ1QGb0.net
SSH.net使った事ある人います?
フォワードポイント設定後、Startしてプログラムは通ってるんですけど、なぜかポートが開かないので困ってます
RloginというフリーのSShソフト使うと同じポートが開くので、SSH.net側かVS側が原因と考えてます
ネットの先人たちの知恵を拝見して同じようにしてるんですけど、なぜか上手くいきません

開発環境
VS2017
Nugetより最新のSSH.netを入れてます

netstatコマンドでポートの確認したら、192.168.〜の所が開かず、[::]の所が開いてるようです
これはなんなんでしょう?

293 :デフォルトの名無しさん (ワッチョイ 17ad-qv0W):2020/04/13(月) 17:14:22 ID:Szw9E2890.net
>>292
ポートじゃなくてIPどうなってんの?
見た感じv6が開いてそうな感じだけど。

294 :デフォルトの名無しさん (ワッチョイ ebb2-zja/):2020/04/13(月) 17:18:05 ID:ujcK/XL20.net
ポートフォアード開始してる?ステップインで状態とエラーメッセージ追えば理由なんとなくわかるんじゃね?

295 :デフォルトの名無しさん (ワッチョイ 6207-O/Sq):2020/04/13(月) 17:41:05 ID:wlUJ1QGb0.net
>>293
>>294
返信ありがとうございます!
>>293さんのおっしゃる通りv6が開いてました
フリーソフトは両方開けてくれてたので、そこで勘違いしてました
こんな簡単な事でスレ汚してすいませんでした
ありがとうございました

296 :デフォルトの名無しさん (ワッチョイ 36eb-AglQ):2020/04/13(月) 19:23:38 ID:o+L/gyE50.net
拡張メソッドがあるのに、拡張プロパティなどが無いのは何故でしょう?

多くの日本語解説サイトで DirectoryInfoではなくDirectoryを、EnumerateFilesでなくGetFilesを使ってるのは何故でしょう?
 (対応していないバージョンのC#を利用する人も、その方が高速・妥当なコードも稀だと思うのですが…)

297 :デフォルトの名無しさん :2020/04/13(月) 19:55:51.75 ID:i5ardRu40.net
>>296
> 拡張メソッドがあるのに、拡張プロパティなどが無いのは何故でしょう?
Why No Extension Properties?
https://blogs.msdn.microsoft.com/ericlippert/2009/10/05/why-no-extension-properties/

> 多くの日本語解説サイトで
解説を書いてるヤツらに聞け

298 :デフォルトの名無しさん (ワッチョイ 622c-N9MB):2020/04/13(月) 20:03:19 ID:Bv/vlgUb0.net
拡張プロパティの類はC#10かもうちょい先ぐらいで追加されそう
https://ufcpp.net/blog/2018/7/pickuproslyn0714/

299 :デフォルトの名無しさん (ドコグロ MM7a-juGi):2020/04/13(月) 20:08:08 ID:Wzp4v7WxM.net
>>298
最悪の提案だな
言語にこういう横断的関心事を入れられるようになるとだいたい無茶苦茶になるから、絶対にやめてほしい

300 :デフォルトの名無しさん (ワッチョイ 36eb-AglQ):2020/04/13(月) 20:26:56 ID:o+L/gyE50.net
>>297,298
なるほど 確かにC#3.0に並んでるものと比べたら、優先度低くても全然不思議じゃないですね
将来的な実装を心待ちにしておきます ありがとう!

開発チームの内情というか現実的な部分の説明が面白かったw

>>299
言われてみれば、強力な反面 把握し辛い奇想天外なクソコードも書きやすくなりそうですね

301 :デフォルトの名無しさん (ワッチョイ 0b17-AglQ):2020/04/13(月) 20:49:56 ID:4T6PL/Gc0.net
>>298
リフレクション使うとどんな挙動になるんだろ

302 :デフォルトの名無しさん :2020/04/13(月) 21:10:08.00 ID:Bv/vlgUb0.net
>>301
今の拡張メソッドと特に変わらんのじゃない?

>>299
ちなみに言語にこういうのを入れて滅茶苦茶になった言語ってどんなのがある?
どんな感じに滅茶苦茶になったのかな

303 :デフォルトの名無しさん :2020/04/13(月) 21:18:16.05 ID:VqvNVGMOa.net
>>302
そういう失敗例ならScalaでも見てみたら

304 :デフォルトの名無しさん :2020/04/13(月) 23:30:22.44 ID:IBaPMQxT0.net
Taskとasync/awaitの使い方について質問です
await Task.Delay(100);

task.Wait();
を組み合わせるとデッドロックすると色々なページで書かれていますが

試したらデッドロックしませんでした
https://ideone.com/d6BWCC

ConfigureAwaitもよく分かっていません(コンテキストとかマーシャリングとかも・・・)
https://docs.microsoft.com/ja-jp/dotnet/api/system.threading.tasks.task.configureawait?view=netframework-4.8

なぜデッドロックしなかったのか教えてください

305 :デフォルトの名無しさん :2020/04/13(月) 23:33:06.25 ID:LODcFAHq0.net
>>304
guiでWaitメソッドを使ってみて

306 :304 (ワッチョイ 6233-AglQ):2020/04/14(火) 00:04:17 ID:wwnZT3mo0.net
WPFで適当なボタン作ってクリックイベント内で同じようなことをしたらフリーズしました
GUIじゃなければ起きない、とかでしょうか
CUIだとフリーズせず実行できてしまいます

307 :デフォルトの名無しさん (ワッチョイ 8eda-KRXG):2020/04/14(火) 02:23:36 ID:hp+6QaJX0.net
・UIスレッドは1つしかない
・GUIアプリの場合、await後は生成元のスレッドに戻ろうとする
・ところがUIスレッドはawaitしている
・お互い待ち合うことでデッドロック発生

CUIの場合はawait後に元のスレッドに戻らないのでデッドロックしない。
GUIでもAsync1、Async2のメソッド内で
await Task.Delay(100).ConfigureAwait(false);
とすればデッドロックしないが、Async1やAsync2でDelay後にUI部品触ると(ボタンのキャプション変えるとか)落ちる

308 :304 (ワッチョイ 6233-AglQ):2020/04/14(火) 09:01:56 ID:wwnZT3mo0.net
なんとなくわかった気がしました

SynchronizationContext.Currentで取得できる同期コンテキストでawaitの動作が変わってるみたいで
CUIはもともとnull、WPFは
await Task.Delay(100).ConfigureAwait(false);
のあとはnullになるようです

一度nullにしてしまえば
await Task.Delay(100);
Async().Wait();
とやってもフリーズしませんでした
というかCUIと同じようにawait毎にスレッドがコロコロ変わるようになります

逆にCUIでも同期コンテキストを設定してしまえばデッドロックも起こせるみたいです
SynchronizationContext.SetSynchronizationContext(new WindowsFormsSynchronizationContext());
とやったらCUIでもフリーズしました

普通のnew SynchronizationContext()ではフリーズしないので、知らない仕掛けがありそうですが
同期コンテキストの作られ方によってawaitの動作が変わるから
デッドロックが起きたり起きなかったりする、という感じがしました

309 :デフォルトの名無しさん (ワッチョイ 7b0c-AglQ):2020/04/14(火) 11:04:24 ID:27IsOs6K0.net
WinformsやWPFは各々フレームワークのコンポーネントの初回呼び出しで
それぞれ専用の同期コンテキストを自動で現在のスレッドに設定して
await 式から自動生成されたコードで現在の同期コンテキストのSendやPostを呼び出してるって割と単純な話だわよ

310 :デフォルトの名無しさん :2020/04/14(火) 21:47:37.07 ID:kOEIvzYK0.net
質問失礼致します。
ttps://xr-hub.com/archives/20326
の2番目のサンプルコード「Person.cs」に

public Person(string name, Job job)

という行があるのですが、これは関数ですか?
publicの後の型やvoidを省略した時、どういう扱いになっているのでしょうか?
(暗黙的にvoidなど)

初歩的すぎる質問ですが知恵をお借し頂ければと思います。
よろしくお願い致します。

311 :デフォルトの名無しさん :2020/04/14(火) 21:49:20.96 ID:LYeRKBcY0.net
>>310
コンストラクタで検索してみよう

312 :デフォルトの名無しさん :2020/04/14(火) 21:52:06.64 ID:LIgN/yKN0.net
>>310
それはコンストラクタで関数じゃない

http://www.kumei.ne.jp/c_lang/cs/cs_24.htm

313 :デフォルトの名無しさん (ワッチョイ 7b59-vo9w):2020/04/14(火) 22:02:45 ID:kOEIvzYK0.net
>>311,312
コンストラクタと言うキーワード自体を知らなかったので大変助かりました!
迅速なお答えありがとうございます。

314 :デフォルトの名無しさん :2020/04/14(火) 22:48:21.91 ID:GtUt/+gx0.net
コンストラクタが関数じゃないだとっ?

315 :デフォルトの名無しさん :2020/04/14(火) 23:10:59.52 ID:e1S+5JbE0.net
>>312
え?

316 :デフォルトの名無しさん (ワッチョイ ebb2-zja/):2020/04/14(火) 23:32:09 ID:a7j1JMim0.net
>>313
コンストラクタ知らないとか煽り抜きで基礎からやり直せ。この先すぐに行き止まりやぞ

317 :デフォルトの名無しさん (ワッチョイ 06f2-shd/):2020/04/14(火) 23:38:54 ID:aqCEjjHy0.net
ゆっくり進んでいけばいいさ

318 :デフォルトの名無しさん :2020/04/15(水) 00:53:54.59 ID:fYr2Vm730.net
コンストラクタは言語によってちょこちょこ違いがあるからなあ
それによって作法も、チームとかのなかでの使い方も違うんだよな

319 :デフォルトの名無しさん (ワッチョイ 7feb-Ho7r):2020/04/15(水) 06:29:23 ID:ElrUDxqt0.net
初心者で妥当な用語もよく分からないのですが、

Sytem.IO.File全体を Sytem.IO.FileInfoで上書きしたり
Sytem.IO.File全体を FileUtilsにリネームして利用ってできるでしょうか

多分歴史的経緯とかなんでしょうが、名前も機能も違和感ある・・・あるよね?

320 :デフォルトの名無しさん (ワッチョイ 7feb-Ho7r):2020/04/15(水) 06:30:19 ID:ElrUDxqt0.net
正system
誤sytem

321 :デフォルトの名無しさん :2020/04/15(水) 07:39:24.57 ID:0X0pe0WE0.net
>>319
名前空間の上書きは出来るよ
using に= を付ける。
マニュアル読むべし

322 :デフォルトの名無しさん (ブーイモ MMbb-XMn9):2020/04/15(水) 07:54:03 ID:HIqtt51zM.net
マニュアル読むならこのスレには来ないよ

323 :今度はビルドとはとか言い出すんだろうか? (ドコグロ MMbf-A2g6):2020/04/15(水) 07:59:57 ID:WVx1tERFM.net
進歩しろってことだろ
>>322には一生無理っぽいが…

324 :デフォルトの名無しさん (ワッチョイ 7feb-Ho7r):2020/04/15(水) 08:16:40 ID:ElrUDxqt0.net
>>321
ありがとう! alias directiveで上書きになるのか
aliasって単語から、上書き用に使うという発想が出てこなかった・・・

325 :デフォルトの名無しさん :2020/04/15(水) 11:11:56.53 ID:O8tgepsJ0.net
>>319
名前も機能もべつに違和感ないけど

326 :デフォルトの名無しさん (ワッチョイ d763-oiAQ):2020/04/15(水) 11:38:37 ID:hXBJaVw20.net
>>319
すでにFileInfoは存在してるしUtilsみたいな抽象的な名称はあんま好きじゃない
あくまでもnamespaceなんだから個人的に違和感は無い

327 :デフォルトの名無しさん (アウアウウー Sa1b-V/21):2020/04/15(水) 12:23:21 ID:4U/dMrxba.net
>>319
あなたの違和感をなくすために他人に違和感を与えるコードを書いてはダメでしょうw
そういう尾崎豊的な「世の中間違ってる!」は義務教育で卒業しておけよw

インフラはみんなが慣れ親しんで知識を共有していることに意味があるんだよw
変なエイリアスを使うことはあなたの「俺流」を理解する手間を読む人に押し付けることになる。
それは1年後の自分自身かもしれないよw

328 :デフォルトの名無しさん :2020/04/15(水) 15:49:28.85 ID:fYr2Vm730.net
自分だけのコードなら好きにすればとしか
チームで共有するならレビューしろとしか

329 :デフォルトの名無しさん (ワッチョイ 372c-+ZVK):2020/04/15(水) 23:14:10 ID:erSE2P+N0.net
添付プロパティがあるじゃない

330 :デフォルトの名無しさん (ワッチョイ 7feb-Ho7r):2020/04/16(Thu) 00:47:09 ID:97EKYXOu0.net
まさにそういう話で、(大多数が慣れ親しんだ知識である)自然言語で full path of a file だから

(FileInfo) hoge.FullName より
(File) file.FullPath の方が読みやすく、知識なく利用しやすくない? と思ったんだ

自分が知らないだけでFileInfoやFullNameの方が妥当な理由あるのかな

331 :デフォルトの名無しさん (アウアウウー Sa1b-7wDT):2020/04/16(Thu) 00:49:55 ID:PmElPVF7a.net
質問です。
visual studio2013 のWEBフォーム(.aspx)を使用しています。
以下のようなフォームを作りたいです。 どうやってつくったらよいでしょうか?
  ▼コンビニ  ←選択すると▼マークになり、折り畳みのチェックボックスリストが出る
    ■セブンイレブン  ←選択するとレ点でなく、□を塗りつぶす
    □ローソン
    ■ファミリーマート
  △ショッピングモール ←選択しないときは△マークでリストは折りたたまれている
  △スーパー

よろしくお願いいたします。

332 :デフォルトの名無しさん (ワッチョイ d7ac-DNPS):2020/04/16(Thu) 00:52:31 ID:5emHbHZx0.net
チーム内でそれを浸透させる実力があるならいいんじゃね
俺はデフォルト推奨派なので、それだけの理由なら無意味な改変に見えるので
、それは賛成しないがな
「俺が見易い」は「皆が見易い」ではない

333 :デフォルトの名無しさん (ワッチョイ 5701-xSTm):2020/04/16(Thu) 00:52:46 ID:tiZKLZWE0.net
ベースはアコーディオンかな?

334 :デフォルトの名無しさん :2020/04/16(木) 00:56:55.23 ID:tiZKLZWE0.net
CreateFontがMFCではCreateFontIndirect
でオーヴァーライドされている事を
知った時の驚き。😵

世の中広いからそういう常識の所も
あるのでしょう❤

335 :デフォルトの名無しさん :2020/04/16(木) 01:31:46.69 ID:kjXrQDZb0.net
windowsならpathってだけで他システムでもpathかどうか?
組み込み系OSだったらディレクトリ構造持ってないようなやつあったりしないかね?全然しらんけど
つうかその程度なら332と同じく公式に準拠する
IDEがヘルプ付きで候補出してくれるんだし、リファレンスもあるんだから困るほどのことじゃない
あくまでもプログラムであって自然言語じゃない

336 :デフォルトの名無しさん :2020/04/16(木) 02:36:44.98 ID:tywb42E30.net
PowerShell では、FullName

$files = ls -File
echo $files[ 0 ].FullName

337 :デフォルトの名無しさん :2020/04/16(木) 07:33:52.84 ID:9ICqslwr0.net
共有フォルダに置いてる実行ファイルで、一人が起動している時に別の人が起動したら処理中ですとお断りメッセージ出したいのですが、どういう方法で実現できるでしょうか?
DBでフラグ監理しようかとも思っているのですが、世間様はどうしているのかなと思い

338 :デフォルトの名無しさん :2020/04/16(木) 07:47:41.61 ID:tywb42E30.net
共有フォルダ内に、ファイルを置いて、それに記録すれば?

339 :デフォルトの名無しさん :2020/04/16(木) 08:37:52.82 ID:vjXf34hg0.net
ロックファイル的なものを起動時に作成・チェックさせるとかかねぇ?
異常終了したりしてロックファイルが残った時が面倒だけど
そもそも共有フォルダに実行ファイルを置いて、それを起動するって運用が微妙な気がするけど

340 :デフォルトの名無しさん :2020/04/16(木) 09:47:16.73 ID:ADqfPc91r.net
それな
ファイルおいたとこで実行ユーザはローカルとか、なにそれって感じ
なんでサーバにしないのとかね

341 :デフォルトの名無しさん :2020/04/16(木) 10:45:00.68 ID:+RUJOV4w0.net
Unix環境とかならファイルオープン時に共有モード指定できないから、ロックファイルを「作成」できるかで排他制御するけど、
Windows環境なら共有モード指定できるから、「排他モードでオープン」できるかで排他制御できないの?
そうすれば、ロックの解放は単にファイルハンドルを閉じるだけでロックファイルを削除する必要はない。

で、異常終了してプロセスが終了した場合はOSがプロセスによって開かれてたファイルハンドルをクローズしてくれるので、
自動的にロックも解放されるってことにはならないの??

342 :デフォルトの名無しさん :2020/04/16(木) 11:06:22.69 ID:+RUJOV4w0.net
途中共有モードを無視するような輩がいたらあれだけど、とりあえず全部Windowsで揃えてSMBで共有すればそれでいけそうな気がする

343 :デフォルトの名無しさん :2020/04/16(木) 11:06:44.41 ID:X8YLxQCs0.net
設計が悪い

344 :デフォルトの名無しさん :2020/04/16(木) 11:07:10.39 ID:tiZKLZWE0.net
理論通りに動けば良いなぁ

なおopenfiles ってコマンドで強制解除出来る

345 :デフォルトの名無しさん (ワッチョイ d790-eJAq):2020/04/16(Thu) 11:17:40 ID:+RUJOV4w0.net
そうすれば、アプリ起動時にnew FileStream(特定のファイル、FileShare.None) アプリ終了時にStream.Closeの2行で実装終了

Windows最強

346 :デフォルトの名無しさん (ワッチョイ d733-YvxL):2020/04/16(Thu) 11:28:29 ID:vjXf34hg0.net
>>345
それって共有フォルダ側が安いNAS(≒samba)でも使えるの?

347 :デフォルトの名無しさん (ワッチョイ d790-eJAq):2020/04/16(Thu) 11:51:08 ID:+RUJOV4w0.net
>>346
それは知らない。

すべては要件次第。あくまで全部Windowsで揃えられる場合の一番簡単な実装を示しただけ。

安いNASでダメだったら、君のいうロックファイルのやり方でやればいい。ただし、君の方法もひょっとしたら安いNASで「ファイルの存在確認とファイルなければ作成」をアトミックにやってくれないSMBの実装があって使えない可能性もあるので。

348 :今度はビルドとはとか言い出すんだろうか? :2020/04/16(木) 12:10:19.37 ID:7ingXuoIM.net
>>339
> そもそも共有フォルダに実行ファイルを置いて、それを起動するって運用が微妙な気がするけど
バージョンアップの手間を省きたいとかでしょ
Web化しろとかの話もあるだろうけどそこまで工数かけられないとか普通にあると思う

349 :デフォルトの名無しさん :2020/04/16(木) 12:11:00.19 ID:qm5c5Rqxa.net
>>337
微妙に要件と違うけど、昔のアドビのアプリは同一ネットワーク内のPCでは
同じプロダクトキーでアクティベートされたソフトは同時に起動できなかった

あれと同じ仕組みを使うことは可能じゃないか
具体的にどういう仕組みか知らんけどw

350 :デフォルトの名無しさん (ワッチョイ 5701-xSTm):2020/04/16(Thu) 12:45:50 ID:tiZKLZWE0.net
udpでマルチキャストする

351 :337 (ワッチョイ 1701-wIxw):2020/04/16(Thu) 18:51:55 ID:9ICqslwr0.net
DBにログインIDと開始時刻を記録して処理が成功したら記録削除、失敗してたら20分経過で無効情報で良いかと思ってます
処理が20分超えたらアウトというイケてない部分をどうしようかとも思ってます
だったらファイル管理でも良いかなと思ってますが

352 :デフォルトの名無しさん (ワッチョイ 57ad-7Qxr):2020/04/16(Thu) 19:13:42 ID:jOE4Vo+O0.net
DBに処理対象を一意な文字列にして、ユーザIDとIPアドレスをもってロックを確保しに行ってるな。
弾かれた側に「誰々がどこでロックしてるから諦めるか直談判しにいけ」ってメッセージにしてる。
ロックが外れる時間は2分にしてるけど、ロック掛けてる側が、30秒ごとに延長するように更新してる。
トランザクションは増えるけど、強制終了してロックが残ったのを外す方が手間。
20分待ってくれる方が少ないと思うぞ。
1000人ぐらいが同時に使ってるが、それほど負荷は無い。ジャーナルの残し方だけ気にした方がいいぐらいか。

353 :デフォルトの名無しさん :2020/04/16(木) 22:10:16.88 ID:phPWx1q30.net
>>351
タイムアウトを含めて失敗したら即リソースを解放すればいいだけでは?

あと排他制御が必要なリソースの状態を管理するテーブルと
そのリソースを誰が使ってるかみたいな情報を管理するテーブルは別にしたほうがいいよ

354 :337 (ワッチョイ 1701-wIxw):2020/04/17(金) 07:33:58 ID:sST11acE0.net
>>353
処理失敗とかイベント取れる所なら良いのですがパソコンがネットワークからいきなり外れた時とかどうしようかなと

355 :デフォルトの名無しさん :2020/04/17(金) 15:28:13.52 ID:xgpGiYXu0.net
>>354
共有フォルダに実行ファイルを置くやり方だから
クライアント側でしかタイムアウト検知できないって話なのか

そうすると>>352が書いてるような方式になるけど
サーバー側で実行するやり方なら必要のない複雑性を抱える事になるから
テストや運用時の手間を考えるとアーキテクチャ見直したほうが早い気がする

356 :デフォルトの名無しさん (ワッチョイ d777-Ho7r):2020/04/17(金) 23:54:48 ID:66fHRI6x0.net
chartのX軸のスクロールバーを動かしたときのイベントハンドラ的なものってありますか?
具体的には、縦軸(Y軸)の範囲を表示されている範囲内の最大値と最小値に逐次変更したいです。

357 :デフォルトの名無しさん (ワッチョイ d777-Ho7r):2020/04/18(土) 15:39:00 ID:9PsozTHm0.net
これで解決しそうです。
https://stackoverflow.com/questions/5363209/chart-control-y-axis-auto-scale-on-scrolling

358 :デフォルトの名無しさん (アウアウウー Sa1b-7wDT):2020/04/18(土) 23:09:11 ID:fgVpQ9I4a.net
>>331
この問題どなたか教えていただけないでしょうか?
とくにレ点じゃないチェックボックスを作成したいです

359 :デフォルトの名無しさん (ワッチョイ 57ad-DoiI):2020/04/18(土) 23:47:30 ID:Fpx5gr7r0.net
>>358
cssで装飾したら?

360 :デフォルトの名無しさん (ワッチョイ 9f8a-ycCE):2020/04/19(日) 17:56:07 ID:a5Bxo0wQ0.net
FormにWebboewserコントロールを張り付けて ↓のコードコピペしたのですがThis がFrom1を参照しているのでエラーになります。
正しく使うのはうすればいいのでしょうか?


https://todosoft.net/blog/?p=380

361 :デフォルトの名無しさん (ワッチョイ 5701-lL3q):2020/04/19(日) 18:02:11 ID:jRRmPQvY0.net
今時、IE7ベース?
cefsharp使ったら?

362 :デフォルトの名無しさん (ワッチョイ 9f8a-ycCE):2020/04/19(日) 18:32:01 ID:a5Bxo0wQ0.net
今時WebBrowserコントロールは古いんですね
とりあえず、これは勉強の為のなので、WebBrowserで大丈夫です。
上記コードの this を webBrowser1 に置換すれば問題なく動きますが、thisのまま使う場合はどのようなコードになるのでしょうか?

363 :デフォルトの名無しさん (アウアウウー Sa1b-V/21):2020/04/19(日) 19:46:35 ID:E7TwXw1va.net
ちょっと何言ってるのか

364 :デフォルトの名無しさん :2020/04/19(日) 19:56:24.71 ID:3Oe7CVmea.net
>>362
リンク先のソースのメソッドは、おそらくはFormではなくWebBrowserを継承したコントロールに書くメソッド
WinForms標準のコントロール自体に機能追加することで、あちこちのFormでWebBrowserを使うつどそういうソースを書かなくて済むようにしてる
初学者でカスタムコントロールの作りかたとか未学習なら「this を webBrowser1に置き換え」で回避してよいと思う

365 :デフォルトの名無しさん (ワッチョイ 9f8a-ycCE):2020/04/19(日) 21:42:29 ID:a5Bxo0wQ0.net
>>362
なるほど、このコードはカスタムコントロールを目的としているのですね。
納得しました。ありがとうございました。

366 :デフォルトの名無しさん (ワッチョイ 779b-+5sX):2020/04/21(火) 13:34:05 ID:3bJr7zNG0.net
Form1に以下のような構造体を作ったんです。

// ----------通知方法の構造体--------------------
public struct Nortification
{
  public bool OpenBrowser;
  public bool MessageboxShow;
  public bool ToolchipBaloonShow;
}

次にメンバ変数として以下を定義しました

  static Nortification _nort = new Nortification(); //構造体のインスタンス

で、プロパティを作ったんです

public static Nortification nort
{
   get
   {
     return _nort;
   }
   set
   {
     _nort = value;
   }
}

ところが、このプロパティをForm2で書き込もうとすると
  Form1.nort.OpenBrowser = true;

「変数ではないため Form1.nort の戻り値を変更出来ません」とエラーになります。

367 :デフォルトの名無しさん (ワッチョイ 779b-+5sX):2020/04/21(火) 13:38:13 ID:3bJr7zNG0.net
>>366の続き

しかし、以下のようにするとエラーは消えました。

   Nortification nt = new Nortification();
   nt = Form1.nort;
   nt.OpenBrowser = true;
   Form1.nort = nt;

いったん別のインスタンスを作ってそこに構造体ごとコピーし、
コピーのメンバなら値を設定出来ました。

最後に元のインスタンスへコピーし直します。

なぜ元の構造体のメンバに直接値を書き込めないのでしょうか?
そもそも構造体の使い方が間違っていますか?

368 :デフォルトの名無しさん (JP 0H8f-nkQT):2020/04/21(火) 13:51:21 ID:cdjEy/7BH.net
>>367
C#入門者が必ず嵌るポイント
c# 値型と参照型 とかでググれば腐るほど出てくる
構造体は特性をよく理解した上でパフォーマンス上のメリットがある場合のみ使うもの
今は忘れてクラスだけ使ってればいい

369 :デフォルトの名無しさん :2020/04/21(火) 15:53:17.78 ID:1MDMdwK80.net
このメモリ大容量時代に構造体プログラミングなんてすなや

370 :デフォルトの名無しさん :2020/04/21(火) 16:02:20.66 ID:LjsiMFkA0.net
必要なとこでは必要なんだよ

371 :デフォルトの名無しさん (オッペケ Sr8b-s6iC):2020/04/21(火) 16:39:28 ID:tax3JV1pr.net
でもまあここでは要らないわな

372 :デフォルトの名無しさん (ワッチョイ 9fad-7eNI):2020/04/21(火) 16:39:46 ID:LjsiMFkA0.net
そだね

373 :デフォルトの名無しさん :2020/04/21(火) 16:44:50.57 ID:3bJr7zNG0.net
おっしゃるとおりクラスに変更したところエラーは出なくなりました。

ググると以下のページのような記述がありました

https://smdn.jp/programming/netfx/valuetype_referencetype/#value_type_property
値型では代入時にコピーが作成されますが、値型のプロパティやインデクサから値を
取得しようとする場合も同様にコピーが作成されます。
値型のプロパティ・インデクサはインスタンスそのものではなくインスタンスのコピーを
返すことから、直接インスタンスを変更することができません。
そのため、次の例のように値型のプロパティを直接変更しようとするとコンパイルエラーとなります。
参照型では変更しようとするインスタンスを参照によって取得することができるため、
コンパイルエラーとはなりません。

>値型のプロパティはインスタンスそのものではなくインスタンスのコピーを返す

ということなのでやはり構造体の型をプロパティにするのは使い勝手が悪そうですね

いっそインスタンス作成時にpublicにしたほうがいいかもと思いました

374 :デフォルトの名無しさん (アウアウウー Sa1b-V/21):2020/04/21(火) 16:56:16 ID:K2Bh67Tta.net
>>373
コードを書く側の立場で考えると

>構造体の型をプロパティにするのは使い勝手が悪そう
これはむしろ逆の場合が多いと思うよ。
考えてもみてよ。
プロパティーの値が変更された時の処理をプログラマは普通プロパティーのセッターに書く。
ゲッター経由でプロパティーが実質的に変更されてしまう可能性があるとしたら?

375 :デフォルトの名無しさん (ワッチョイ bfda-ycCE):2020/04/21(火) 17:27:49 ID:2AP1dLJq0.net
もしかして: notification

376 :デフォルトの名無しさん (ワッチョイ ff2d-QsZ8):2020/04/21(火) 17:34:55 ID:Q9kb1Yoh0.net
値型で高速化の話が出てきたついでに教えて欲しいんだけどさあ
下のそれぞれの変数って、スタックとヒープどっちにメモリが確保されてるの?これであってる???

静的なint型の変数・・・・スタック
静的な構造体・・・・スタック
mainメソッド内に宣言されたint型の変数・・・・ヒープ
mainメソッド内に宣言された構造体・・・・ヒープ
インスタンス内で宣言されたint型変数・・・・ヒープ
インスタンス内で宣言された構造体・・・・ヒープ

377 :デフォルトの名無しさん (ワッチョイ 7feb-Ho7r):2020/04/21(火) 18:06:24 ID:3Z0ku97Y0.net
VisualStudioプロフェッショナル版以下使用時、
プログラムの概観を素早く把握したい時ってどうするのがベストなんでしょう?
ctrl + m → o ?

逆に把握してもらいたい時はDocFXとかに頼る形になるのかな

378 :デフォルトの名無しさん :2020/04/21(火) 18:43:14.63 ID:gorOElOo0.net
概要をさくっと把握する、にコード見ろになるの?
概要こそドキュメント、もしくはファイル先頭に概要コメントで詳細は各メソッドのコメントなりコード見ろじゃない?
docをコメントから自動生成するなら書いてある内容の粒度はコメントだろうがドキュメントだろうが変わらん
プログラマが見るならIDEで見れたほうがいい場合もあるしそうじゃないなたhtmlドキュメントみたいなのが良い場合もある

379 :デフォルトの名無しさん :2020/04/21(火) 18:50:11.10 ID:XAeWC18v0.net
>>366
なんでget,setしとるの?

380 :デフォルトの名無しさん :2020/04/21(火) 18:52:56.43 ID:cdjEy/7BH.net
>>376
ローカル変数以外は全部ヒープ
なおローカル変数もクロージャ等によりヒープになる場合がある

381 :デフォルトの名無しさん :2020/04/21(火) 18:57:38.36 ID:gorOElOo0.net
>>376
ついでにいうとそもそもint自体も構造体だよ

382 :デフォルトの名無しさん :2020/04/21(火) 19:18:17.27 ID:mEER3mJt0.net
>>381
mjd?

383 :デフォルトの名無しさん (ブーイモ MMcf-gAk0):2020/04/21(火) 19:36:44 ID:DjpYKR7GM.net
意識しすぎてstringクラスでまた勘違いする

384 :デフォルトの名無しさん (ワッチョイ b7cf-RulI):2020/04/21(火) 20:51:10 ID:E4gE2B8j0.net
>>379
get,setしないとフィールドにアクセスできないじゃん

385 :デフォルトの名無しさん (ワッチョイ ff2d-QsZ8):2020/04/21(火) 20:56:24 ID:Q9kb1Yoh0.net
>>380
全然わかってなかったぜ、ありがとう!

386 :デフォルトの名無しさん :2020/04/21(火) 21:28:08.07 ID:Vo0c0hBga.net
>>382
組み込みの値型
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/builtin-types/value-types#built-in-value-types

387 :デフォルトの名無しさん :2020/04/21(火) 21:44:15.58 ID:9fcQjJm80.net
>>373
structをref returnする方法もある

public ref Nortification nort{
get{ return ref _nort; }
}

388 :デフォルトの名無しさん :2020/04/21(火) 22:34:21.97 ID:gnqBqFRT0.net
>>380
ローカル関数ってパフォーマンス上悪手だったんだ
てっきりcall前の引数のpush等がなくなる分有利かと勘違いしていたわ・・・

389 :デフォルトの名無しさん :2020/04/21(火) 23:09:05.72 ID:XAeWC18v0.net
>>384
structだぞ

390 :デフォルトの名無しさん (ワッチョイ b2da-6+K6):2020/04/22(水) 02:26:50 ID:C83u6fr40.net
https://dotnet.microsoft.com/download/dotnet-framework/net48
のDeveloper Pack をインストールしました。

C#の言語バージョンは 8.0 になると思ったのですが、現在は 5 のようです。
--------------------------------------------------------------
C:\Windows\system32>csc
Microsoft (R) Visual C# Compiler version 4.8.3752.0
for C# 5
Copyright (C) Microsoft Corporation. All rights reserved.

This compiler is provided as part of the Microsoft (R) .NET Framework,
but only supports language versions up to C# 5,
which is no longer the latest version. For compilers that support newer versions of the C# programming language,
see http://go.microsoft.com/fwlink/?LinkID=533240
--------------------------------------------------------------

どうすれば、C# 8 を使用出来ますか?

391 :デフォルトの名無しさん :2020/04/22(水) 09:28:54.12 ID:lrNM/Ez+a.net
>>390
手で入れたことはないから確証はないけど、.NET Frameworkに含まれるC#コンパイラはRoslynになる前の旧世代のもので止まっているのだろう
普通、新しい.NETはVSのインストーラから入れるもので、そうすればRoslyn世代のコンパイラも勝手に入る
ちなみにC#8では.NET Coreのみに対応しており、.NET Frameworkは完全にサポート外になった

392 :デフォルトの名無しさん (ワッチョイ dc2c-y6ks):2020/04/22(水) 15:03:54 ID:Tc3u/Tz90.net
> ちなみにC#8では.NET Coreのみに対応しており、.NET Frameworkは完全にサポート外になった
そんなわけあるか
普通にコンパイルできるわ

393 :デフォルトの名無しさん (ワッチョイ 66ad-rGdA):2020/04/22(水) 15:23:15 ID:NZfVsFFq0.net
>>392
非対応の機能使ってなければコンパイルできるよね

394 :デフォルトの名無しさん (ワッチョイ 66ad-rGdA):2020/04/22(水) 15:23:51 ID:NZfVsFFq0.net
>>391
.NET Standardも2.1なら対応してるやろ

395 :デフォルトの名無しさん (ワッチョイ 953a-1Gce):2020/04/22(水) 15:25:45 ID:M4wrH+Xp0.net
C# 8.0 の新機能
https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-8

>C# 8.0 は .NET Core 3.x と .NET Standard 2.1 でサポートされています。

396 :デフォルトの名無しさん (ブーイモ MMfd-4A6c):2020/04/22(水) 20:18:39 ID:oGjFYrP4M.net
.NET Frameworkは.NET Standard2.1はサポート対象外なのか

非同期ストリームやインデクサやrange等は.NET Standard 2.1なので、C#8.0を.NET Framework 4.8に設定すると使用できなくなる

.NET Core 3.0やXamarin、Unity、Monoはすべて.NET Standard 2.1を実装する

397 :デフォルトの名無しさん (ワッチョイ 7349-xf6K):2020/04/23(Thu) 13:32:04 ID:UY53iXGX0.net
coreに行っとけってこった

398 :デフォルトの名無しさん :2020/04/23(木) 17:51:59.15 ID:YT2pRfjo0.net
Coreにさっさと移行すべきというのはその通りだが
C#8の文法に必要な大体のライブラリは.NET Framework用にバックポートされてNugetで公開されてる

399 :デフォルトの名無しさん :2020/04/23(木) 19:26:18.65 ID:iR4g/Ykka.net
言いたいことは判るがそれは論点ずらしだ

400 :デフォルトの名無しさん :2020/04/23(木) 19:57:39.98 ID:m302zc2R0.net
作成したアプリの.NETのバージョンが4.6.2で古い4.5がインストールされている環境でも動作させたいのだけど、何もしなくても動かせますかね?使ってるc#のコードは、4.5以降なら動作するんですが。
アプリケーション構成ファイルのsupportedRuntimeとか書き換えるとか何か必要ですか?

401 :デフォルトの名無しさん :2020/04/23(木) 20:04:56.27 ID:ngI9YQpk0.net
>>400
プロジェクトのプロパティでアプリケーションの対象フレームワークを4.5に変更してからリビルド

402 :デフォルトの名無しさん (ワッチョイ faad-PpL2):2020/04/23(Thu) 20:17:04 ID:m302zc2R0.net
>>401
ありがとうございます。
リビルド出来たらしたくないのですが。
インストールされている.NET毎にアプリリビルドが必要になるんですね。リビルドしないで配布する方法あればいいのですが。

403 :デフォルトの名無しさん (ワッチョイ 66ad-rGdA):2020/04/23(Thu) 20:26:13 ID:AGd9KY8X0.net
古いバージョンならリビルドしないと無理。逆は大丈夫だけど。

404 :デフォルトの名無しさん (ワッチョイ 66ad-rGdA):2020/04/23(Thu) 20:26:49 ID:AGd9KY8X0.net
ちなみになんでサポート切れのバージョン使ってんの?

405 :デフォルトの名無しさん :2020/04/23(木) 20:38:44.94 ID:YT2pRfjo0.net
そのアプリが面倒みる最低バージョンでビルドしとけばいいよ
もちろんそれより上のバージョンでちゃんと動くことを保証するものではないけど

406 :デフォルトの名無しさん :2020/04/23(木) 20:39:33.00 ID:m302zc2R0.net
>>403
ありがとうございます。
そーなんですね。では、4.5でビルドして配布することにします。

>>404
どーせなら、古い環境でも動く人用にもサポートしとこうと思いまして。

407 :デフォルトの名無しさん (ワッチョイ 66ad-rGdA):2020/04/23(Thu) 20:50:49 ID:AGd9KY8X0.net
>>406
Windows10は最初のバージョンから既に4.6がプレインストールされてたはずだけど…まだ7使ってんの?しかもサポート切れのままで?

408 :デフォルトの名無しさん (ワッチョイ dc2c-y6ks):2020/04/23(Thu) 21:12:57 ID:YT2pRfjo0.net
Windows 8.1さんを忘れるんじゃない

409 :デフォルトの名無しさん :2020/04/23(木) 21:18:36.78 ID:A1RPJ5qa0.net
>>384
答えろよ

410 :デフォルトの名無しさん :2020/04/23(木) 21:22:31.43 ID:AGd9KY8X0.net
>>408
ごめんわざと

411 :デフォルトの名無しさん :2020/04/23(木) 21:29:24.37 ID:tIS/wRWha.net
あれれ、たしか数年前の時点で
.NETFramework4.5.2以下のサポートは強制打ち切りになったはず・・・・
いまは最低4.6にしとけば全環境カバーできるものとばかり思ってたけど、俺なにか勘違いしてる?

412 :デフォルトの名無しさん :2020/04/23(木) 21:34:01.17 ID:AGd9KY8X0.net
>>411
4.5.2はまだサポートされてるっしょ

413 :デフォルトの名無しさん :2020/04/23(木) 21:39:29.55 ID:tIS/wRWha.net
ごめん自己レス
4.5.2「以下」じゃなくて4.5.2「未満」が2016年1月13日でサポート終了だった・・・間違えて覚えてたわ
https://www.atmarkit.co.jp/ait/articles/1503/04/news141.html

414 :デフォルトの名無しさん :2020/04/23(木) 23:58:26.72 ID:9prkr8SY0.net
7もまだESUってのがあるからあと3年弱は現役だぞ

415 :デフォルトの名無しさん :2020/04/24(金) 01:05:13.24 ID:agN2oJUo0.net
>>414
でも4.5はサポート切れ

416 :デフォルトの名無しさん (ワッチョイ d49b-Ue8b):2020/04/24(金) 11:08:50 ID:VS+6OBXT0.net
メソッド内でnewしたインスタンスはメソッド抜けたら破棄されるから
disposeしたりnull代入したりする必要はありません!

っていうネット記事を見たんですが本当ですか?
メソッド抜けたら破棄されるのは値型の変数だけで
インスタンスが消費するメモリは解放されないと思っていました

417 :デフォルトの名無しさん :2020/04/24(金) 11:12:48.04 ID:0XMd7UjD0.net
GCが気が向いたときに掃除してくれるんじゃなかったっけ?

418 :デフォルトの名無しさん :2020/04/24(金) 11:22:24.63 ID:jeeSLMOH0.net
Disposeやnull代入してもそのクラス自体のメモリは解放されない
C#においてはそこはガベコレの担当であって基本プログラマはコントロールできないので少なくともnull代入は完全に不要
Marshal.AllocHGlobalのような明示的に解放しなきゃいけないアンマネージドリソースを使ってる場合にはIDisposable.Disposeが必要になる訳だけど、
ただそれも明示的にDispose()を呼ばずとも一応GCによる破棄タイミングで自動的にDispose()が呼ばれるので絶対呼ばなきゃいけない訳ではない(なんかの理由でDisposeに関しては明示的に呼んだ方が良かったはずだけど)

419 :デフォルトの名無しさん (ワッチョイ 66ad-rGdA):2020/04/24(金) 11:41:15 ID:agN2oJUo0.net
>>418
Disposeで破棄せずに(保険用の)ファイナライザーに任せると、実際に破棄されるタイミングがgen0→gen1みたいに後回しになっていって高コストになるからね

420 :デフォルトの名無しさん (アウアウウー Sab5-BpYI):2020/04/24(金) 12:08:50 ID:hmKdXDZUa.net
>>416
ネット記事じゃなくてちょっと前のここのレスじゃないのそれw

421 :デフォルトの名無しさん (アウアウエー Sa6a-0GGu):2020/04/24(金) 12:14:59 ID:FFBNt2WCa.net
>>416
スコープ抜けてからでも使用される戻り値とかはそうだね
スコープ内で完結してたら?

422 :デフォルトの名無しさん (ワッチョイ d49b-Ue8b):2020/04/24(金) 12:25:56 ID:VS+6OBXT0.net
>>420
この記事だったかも

https://qiita.com/7of9/items/ed4aa75852ae92c9cc58#comment-3cd34c69333eaf1c2d1e
nullを入れるのはやめましょう。
そんなことしなくてもローカル変数なら最後に登場した箇所以降はスコープ抜けたのと同じ扱いに最適化されます。

入門書にはnullを入れるよう書いてあるのもあるのですが・・・
https://i.imgur.com/VMOSHDY.gif

423 :デフォルトの名無しさん :2020/04/24(金) 13:00:24.56 ID:hmKdXDZUa.net
>>422
null代入は無意味は(ほとんどの場合)本当
それ言ってるのたぶんVB上がりの人
メモリーの管理はシステム任せでOK

Dispose無意味は(ほとんどの場合)間違い。
IDisposableをわざわざ実装しているのは、不要になったら可及的速やかにDisposeして欲しいから。
コンピュータのリソースにはシリアルポートみたいに数個しか存在しなかったり、拡張スロットやUSBにぶら下がってる
ハードウェアみたいに排他的にしか使用できないものがある。

そういうのは使い終わったらとっとと解放してやらないと他で使えないことになる。
IDisposableはそういう使い方を想定している

424 :デフォルトの名無しさん :2020/04/24(金) 13:11:21.82 ID:agN2oJUo0.net
>>422
何その画像…デタラメやん

425 :デフォルトの名無しさん :2020/04/24(金) 13:15:41.83 ID:5EQwPUhVa.net
間違ってはいないだろ
nullを代入しておけば、メソッドを抜ける前にGCが走った場合に早期に解放されるかもしれない
ほとんどのメソッドは一瞬で抜けるため無意味だが、極一部の長時間抜けないメソッドではnull代入は必ずしも無意味ではない

426 :デフォルトの名無しさん :2020/04/24(金) 13:22:18.77 ID:rjwoLxqDH.net
null代入して直後にGC.Collect呼ぶのはやったことある
古い.NETのバージョンだと、画像処理とかで巨大なオブジェクトを何度も確保しようとするとメモリ不足で落ちるケースがあった

427 :デフォルトの名無しさん (ワッチョイ 66ad-rGdA):2020/04/24(金) 13:47:27 ID:agN2oJUo0.net
「インスタンスを解放するためには、b=null; とする必要があります」ってのは明らかに間違いやろ

428 :デフォルトの名無しさん (ワッチョイ c252-Z+/y):2020/04/24(金) 13:49:36 ID:DJ6Oa20x0.net
>>422
参考のためにその本のタイトルと著者を教えてもらえるかな?

429 :デフォルトの名無しさん (ワッチョイ f2da-QpYc):2020/04/24(金) 14:38:19 ID:+jmL6Bae0.net
bがこの後どのような使われ方するのか分からんことには何とも言えん

430 :デフォルトの名無しさん (ワッチョイ c252-Z+/y):2020/04/24(金) 14:56:29 ID:DJ6Oa20x0.net
この本はその1ページで説明が完結していて、そこでnullを代入しないとメモリリークが発生すると誤解されるような記述の仕方をするのは、入門書としてNGだろう。

431 :デフォルトの名無しさん (ワッチョイ 0e33-lMNq):2020/04/24(金) 15:17:25 ID:ANXSn9cW0.net
>>428
右端の「4日目 オブジェクト指向(1)」という柱でググると、インプレスの『1週間でC#の基礎が学べる本』がHitするな
あってるかどうかは知らん

432 :デフォルトの名無しさん (アウアウウー Sab5-BpYI):2020/04/24(金) 15:49:58 ID:hmKdXDZUa.net
10年ぐらい前、本屋で結構挑発的なタイトルのCの入門書を見つけたので
立ち読みしてみたら前書きでnullと\0を混同してる記述を見つけてひっくり返ったことがあるw

学校の教科書じゃないんで本に書いてあるからって鵜呑みにしない方がいいねこの分野は。

433 :デフォルトの名無しさん (アウアウエー Sa6a-0GGu):2020/04/24(金) 16:15:17 ID:3fWjsT92a.net
>>427
b=null; にしておけばいつの間にかインスタンスが解放されるかも知れません

くらいですね

434 :デフォルトの名無しさん :2020/04/24(金) 16:28:15.46 ID:qTnWiq4N0.net
>>425
その認識が間違いだよ
GC目的でローカル変数にnull入れるのは無意味
https://devblogs.microsoft.com/oldnewthing/20100810-00/?p=13193

ローカル変数じゃなければ意味がある場合もあるが入門書で書く内容ではない

435 :デフォルトの名無しさん (ワッチョイ 66ad-rGdA):2020/04/24(金) 16:41:13 ID:agN2oJUo0.net
>>433
別にそうする必要はないから誤解を招くような記載は不要

436 :◆QZaw55cn4c (ワッチョイ 6eaa-3Lep):2020/04/24(金) 17:05:36 ID:+Mxb0Kwr0.net
>>418
たとえ null 代入がガペコレの契機にならなくとも、ヒューマン側では意図を明確に記述している点で、null 代入は推奨できる記述方法なのでは?

437 :デフォルトの名無しさん (ワッチョイ c001-Wew5):2020/04/24(金) 17:08:09 ID:WBygUvPh0.net
sync;sync;sync; みたいな物か

438 :デフォルトの名無しさん (JP 0H34-GHE+):2020/04/24(金) 17:08:16 ID:gOoAV1SLH.net
>>436
こいつは馬鹿なんじゃないかと読む者に疑いを持たせる契機にはなるね

439 :デフォルトの名無しさん (ワッチョイ 66ad-rGdA):2020/04/24(金) 17:11:27 ID:agN2oJUo0.net
>>436
なぜC#なのにnullを代入する必要があるのかどうか悩むことになる時点でout

440 :デフォルトの名無しさん (ラクッペペ MM34-3YDc):2020/04/24(金) 17:13:01 ID:pn4zFTupM.net
意図が明確なのと無駄な意図の表明を混同するな
シンタックスシュガー嫌いおじさんと同じ言動だと気づけ

441 :デフォルトの名無しさん (ワッチョイ ac63-aCTA):2020/04/24(金) 17:13:39 ID:Ln0giejY0.net
人間側に意図を伝えたいならコードじゃなくてコメント書けよ
不要なコードを記述することが推奨なんかされるわけがない

442 :デフォルトの名無しさん :2020/04/24(金) 17:17:33.89 ID:CQLUkzVV0.net
>>436
ごめんガペコレって何?
ガベコレならわかるけど

443 :デフォルトの名無しさん (ブーイモ MMfd-Pmq7):2020/04/24(金) 17:37:41 ID:+0niyonSM.net
>>441
コメントで書かれても。。。

444 :デフォルトの名無しさん (ワッチョイ 0a2f-Hty+):2020/04/24(金) 18:39:20 ID:4FfGWszI0.net
>>418
>明示的にDispose()を呼ばずとも一応GCによる破棄タイミングで自動的にDispose()が呼ばれる
かどうかは実装によったはず

>>422,427
その画像のページ見る限り、参照が残ってたらガベコレの対象にならないって説明をしたかったんだろうな

445 :デフォルトの名無しさん (ワッチョイ 245f-i0du):2020/04/24(金) 18:40:18 ID:0yikN2xQ0.net
今Xmlのデシリアライズの質問に答えてくれる方いますか?

446 :デフォルトの名無しさん (ワッチョイ 41a7-pY0b):2020/04/24(金) 18:56:15 ID:qZ8JT++I0.net
ダメだ

447 :デフォルトの名無しさん :2020/04/24(金) 20:50:16.80 ID:h9xiDvvfa.net
例えばCの場合ポインタをfreeした後に再利用予定無いならそのポインタにNULL代入する意味は無いが
NULL代入する習慣があるようだけどC#のnullもそんな感じで代入してるんですか?

448 :デフォルトの名無しさん :2020/04/24(金) 20:53:13.33 ID:agN2oJUo0.net
>>447
普通はnull代入なんてしない。ランタイムが勝手にやってくれる。

449 :デフォルトの名無しさん :2020/04/24(金) 20:53:48.09 ID:agN2oJUo0.net
ランタイムが勝手にメモリ解放してくれる、ね。

450 :今度はビルドとはとか言い出すんだろうか? :2020/04/24(金) 21:04:37.09 ID:5Yl2wSMPM.net
>>447
NULL代入はバグとかで多重開放した時に管理エリアが壊れるのを防ぐため
あまりいい習慣とは思えないけどな

>>448-449
お前は何を言ってるんだよ

451 :デフォルトの名無しさん (アウアウウー Sab5-BpYI):2020/04/24(金) 21:09:13 ID:hmKdXDZUa.net
>>447
上にも書いたけど、nullを入れるのは恐らくVB上がりの人
VB6はそういう文化だった

あるいはDelphi?
こっちは触ったことないからよく知らないけど

452 :デフォルトの名無しさん (ワッチョイ 66ad-rGdA):2020/04/24(金) 21:11:07 ID:agN2oJUo0.net
>>450
なにかおかしいかい?

453 :今度はビルドとはとか言い出すんだろうか? (ドコグロ MM2e-f1XF):2020/04/24(金) 21:15:06 ID:WpI80Xm2M.net
>>451
> 上にも書いたけど、nullを入れるのは恐らくVB上がりの人
違う
VBとCだと目的が違う

>>452
ランタイムが何を指してるのかわからんがCには勝手にヒープメモリーを解放する機能なんてない

454 :デフォルトの名無しさん (アウアウウー Sab5-BpYI):2020/04/24(金) 21:18:29 ID:hmKdXDZUa.net
>>453
だからCの話はしてないのよw
メモリを解放する意図でnullを代入してるC#のコードを見たけどこれ意味あるの?
って話をしてるんでしょw

455 :今度はビルドとはとか言い出すんだろうか? (ドコグロ MM02-f1XF):2020/04/24(金) 21:22:09 ID:/oHWXBMTM.net
>>454
ああ>>447の後半の話か
そりゃすまんな

456 :デフォルトの名無しさん (ワッチョイ 66ad-rGdA):2020/04/24(金) 21:24:56 ID:agN2oJUo0.net
>>453
日本語が通じていなかったようだ

457 :今度はビルドとはとか言い出すんだろうか? (ドコグロ MM40-f1XF):2020/04/24(金) 21:56:18 ID:ttgIjm5mM.net
>>456
はいはいw

458 :デフォルトの名無しさん :2020/04/24(金) 22:52:02.97 ID:xndEmFws0.net
VB6のガベージコレクタがうんこだった頃のトラウマのせい?

459 :デフォルトの名無しさん (ワッチョイ 41a7-pY0b):2020/04/24(金) 23:03:19 ID:qZ8JT++I0.net
グローバルインスタンスホルダーを使ってるときの明示的な参照無効化だろ
ローカルじゃ意味ない

460 :デフォルトの名無しさん :2020/04/24(金) 23:32:16.92 ID:sopKw+cH0.net
初心者は黙ってnull代入しておけ
意味がないとか決めつけるのは10年早い

461 :デフォルトの名無しさん :2020/04/24(金) 23:35:58.32 ID:agN2oJUo0.net
>>460
初心者こそnull代入なんてすべきじゃない。非常に限られた特別な場合だけ。

462 :デフォルトの名無しさん (ワッチョイ 15cf-1Gce):2020/04/24(金) 23:41:17 ID:FbIpmtWO0.net
>>409
何が?

463 :デフォルトの名無しさん :2020/04/25(土) 00:06:19.49 ID:XJisoOEM0.net
>>451
Delphiはfreeする

464 :デフォルトの名無しさん :2020/04/25(土) 00:53:28.01 ID:un7mPScC0.net
ローカル変数は自動で解放されるんだからnull代入する意味がわからん

465 :デフォルトの名無しさん (ワッチョイ 74da-uMKU):2020/04/25(土) 01:03:57 ID:EchrqtYB0.net
インスタンスへの参照が残ってればGC対象にならない
と言う説明の為に適当にローカル変数を使っただけだと思う

でも読者はローカル変数にnullを入れる事が正しいと思うだろうな

466 :デフォルトの名無しさん (ワッチョイ 5c63-QpYc):2020/04/25(土) 04:46:37 ID:5x5kZrrV0.net
質問です
Process.Start メソッドの処理が何故か急にやたら時間がかかるようになってしまいました。
いろいろ条件を変えて調べてみましたが、
実行ファイル(拡張子がexeのもの)を明示的に指定するとすぐ開けるようです。

開きたいファイルに関連付けされた実行ファイルを取得することで解決しそうですが
あまりにイケてないのでもっと良い解決方法を探しています。どなたかご存じないでしょうか。

467 :デフォルトの名無しさん (アウアウエー Sa6a-0GGu):2020/04/25(土) 11:25:01 ID:4nLfPOGMa.net
>>464
無限ループの中とか?
そもそもそういう設計ガーって話になるが

468 :デフォルトの名無しさん (ワッチョイ f64f-1Gce):2020/04/25(土) 11:36:45 ID:CZd/Jkgq0.net
「もう使わない」という意思をコードに込めているような気もする

469 :◆QZaw55cn4c (ワッチョイ 6eaa-3Lep):2020/04/25(土) 14:58:43 ID:oe63LKnP0.net
>>468
私もこの説を推します

470 :デフォルトの名無しさん (ワッチョイ ac63-aCTA):2020/04/25(土) 17:31:25 ID:ls8kshvF0.net
わざわざそんな意志を示さなきゃいけないようなコードはどこかおかしいとなぜ思わないのか?

471 :デフォルトの名無しさん (ワッチョイ 66ad-rGdA):2020/04/25(土) 17:57:58 ID:duoUHH2X0.net
>>468
紛らわしいだけなのでNG

472 :デフォルトの名無しさん (ワッチョイ 0c01-UN6T):2020/04/25(土) 18:07:47 ID:qFkcGRPu0.net
イメージとしてはこんなコードを書いてるってこと?

static void Main(string[] args)
{
var s1 = "Hello ";
var s2 = "World ";
var s3 = "of Null Assignments!!";
s1 += s2;
s2 = null;
ConcatPrint(s1, s3);
s1 = null;
s3 = null;
}

static void ConcatPrint(string s1, string s2)
{
var s = s1 + s2;
Console.WriteLine(s);
s = null;
}

473 :デフォルトの名無しさん :2020/04/25(土) 18:46:43.43 ID:Shh4d2200.net
s2がめちゃくちゃでかくて ConcatPrint がすごく時間がかかる処理ならs2を使わなくなった段階で null を代入するのは意味があるんじゃないか

474 :デフォルトの名無しさん :2020/04/25(土) 19:17:42.17 ID:duoUHH2X0.net
コンパイラでどう最適化されるのか考えてみ

475 :デフォルトの名無しさん :2020/04/25(土) 19:33:44.64 ID:8r0Ych+Ea.net
重い非同期メソッドを呼び出す前に不要になる巨大な配列aがあるとすれば、
非同期メソッドを呼び出す前にa = nullにする意味はひょっとしたらあるのかもと思うけど、
>>474の言うとおりそういう猿仕事は本来コンパイラにやって欲しいよね

まあ、そろそろいいのではこの話題。
エクセルのオートメーションとかやる時に鬱陶しいReleaseComObjectがあるけど、
VB6ではああいう感覚でNothingを変数にいちいち入れてたんだよね。

476 :デフォルトの名無しさん :2020/04/25(土) 20:35:52.62 ID:I4zKFD3L0.net
メソッド中のローカルみたいな単純に追跡できる変数なら実際回収されるからね
逆に明示的に生存して欲しい場合のためにGC.KeepAliveなんてのもある

477 :デフォルトの名無しさん :2020/04/25(土) 20:36:20.38 ID:45wIze2e0.net
超ブラック企業だったサイボウズが、全社員と「ザツダン」してわかった“見えない不満”の本質
https://headlines.yahoo.co.jp/hl?a=20191118-00010003-srnijugo-life
サイボウズの「100人100通りの人事制度」を実現する働き方改革とは?
https://news.mynavi.jp/article/20190902-887250/
『サイボウズ』は社員満足度の高い「働き方改革」をなぜ作れたのか
https://gendai.ismedia.jp/articles/-/67235
諸悪の根源はメールと電話 サイボウズ営業チームの“脱ブラック部署”のノウハウ
https://logmi.jp/business/articles/322356
kintone×感情認識で社員の“HP”を見える化 若手エンジニアが挑む働き方改革
https://logmi.jp/business/articles/322342
サイボウズが副業を真っ先に解禁した理由。社員や会社のメリットとは?
https://nikkan-spa.jp/1602111
毎日が「休日」か「休日明け」か「休日前」 水土日休みの週休3日ベンチャーが「理想の働き方」と話題に
https://nlab.itmedia.co.jp/nl/articles/1907/24/news039.html

478 :デフォルトの名無しさん (ワッチョイ 0c01-UN6T):2020/04/25(土) 20:48:23 ID:qFkcGRPu0.net
>>473
>>434に貼った記事を読むといいよ
どの段階で回収可能になるか詳しく書いてる

479 :デフォルトの名無しさん (ワッチョイ 15cf-Ue8b):2020/04/25(土) 20:51:29 ID:pYNu3Cma0.net
>>478
日本語でおk

480 :デフォルトの名無しさん :2020/04/25(土) 21:07:37.42 ID:qFkcGRPu0.net
>>479
Q: 下のコードでnewしたOtherClassがどのタイミングでGC可能になるか?

1. SomeMethod()のスコープを抜けた後
2. Frob()がreturnした後
3. それ以前

class SomeClass {
...
string SomeMethod(string s, bool reformulate)
{
OtherClass o = new OtherClass(s);
string result = Frob(o);
if (reformulate) Reformulate();
return result;
}
}

答えはこちら
https://devblogs.microsoft.com/oldnewthing/20100810-00/?p=13193

481 :デフォルトの名無しさん :2020/04/25(土) 21:10:01.07 ID:UeM9CFrC0.net
国会をクイズ会場にするな
初心者向けスレをクイズ会場にするな

482 :デフォルトの名無しさん (ワッチョイ 4a33-1Gce):2020/04/25(土) 22:06:04 ID:n8sMf2Gw0.net
横から失礼
こんな感じの特異なコードだと、解放対象とさせるためには破棄の段階でnullを入れる必要あり?
(hageをforの中で定義してしまえば1回目の処理後に解放対象とされるだろうけど)

Hoge hage; // hage定義
for(int n=0;n<10000;n++) {
 if(n==0) { /* hage初期化 */ }
 // 長い処理
 if(n==0) { /* hage使用 */ }
 // 長い処理
 if(n==0) { /* hage使用 */ }
 // 長い処理
 if(n==0) { /* hage破棄 */ }
 // 長い処理
}

483 :デフォルトの名無しさん (アウアウウー Sab5-BpYI):2020/04/25(土) 23:13:57 ID:jtuoTa4Ea.net
>>482
ちょっと何言ってるのか
>/* hage初期化 */
で毎回Hogeのインスタンスを作ってるならインスタンスが変数hageから参照されなくなった時点で
GC対象でしょう
nullいれて何の意味があるの?

484 :デフォルトの名無しさん (ワッチョイ b6d6-Op/G):2020/04/25(土) 23:18:32 ID:W2d10YjF0.net
>>483
初期化されるのはn=0の時だけ
見難いコードだ

485 :デフォルトの名無しさん :2020/04/25(土) 23:22:38.19 ID:tZZhc4pea.net
>>482
確実に解放対象とさせることを意図したソースにするなら「hage.Dispose();」とするべき、
もっと言えばusing(hage = new Hage()){・・・}にすべきだと思うんだけど、
なんでnullを入れるっていう発想になるの?
ソースを読む側に立ってよ、null代入でリソース解放させることを意図してるなんて初見で解釈できるわけないでしょ
それともHageがIDisposableでない?リソースをバカバカ消費するのにIDisposableになっていないとすれば
Hageクラスの設計が間違ってるんでそんなクラスはゴミだと思ってぜんぶ廃棄するのが正しい

using構文だってC#2.0の頃にはもう存在してたし、
VBみたいないちいちNothingを入れる文化なんて20世紀のやり方だし、
nullを代入することに意味があるとか言ってる奴らの脳みそには
メインメモリがいまだに数十MBしか詰まってないと思って無視していいと思う

486 :デフォルトの名無しさん :2020/04/25(土) 23:32:05.95 ID:CeBC06vz0.net
>>485
リソースの破棄とメモリの解放をごっちゃにされても困るんだが

487 :デフォルトの名無しさん (ワッチョイ 4a33-1Gce):2020/04/26(日) 00:28:54 ID:1XpAbCKg0.net
hage.Dispose()でhage自身が解放対象となりましたっけ?
分かりづらいので>>482 のクソコードを少し訂正して配列にしてみます

×Hoge hage; // hage定義
○double[] hage; // hage定義

× if(n==0) { /* hage初期化 */ }
○ if(n==0) { hage = new double[3840*2160]; /* hage初期化 */ }

488 :デフォルトの名無しさん :2020/04/26(日) 00:47:35.12 ID:v/oAUwR6a.net
>>484
あw

>>487
そもそも論としてループで毎回無駄な判定をするのは無駄だし可読性も悪い。
素直に初回だけ分けて書こうよ。

同じ処理を二度書くのは保守性の観点から一般的には悪手だけど、>>482よりマシでしょう。

489 :デフォルトの名無しさん (アウアウウー Sa30-R0M4):2020/04/26(日) 01:31:28 ID:6V39WOnVa.net
>>487
長ったらしい処理+クソデカい配列をいじくりまわす処理で地獄のようなクソコードになりそうだ
繰り返しになるけどリソース(メモリリソース含む)を莫大に消費する処理ならIDisposableとして実装されるべきだし
リソースの解放はDispose()に記述されるべき
>>482>>487のなら配列を扱う部分を別クラスに分けたほうがマシだろう、どうせn==0のとき以外は配列いじらないんだし
class HogeClass : IDisposable {
 double[] hage = new double[3840*2160];
 public HogeClass() {
  // 生成時に必要な処理
 }
 /// hage破棄時に呼び出し
 public void Dispose() {
  hage = null;
 }
 /// hage使用時に呼び出し
public void Method(・・・) {
  // その他配列をいじくりまわすために必要な処理各種
 }
}

490 :デフォルトの名無しさん :2020/04/26(日) 04:32:34.57 ID:Rz7+bFFLa.net
旧バージョンのC#をお守りする仕事から何とか逃れたい…

491 :デフォルトの名無しさん :2020/04/26(日) 05:07:29.90 ID:flVxc/260.net
C#フォームプログラムを0から覚えたくて猫でも分かるサイト見てたんですが
7、8章辺りから説明が雑になってきて分からなくなってしまいました。
もう少しわかりやすく順序立てて解説してるサイトはないでしょうか?

492 :デフォルトの名無しさん (ワッチョイ 9317-1Gce):2020/04/26(日) 10:18:15 ID:NUpBHqGl0.net
これを雑だと言うのなら他サイト見ても全部雑だと文句言いそう

493 :デフォルトの名無しさん (ワッチョイ 66ad-rGdA):2020/04/26(日) 10:29:18 ID:BFeJAfYX0.net
>>491
具体的には何がわからないの?

494 :デフォルトの名無しさん :2020/04/26(日) 10:54:27.48 ID:LGlXzGY70.net
>>489
disposeはインスタンスを破棄するメソッドじゃない

495 :デフォルトの名無しさん (ワッチョイ b2da-6+K6):2020/04/26(日) 11:33:08 ID:veb1rsQN0.net
猫はなんか見づらい、というか目がちかちかする。

496 :デフォルトの名無しさん:2020/04/26(日) 11:46:54.16 .net
あのサイト2000年頃からあったよな
作者は50代くらいか

497 :デフォルトの名無しさん (ワッチョイ 4a33-1Gce):2020/04/26(日) 13:34:47 ID:1XpAbCKg0.net
>>482,487です
質問の仕方が悪かったみたいです

参照を切るやり方やループの作りとかはどうでもよくて
/* hage破棄 */
の段階でhage=null;を入れた場合は、すぐに解放対象とさせることが出来るが
そのまま保持していた場合は、少なくともループ中では解放対象にはならない
というようなことが知りたかったのです

変な質問に付き合わせてすみませんでした

498 :デフォルトの名無しさん (ワッチョイ 66ad-rGdA):2020/04/26(日) 13:39:25 ID:BFeJAfYX0.net
>>497
null代入なんて初心者は考えなくていいよ

499 :デフォルトの名無しさん :2020/04/26(日) 13:55:39.53 ID:bgNhzTiH0.net
>>497
試せばわかるよ
https://dotnetfiddle.net/1cjY1F
(※最適化が必要なのでReleaseモードで)

500 :デフォルトの名無しさん (ワッチョイ 4a33-1Gce):2020/04/26(日) 14:58:49 ID:1XpAbCKg0.net
>>499
意図したとおりの動きが確認できました
別件で不安のあったところも、GCクラスで確認できそうです
ありがとうございました

501 :デフォルトの名無しさん :2020/04/26(日) 17:35:11.55 ID:QqkrbzyN0.net
C#使ったデータ保存で手軽にできる方法ってどういった方法でしょうか?
外部ライブラリ使ってもDB使っても構いません
やっぱりEntity Frameworkでしょうか? それともxsd作ってxmlシリアライズの方が良い?

502 :デフォルトの名無しさん :2020/04/26(日) 17:59:27.42 ID:MQj0O2FGM.net
>>501
json

503 :デフォルトの名無しさん (ワッチョイ e2ad-Op/G):2020/04/26(日) 18:28:11 ID:flVxc/260.net
>>493
Graphics g = e.Graphics;
graphicsプロパティで変数gを宣言してeのグラフィックプロパティを代入とか意味がわからないです
これをするとDrawなんちゃらって関数呼ぶときに文章が短くなるのは何となく分かるのですが
この著者のコンソール編でプロパティにプロパティを代入とか習わなかったから具体的にどういう状態になってんのか分かりません。
後は関数呼び出すときに仮引数に g.DrawLine(new Pen()とかやってますが仮引数でnew クラス型 とかやる手法はこの著者のページでは習ってないはずなのに
何の説明もなく使っていて理解できませんでした。
他にもたくさんありますが、ただただ真似して書けばいい感が強くて理屈で理解できませんでした

504 :デフォルトの名無しさん (アウアウウー Sab5-BpYI):2020/04/26(日) 18:37:36 ID:jo9Gp3qca.net
>>503
ここは質問スレだよw
愚痴は本人に直接伝えた方がいいと思うよ。ここで言ってもしょうがないでしょ。

一般論として、プログラミングの学習では分からないところでいちいち立ち止まってぐだぐだ考えるより
きっと後で何となくわかるようになるだろうと気軽に考えて先に進む方が効率がいいと思うよ。

505 :デフォルトの名無しさん (ワッチョイ b6d6-Op/G):2020/04/26(日) 18:48:31 ID:fQRF26+R0.net
>>503
C#はクラス名とプロパティ名が被ってても良いから、前半の左と右のGraphicsの意味は違う
Graphicsクラスの変数gを定義してeのGraphicsプロパティ(型はGraphicsクラス)を代入してる

後半は
Pen pen = new Pen();
g.DrawLine( pen );
を1行で書いてるだけ。

506 :デフォルトの名無しさん :2020/04/26(日) 18:55:17.00 ID:bZwoQ/xt0.net
そのレベルで不親切だって言うならwebで満足できるものは少なくとも日本語では存在しないんじゃないかな?
書籍でも怪しいと思うけど
プログラムなんてとりあえず真似して書いてその後で色んなところいじってみて動作見て覚えていくもんだと個人的には思ってる

507 :デフォルトの名無しさん (ワッチョイ e2ad-Op/G):2020/04/26(日) 19:01:21 ID:flVxc/260.net
>>505
なるほど。変数gの何のフィールドにプロパティを代入してるか分かりませんが
何となくわかった気がします。
仮引数でnew クラス型とするのは省略形として使えるのですね。
全然言及されてなかったので助かりました。ありがとうございます

508 :デフォルトの名無しさん (ワッチョイ ee90-HPZ2):2020/04/26(日) 19:18:30 ID:QqkrbzyN0.net
>>502
ありがとうございます
調べてみたいと思います

509 :デフォルトの名無しさん (ブーイモ MM5e-enkp):2020/04/26(日) 19:18:56 ID:VvmvgJTZM.net
>>502
それなに?13日の金曜日に出るやつ?

510 :デフォルトの名無しさん (アウアウウー Sab5-BpYI):2020/04/26(日) 19:19:43 ID:jo9Gp3qca.net
>>505の人は機能的に等価だと言ってるだけで省略形なんて言ってないし、そんな風に考えるのは間違ってるよw

511 :デフォルトの名無しさん (ワッチョイ 6cac-xf6K):2020/04/26(日) 20:19:36 ID:Qe5iBT5s0.net
サンプルを一行一行丁寧に解説してほしいってか。。
贅沢やのお

512 :デフォルトの名無しさん (ワッチョイ 9cb2-Hjmu):2020/04/26(日) 20:34:57 ID:PGzBFzsM0.net
まあでも気持ちはわかるわ。おれも初心者の頃はそんな所があった。後から理解は追いついてくるもんだけど、点と点が線になるには、点(小さな知識)を積み上げていくしかないからなあ

513 :デフォルトの名無しさん (ワッチョイ f24a-LoFo):2020/04/26(日) 20:39:40 ID:MuBSif2v0.net
paralell.forで並列処理しながら
同時にプログレスバーを更新したいんですが
どうやったらいいのか、というか可能なのでしょうか?

514 :デフォルトの名無しさん (ワッチョイ 382d-JoBq):2020/04/26(日) 20:47:48 ID:h+uhH0sS0.net
ついでに余計なことを教えて欲しいんだけどさ
こう言うローカル変数に代入しなおすのって、やると参照強度は変わるもんなのかな?

515 :デフォルトの名無しさん (ワッチョイ 66ad-rGdA):2020/04/26(日) 20:53:19 ID:BFeJAfYX0.net
>>514
プロパティへのアクセスがコストかかる時はやることもあるけどね

516 :デフォルトの名無しさん (ワッチョイ dc2c-y6ks):2020/04/26(日) 22:27:07 ID:N4kJSNdj0.net
>>513
どのタイミングで更新するのかわからんが
Progress<T>使えばいいんじゃないかな

517 :デフォルトの名無しさん (ワッチョイ e2ad-h7Ku):2020/04/26(日) 23:00:31 ID:VF6JOwzP0.net
>>513
Interlocked.Incrementで進捗進めて
BeginInvokeで表示更新でいけると思う

518 :デフォルトの名無しさん :2020/04/26(日) 23:54:19.94 ID:7OiNIhki0.net
全く同じ値なのに違う判定するのってどうしてるんですか?
例えば
public Class SampleClass
{
int x;
}
に対して
var sample=SampleClass(x:1);
var sample2=SampleClass(x:1);

sampleとsample2は値一緒じゃないですか?
でもEqualsだとfalseが出るのは何故?

519 :デフォルトの名無しさん (アウアウウー Sab5-BpYI):2020/04/27(月) 00:42:29 ID:ynzlI0MBa.net
>>518
GUI部品みたいにプロパティーやフィールドがいっぱいあるオブジェクトを想像してみ?
例えばLabel
何をもって等価だと判断するの?
Textが同じなら等価?
Textとサイズが同じなら等価?
TextとForeColorが同じなら等価?

そんなことシステムは忖度できないし、逆に勝手に忖度されても困る。
だからObject.Equalsは同一のインスタンスかどうかを検査するだけ。
xの値で等価かどうか判定したいならそのようにEqualsをoverrideしてください。

520 :デフォルトの名無しさん (ワッチョイ b6d6-Op/G):2020/04/27(月) 00:46:26 ID:7GOhLkTu0.net
>>518
規定では同一のインスタンスかを調べるだけ
値を比較したいなら、Equals()をオーバーライドして比較する部分を自分で実装

https://www.atmarkit.co.jp/ait/articles/1802/28/news028.html

521 :デフォルトの名無しさん (ワッチョイ 66ad-rGdA):2020/04/27(月) 01:09:44 ID:+pbqV8lG0.net
>>518
参照型と値型はそのへん違うから気をつけて

522 :デフォルトの名無しさん (ワッチョイ 953a-1Gce):2020/04/27(月) 08:32:01 ID:0MZh1QDY0.net
値型もEqualsをオーバーライドしなきゃダメだよ

523 :デフォルトの名無しさん :2020/04/27(月) 08:40:50.79 ID:+pbqV8lG0.net
>>522
別にだめなわけではない

524 :デフォルトの名無しさん (スフッ Sd94-cUrQ):2020/04/27(月) 09:01:14 ID:5CwAYVjud.net
ドットネットではequalsが値比較で、==が参照比較…というのが基本ではあるんだけど、値型に関してはoperatorをoverrideしてあるからほぼ値比較してくれるんだ

525 :デフォルトの名無しさん (ワッチョイ 4602-QpYc):2020/04/27(月) 14:19:07 ID:O/Rc+c/Z0.net
でもさ、俺のおちんちんと君のおちんちんは同じじゃないよね?
ペロペロしてもらう時に俺のおちんちんじゃなくて君のおちんちんだったら無意味だよ

526 :デフォルトの名無しさん :2020/04/27(月) 14:56:44.28 ID:adSG+GOZM.net
>>513
その通りにコードを書けばいいと思うよ

527 :デフォルトの名無しさん :2020/04/27(月) 18:30:42.73 ID:pzY5bj450.net
>>524
>ドットネットではequalsが値比較で、==が参照比較…というのが基本
ソースは?

528 :デフォルトの名無しさん (ワッチョイ f24a-LoFo):2020/04/27(月) 19:48:39 ID:sEi51MkM0.net
>>516 >>517
Progress<T>だとどうも上手くいかなかったので
Interlocked.Incrementを試してみます
ありがとうござました

529 :デフォルトの名無しさん :2020/04/27(月) 21:57:08.78 ID:5CwAYVjud.net
>>527
ここらへんかな
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/statements-expressions-operators/how-to-define-value-equality-for-a-type

530 :デフォルトの名無しさん :2020/04/27(月) 22:18:43.99 ID:VtI6ihiD0.net
structの時もそうだったがここは答える方が馬鹿ばっかなんだな

531 :デフォルトの名無しさん :2020/04/27(月) 22:19:58.04 ID:azrm73Nod.net
>>529
それのどこに?

532 :デフォルトの名無しさん (ワッチョイ ac63-aCTA):2020/04/27(月) 22:40:25 ID:ZyoVYLj90.net
言語仕様策定側のガイドラインがあるなら聞きたい、って話なのに言語利用側のガイドライン見せられても、そりゃ?ってなるよね

533 :デフォルトの名無しさん (ワッチョイ 082c-cUrQ):2020/04/28(火) 06:23:15 ID:sVyB4x530.net
どうせみんな死ぬんよ(´・ω・`)

534 :デフォルトの名無しさん :2020/04/28(火) 08:52:13.97 ID:zuokQMKDa.net
>>533
い粁

535 :デフォルトの名無しさん (スプッッ Sd9e-XvBq):2020/04/28(火) 10:33:47 ID:+VZERS3Cd.net
ZxingでPDFからバーコードを読み取りたいのだけど
PDFファイルをbinaryBitmapに変換できるフリーのライブラリってある?

536 :デフォルトの名無しさん (アウアウエー Sa6a-0GGu):2020/04/28(火) 10:35:50 ID:zAZN/f3sa.net
ある

537 :デフォルトの名無しさん (ワッチョイ 7cda-sqO3):2020/04/28(火) 10:40:48 ID:xYOP5bIU0.net
Windows.Data.Pdfで出来るか?

538 :デフォルトの名無しさん :2020/04/28(火) 18:35:42.95 ID:JNpMj+Oe0.net
"Aが1,3,5,6のどれかならtrue"
みたいな判定をswitch、Contains()使わずに実現する方法

539 :デフォルトの名無しさん (ワッチョイ 082c-cUrQ):2020/04/28(火) 18:43:43 ID:sVyB4x530.net
TrueForAll…

540 :デフォルトの名無しさん (アウアウウー Sa30-R0M4):2020/04/28(火) 19:28:54 ID:P/sctXtYa.net
取りうる値の範囲が整数で最大でも63なら
(((0b_110101_0 >> A) & 1) == 1) とか

541 :デフォルトの名無しさん (ワッチョイ 9317-1Gce):2020/04/28(火) 19:31:51 ID:tz02eWdG0.net
素直にContains使った方が良いんじゃね
Contains使えない理由でもあるの?

542 :デフォルトの名無しさん :2020/04/28(火) 20:23:59.00 ID:fttQZMFx0.net
学校の課題なんじゃね?

543 :デフォルトの名無しさん :2020/04/28(火) 20:45:53.08 ID:CB5xdhwI0.net
ifとorでやれよ

544 :デフォルトの名無しさん :2020/04/28(火) 21:00:55.21 ID:nnss28av0.net
array.Any(x => x.Equals(A))
Array.Exists()とか単純なfor loopとかいろいろやり方はあるよね

545 :デフォルトの名無しさん :2020/04/28(火) 21:20:15.28 ID:LE+4zw960.net
var result = value switch ❴
1 or 3 or 5 or 6 => true,
_ => false,
❵;
C#9だけど
あ、switch式も駄目ですか

546 :デフォルトの名無しさん :2020/04/28(火) 21:39:44.15 ID:ozSqZJZ1a.net
bool Hoge(int n)
{
  var table = new[] { false, true, false, true, false, true, true };
  try
  {
    return table[n];
  }
  catch { }
  return false;
}

クイズとしてはチャレンジングな部類じゃないねw

547 :デフォルトの名無しさん :2020/04/28(火) 21:46:29.35 ID:9hpTUu+W0.net
頭いいな
switchを使わないってとこから単純なif判定も使えない
Containsを使わないってことから{1,3,5,6}みたいなコレクション自体使えない
って意図で考えてたけどその解法は気づかなかった

548 :デフォルトの名無しさん :2020/04/28(火) 21:55:35.85 ID:LE+4zw960.net
表引きは昔から高速化目的でよく使われる
sin/cosなんかを演算で求めるんじゃなくて0〜90度まで全部コンパイル前に計算しておいてコードに埋め込んでおくとか
メモリ食うことになるしsin/cosみたいな例だと0.5度無理みたいなデメリットはあるけど状況によってはそういうのが有効だったりする

549 :デフォルトの名無しさん (ワッチョイ b2da-6+K6):2020/04/28(火) 23:34:39 ID:C/CcLAW60.net
個人的には >>544 の方法が手っ取り早く感じる。

public static bool Hoge(int A, int[] source)
{
return source.Any(s => s == A);
}

550 :デフォルトの名無しさん :2020/04/29(水) 00:46:32.86 ID:0T/hrPb30.net
普段ならそれだよ
でも人様に10年はええなんて言える人が出すお題に普通に答えても…ってことで少しひねった回答しただけ

551 :デフォルトの名無しさん (ワッチョイ c7da-ipCf):2020/04/29(水) 01:40:12 ID:7lEbqk+c0.net
.Net Core でCe

552 :デフォルトの名無しさん :2020/04/29(水) 01:47:19.07 ID:7lEbqk+c0.net
.Net Core で CefSharp 使いたいのですが、nuget で参照追加しても、コンパイル時にエラーが発生します。
https://i.imgur.com/kGS4YK6.jpg

どうすれば動くのでしょうか?

553 :デフォルトの名無しさん :2020/04/29(水) 08:02:27.75 ID:kQQTqavqa.net
cef sharpとか初耳だわ
プレリリース版VSじゃないと対応してないとか?

554 :デフォルトの名無しさん :2020/04/29(水) 16:05:40.25 ID:DmNhs8y10.net
>>535-537
GhostscriptSharp で出来た
https://github.com/mephraim/ghostscriptsharp/blob/master/Tests/GhostscriptSharpTests/GhostscriptSharpTests.cs

555 :デフォルトの名無しさん (ワッチョイ df02-h83k):2020/04/29(水) 20:05:47 ID:u+omc4b+0.net
今後業務用のWEBアプリを作るときはMVCとRazorPagesとBlazorだと皆さんはどれを選択しますか?
クラサバシステムのWEB化の話があるので今後どういう勉強をしておくか迷っています
(MVCやJSの開発経験はあり)

556 :デフォルトの名無しさん (ワッチョイ e701-WK8b):2020/04/29(水) 20:10:06 ID:3WB/6cAD0.net
OWIN?

557 :デフォルトの名無しさん :2020/04/29(水) 20:34:00.93 ID:u+omc4b+0.net
>>556
恥ずかしながらOWINについて知らなかったので調べましたが
アプリが動く環境についてのことであれば
必要であればこちらで整えることができる状況です

558 :デフォルトの名無しさん (ワッチョイ e724-ts7H):2020/04/29(水) 23:33:34 ID:ZtFhb2uq0.net
ファイル圧縮解凍ライブラリについてなのですが、C#の場合はSharpCompressがベストなのでしょうか?
SevenZipSharpという7zipのラッパーもありこちらの方が良さそうかと思いきや、一見すると未完成なようにも見えますが

559 :デフォルトの名無しさん :2020/04/30(木) 00:13:20.54 ID:+bpYEB3E0.net
君の言うベストの要件は何?
System.IO.Compression.ZipFileで駄目なところは何?

560 :デフォルトの名無しさん :2020/04/30(木) 01:02:25.49 ID:I9f6mjLE0.net
>>558
要件次第だけど、7z他多数のフォーマットに対応したいなら

Frost Moon Projectさんの、7-zip32.dll/7-zip64.dll/7z.dll文字化け対策版
これの7z.dll版がlzhやrar等に対応してる + 統合アーカイバプロジェクト系で自分は使いやすかった

SevenZipSharpも確か最初試したけど、普通に使えた気がする

561 :552 (ワッチョイ c7da-ipCf):2020/04/30(Thu) 01:36:48 ID:cGNlLD3W0.net
https://github.com/cefsharp/CefSharp/issues/2796
の、kpreisser という人のやり方で出来ました。

562 :デフォルトの名無しさん (ワッチョイ a72c-XDUq):2020/04/30(Thu) 06:38:09 ID:y9JRI7g10.net
>>558
多分SharpCompressの方が機能は充実してる
SevenZipSharpはインメモリ内のマルチボリュームを解凍する術がないっぽかったから捨てた
まぁ一般的な使い方をする分には差はないんじゃないかな
大本の7z.dllは優秀だからパフォーマンスは後者の方が高いのかもしれないが

563 :デフォルトの名無しさん:2020/05/01(金) 10:47:14 .net
SQL Serverとの連繋アプリを作るための参考書探してるんだが
VBのしか見つからないな これ買うしか無いか

WEB情報もVBのしか無いことあるが普通にC#でも使えるTIPS多いし

564 :デフォルトの名無しさん (オッペケ Sr5b-fZS3):2020/05/01(金) 10:49:28 ID:KEKGQA87r.net
むしろVBのがまだあるのか

565 :デフォルトの名無しさん :2020/05/01(金) 11:09:25.56 ID:IDkheS130.net
>>563
ググれば一発だし、ほぼリファレンスはC#やろ

566 :デフォルトの名無しさん (アウアウエー Sa9f-ur4w):2020/05/01(金) 11:26:57 ID:k2YlXFh6a.net
ggrks

567 :デフォルトの名無しさん (ワッチョイ e701-1QTE):2020/05/02(土) 12:22:51 ID:QOp3K9V60.net
100%このマシンでしか使わないという自作アプリが何個もあり、そのうちの大半が利用しているJson.NetやLog4NetなどのライブラリをLocal Copy = falseにして一か所のdllを使いまわしたいのですが
GACにインストールする以外の方法はないのでしょうか?
LoadLibrary+GetProcAddressを利用すれば可能なんだと思いますがその場合はVSのサポートを得られないですよね

568 :デフォルトの名無しさん (スフッ Sdff-EwNI):2020/05/02(土) 12:35:32 ID:7zUXw5kNd.net
>>567
なんで地獄と呼ばれた状況に戻ろうとするの?
無駄っぽいとかそういう理由?

569 :デフォルトの名無しさん (アウアウウー Saab-Ng5p):2020/05/02(土) 13:09:17 ID:TijFnmRAa.net
>>567
今はコンテナでアプリにOSを丸ごとバンドルする時代ですよ

570 :デフォルトの名無しさん (ワッチョイ df02-h83k):2020/05/02(土) 13:10:08 ID:8Sc54whm0.net
チンポリックインコを使えばいいね

571 :デフォルトの名無しさん :2020/05/02(土) 13:54:50.75 ID:k5W2smL8a.net
>>567
こんなの見つけた
https://www.atmarkit.co.jp/fdotnet/technology/idnfw11_03/idnfw11_03_05.html
やったことないので詳細は知らんけど

572 :デフォルトの名無しさん (ワッチョイ 67a7-enXe):2020/05/02(土) 15:54:34 ID:02dRNXb60.net
>>567
それって触らなくていいプログラムも共通部を触ったら全部更新必須だからね
その時、アレがないコレがない
別のdllがもうダウンロードできない
フレームワークのSDKを再インストールだ→エラーが出て動かない
動かない動かない


っていう地獄絵図しか見えないんだけど
経験浅いの?

573 :デフォルトの名無しさん (ワッチョイ 67a7-enXe):2020/05/02(土) 15:58:09 ID:02dRNXb60.net
なんでもかんでも共通化したらいいってわけじゃないッスよ

関係ないモジュールは関係なくていいの

この自然体が理解できんうちはまだまだ

バナナが欲しかったのにゴリラと森まで付いてくるようなプログラム組んでんだろ?

574 :デフォルトの名無しさん (アウアウウー Saab-Ua06):2020/05/02(土) 16:20:59 ID:k5W2smL8a.net
まあ変なこだわりは捨てて素直にサイドバイサイドにしとけよ、とは率直に思うねw

575 :デフォルトの名無しさん (ワッチョイ 8763-68pm):2020/05/02(土) 16:21:26 ID:3EN4KMOZ0.net
Windowsが25~15年前に通って盛大に失敗したあやまちだけど
人はまたそのあやまちをくり返そうとしているのか…

576 :デフォルトの名無しさん (アウアウエー Sa9f-ur4w):2020/05/03(日) 10:58:08 ID:zajIy9nAa.net
C#を使うともれなくWindowsが付いてきます

577 :デフォルトの名無しさん (ワッチョイ 0778-ts7H):2020/05/03(日) 11:04:56 ID:m1rOQWOt0.net
Windows以外のOSでも動くからそれは間違ってる

578 :デフォルトの名無しさん (アウアウエー Sa9f-ur4w):2020/05/03(日) 11:47:56 ID:zajIy9nAa.net
Windows に WSL BOW 等があるように
C# にまるごと Windows が付いてくる訳じゃないのな?

579 :デフォルトの名無しさん (ワッチョイ dfad-3E9b):2020/05/03(日) 14:41:41 ID:O9QRGsEr0.net
>>576
何を言ってるんですか?

580 :デフォルトの名無しさん (ワッチョイ 075f-MN6J):2020/05/05(火) 03:04:26 ID:ODFnlIPd0.net
>>552
プロジェクト内のファイル書き換えればいける
https://github.com/cefsharp/CefSharp/issues/1714
もしくはプロジェクトの設定でAnyCPUじゃなくせばおk

581 :デフォルトの名無しさん (ワッチョイ 075f-LBUi):2020/05/05(火) 07:23:25 ID:AqRvYPWH0.net
【新型コロナ】富士フイルム、ゲイツ財団などからコロナ治療薬の製造受託
https://asahi.2ch.net/test/read.cgi/newsplus/1588319133/

c# プログラマ専用病院を作って、外から鍵かけて、理論的致死量の5倍ぐらい未承認治療薬を投与すれば開発速度が上がると思う。

コンピューターオタクに人権はないから、人権侵害にはならないし、c#プログラミングなんて 5ch とスタックオーバーフローを見れば誰でもできるから、プログラマ不足にもならない。

582 :デフォルトの名無しさん :2020/05/12(火) 00:36:35.47 ID:xM8JclQ70.net
ttps://qiita.com/satorimon/items/5d2e6db7fe938fee958c
C#でこのページを参考にしたコードを書いているのですが、
var squares = contours.Where(a =>
{・・・})
のところの記述の意味がよくわかりません
中で宣言やらreturnやらしていて何がなんだか・・・でもビルドすると正常に動いてます
Whereで調べてもこのような構文での使い方が出てこなくて困っています

583 :デフォルトの名無しさん :2020/05/12(火) 00:42:27.10 ID:oML3x0+6p.net
>>582
ただの無名関数にしか見えないが...

584 :デフォルトの名無しさん :2020/05/12(火) 00:43:24.46 ID:SOptQxct0.net
LINQというものです

585 :デフォルトの名無しさん :2020/05/12(火) 00:44:45.73 ID:Rm1nFE+i0.net
>>582
c# ラムダ式
で検索

586 :デフォルトの名無しさん :2020/05/12(火) 00:57:05.47 ID:rr7jvTFY0.net
Whereで調べても使い方出てくるよ
IEnumerable<string> query = fruits.Where(fruit => fruit.Length < 6);
https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.where?view=netcore-3.1

ただリファレンスにあるWhereメソッドのシグニチャを
初心者が理解できるようになるまでの道のりは結構長いな
public static IEnumerable<TSource> Where<TSource> (this IEnumerable<TSource> source, Func<TSource,bool> predicate);

587 :デフォルトの名無しさん :2020/05/12(火) 01:39:09.58 ID:zR/fg8GXa.net
親クラスを参照する方法はありますでしょうか。
Javaで書くなら以下のイメージとなります。
class A {
int val;

class B {
void Method() {
A.this.val; // ここで親クラスを参照したい
}
}
}

588 :デフォルトの名無しさん :2020/05/12(火) 01:41:52.90 ID:xM8JclQ70.net
>>582です
理解出来ましたありがとうございます!

589 :デフォルトの名無しさん (ワッチョイ 5b2c-1Non):2020/05/12(火) 01:47:51 ID:ApYFe+qM0.net
>>587
BはAとインスタンスは独立してるから
BのコンストラクタでAを受け取ってフィールドに置いておくとかする

590 :デフォルトの名無しさん (アウアウウー Sa1f-OGoq):2020/05/12(火) 01:54:35 ID:DaJUnBm/a.net
>>587
ここの記述の通り
https://ja.wikipedia.org/wiki/C_Sharp%E3%81%A8Java%E3%81%AE%E6%AF%94%E8%BC%83#%E5%86%85%E9%83%A8%E3%82%AF%E3%83%A9%E3%82%B9

591 :デフォルトの名無しさん :2020/05/12(火) 01:59:01.93 ID:zR/fg8GXa.net
>>589-590
ありがとうございます

592 :デフォルトの名無しさん :2020/05/12(火) 22:22:13.93 ID:/QEFAV670.net
参照型の変数ってないんですか?
int c = Properties.Settings.Default.Counter

みたいにエイリアスっぽく使いたいのですが、何かいい方法あるでしょか

593 :デフォルトの名無しさん (ワッチョイ be7b-nLaH):2020/05/12(火) 22:35:54 ID:Qqvr4tTg0.net
>>592
メソッドの返り値にする
private int counter() {return Properties.Settings.Default.Counter;}

594 :デフォルトの名無しさん :2020/05/12(火) 22:41:58.71 ID:ApYFe+qM0.net
エイリアスっていうからC++でいうところのT&型かと思ったけど違うのか?
C#で「参照型の変数」って普通のstring text;とかDataTable table;とかになるけど

595 :デフォルトの名無しさん (ワッチョイ 6a6a-oySJ):2020/05/12(火) 23:23:20 ID:qR+vLqM00.net
ref のことじゃね?
ref var x = ref Xxxxx;

596 :デフォルトの名無しさん (ワッチョイ 532f-EoUu):2020/05/13(水) 00:03:03 ID:J5ZD6qBk0.net
int? のことじゃね?

597 :デフォルトの名無しさん :2020/05/13(水) 00:12:10.85 ID:OFLzozUz0.net
ポインタで全て解決

598 :デフォルトの名無しさん :2020/05/13(水) 00:15:30.74 ID:7szTGv5D0.net
>>596
それはボケ?

599 :デフォルトの名無しさん :2020/05/13(水) 00:30:19.64 ID:NaKv0jEn0.net
何がしたいのかわからないけど
もし毎回フルで書くのがしんどいとかなら
>>593のやり方が一番安全だと思う

600 :デフォルトの名無しさん :2020/05/13(水) 00:36:24.06 ID:WBibu7Ic0.net
using Counter = Properties.Settings.Default.Counter;

601 :デフォルトの名無しさん (ワッチョイ 4da7-071a):2020/05/13(水) 01:04:23 ID:9AF39pvJ0.net
ポインタが欲しいんだろ

class valInt{
public int val;
}

class valStr{
public string val;
}

って作っとけば?
普段は全く必要ないのに
リフレクション使うとき滅茶苦茶必要になったわ

602 :デフォルトの名無しさん :2020/05/13(水) 01:11:53.36 ID:HB9dDlz00.net
質問失礼致します。

list1にはboolが3つ入っています。
list2はクラスが3つ入ったリストで、そのクラスにはpublic bool flagが宣言されています。

両方falseの番号が見つかるまで繰り返したいです。

public int Check(){

int x = list1.IndexOf(false);

while (list2[x].flag == true){

x = list1.IndexOf(false, x +1)


return x;
}

このコードを書いたのですが、
list2[x].flagが3つ全てtrueだった場合にx+1が範囲外になってエラーが出ていると思われます。

条件に合う物が見つからない時にも何か(-1とか)返せる様にすれば良いのかもしれませんが、どうすればいいのかまったくわかりません。。

どうかヒントだけでも教えて下さい、、
よろしくお願いします。

603 :デフォルトの名無しさん :2020/05/13(水) 01:17:14.99 ID:HB9dDlz00.net
書き込んだあとに気付いたのですが、もしかしてwhileの中のxはforと違って繰り返すたびに更新されないのでしょうか?

604 :デフォルトの名無しさん :2020/05/13(水) 01:32:42.10 ID:RZkyIb9Ia.net
>>602
何で素直にforでスキャンしないの?

コードを書く前に、まずそれを自分が手動で行う場合の手順を日本語で明確に表現しましょう。
次にそれをコードに変換する。

インデックスを0, 1, 2と増加させて、両方falseならその時のインデックスを返すんでしょ?
何でそれを素直にコードにしないの

605 :デフォルトの名無しさん :2020/05/13(水) 01:37:13.82 ID:HB9dDlz00.net
>>604
すみません、2日間上手く行ってなくて最初はforで試行錯誤してたんですけど何回も調べて書き直してってやってる間になにがなんだかわからなくなってしまいました。。

もう一度forでやってみます!

606 :デフォルトの名無しさん :2020/05/13(水) 08:02:36.01 ID:9jM9qfYw0.net
>>605
プログラミング自体初心者だと思うけど基本的にwhileは使わないほうが良いよ(ちょっとしたミスで無限ループに陥ってフリーズする等バグの温床になる)
あとlist2に入ってるクラスをboolフィールドもう一つ拡張してlist2だけで運用できない?
一応既存の場合ならこういうコードでいい

for (int i = 0; i < list2.Count; i++)  //list2を中心に回す
{
 if (i >= list1.Count) break;  //list1が範囲外になったらforを抜ける
 if (!list1[i] && !list2[i].flag) return i;  //両方falseならインデックスを返す
}
return -1; //全て探し終えてもfalse && falseが見つからなかったらここに到達してreturn -1

607 :デフォルトの名無しさん (アウアウウー Sa1d-/iGY):2020/05/13(水) 09:30:48 ID:RdUH2aEBa.net
> whileは使わない方が良いよ
それは同意しない
その程度でバグを起こすようなレベルなら何使おうがどうせまともに動くわけない
forをはじめとした、より抽象度の高い他の機能によって自然に代替できるケースにおいてはwhileより他を好むべきだとは思うが、
whileの方が自然なケースってのは存在する

608 :デフォルトの名無しさん (ワッチョイ d159-nTbr):2020/05/13(水) 09:31:40 ID:HB9dDlz00.net
>>606
おはようございます。
丁寧な回答ありがとうございます。
仰る通りプログラム自体初心者です。。
一応あの後、

int index = -1;

for(int i =0; i < list1.Count; i++){

if(list1[i] == false && list2[i].flag == false){

index = i;
return index;

}

return index;

}

という風にやってみました。
合っているかわかりませんが、、一応動作しています。
breakで抜ける方法なども想像すらしてなかったので大変勉強になりました。
教えて頂いたコードの方がが安全そうなので参考にして書き直してみます!

本当にありがとうございました!

609 :デフォルトの名無しさん :2020/05/13(水) 10:00:08.37 ID:HB9dDlz00.net
>>606
うまく動作してると思っていたのですが、list2の要素数が3未満の時にバグってました。。
丸々使わせて頂いたら正常に動作しました。
重ねてお礼申し上げます。。

610 :デフォルトの名無しさん (ワッチョイ 2b01-32x/):2020/05/13(水) 10:20:12 ID:tJ/HyvQb0.net
>>593
さんくす、メソッド使うとはちょと予想外でした、いろいろ応用できそう
>>594
さんくす、C++はいまいちわかってないんですが、こんな感じでしょか
int& c = Properties.Settings.Default.Counter

>>595
いけました、うまくうごきました?さんくすです
>>596
ごめんなさいよくわかりません
>>597
いまさらポインタ

611 :デフォルトの名無しさん (ワッチョイ 2b01-32x/):2020/05/13(水) 10:25:24 ID:tJ/HyvQb0.net
>>599
何度も使う長い変数をさくっと書きたいなあっと、置き換えでいいんですが、どんなのが標準なのかなと
>>600
さんくす、これいいですね
>>601
さんくす、ポインタっぽいことしたいんですが、ちょと中身が理解できませんでした

612 :デフォルトの名無しさん :2020/05/13(水) 11:51:27.79 ID:9AF39pvJ0.net
>>611
だから、クラスでラップするとかしないとポインタっぽいことできないんだってばこの言語

613 :デフォルトの名無しさん :2020/05/13(水) 12:42:25.67 ID:KNUhyNjza.net
別にエイリアスじゃなくて一時変数でいいじゃん
int hoge = Foo.HogeHageDebuBaka;

書き換えないならそもそもエイリアスである必要がないし、
書き換える必要がある場合もほとんどのケースは一時変数に対する変更を最後に一か所で
元のフィールドなりプロパティーに書き戻すだけで済むと思うんだけど違うのかな。

614 :デフォルトの名無しさん :2020/05/13(水) 12:46:03.36 ID:0MZWSb+/0.net
単にマクロ的に短く記述したいってことなら使用先のcsファイルの一番上にこれ書いとけばいい

using static c = Properties.Settings.Default.Counter;

615 :デフォルトの名無しさん (アウアウエー Sa93-ahgx):2020/05/13(水) 13:28:16 ID:w7cEJ83Ea.net
Console.Out にデータを書く A.exe (ソース A.cs がある) と
Console.In からデータを読み込む B.exe があるとき
A | B
で B.exe 側で A.exe が書いたデータを取り出せるところまでは確認しました
そこで A.exe の中から
ProcessStartInfo psi = new ProcessStartInfo(){
FileName="B.exe", Arguments="", RedirectStandardInput=true,
RedirectStandardOutput=false, RedirectStandardError=false,
UseShellExecute=false, CreateNoWindow=true, ErrorDialog=false};
Process p = Process.Start(psi);
Console.WriteLine("test");
// p.WaitForExit();
// p.Close();
とすると
>error: ファイルを格納しているボリュームが外部的に変更されたため、開かれているファイルが無効になりました。
というエラーが出てしまいます。
Console.WriteLine("test"); のところを p.StandardInput.WriteLine("test");
にすれば書き込めるらしいのですが出来れば A.cs の変更を極力したくないです
あと
Console.Out.WriteLine("test"); もダメでした
RedirectStandardInput=false, もだめでした
何か使い方間違ってますか?

616 :デフォルトの名無しさん (JP 0H13-2td9):2020/05/13(水) 13:30:17 ID:9ouyGW4jH.net
IT掲示板群 ttp://x0000.net/forum.aspx?id=15

学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など

simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0
連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
4Dエンジン
ttp://x0000.net/topic.aspx?id=3677-0
matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0
ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0
SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0

617 :デフォルトの名無しさん :2020/05/13(水) 13:49:55.90 ID:uqtilrQeM.net
>>615
var tmp = Console.Out;
try {
var p = Process.Start(psi);
Console.SetOut(p.StandardInput);
Console.WriteLine("hoge");
p.WaitForExit();
}
finally {
Console.SetOut(tmp);
}

618 :デフォルトの名無しさん (ワッチョイ 2b01-32x/):2020/05/13(水) 16:30:12 ID:tJ/HyvQb0.net
>>612
C++の上位互換で、わざわざ使わないだけで使おうと思えば使えるものだとおもってました、ポインタ
>>613
さんくすね、それだとFoo.HogeHageDebuBakaが変化したときにやばいかなと
>>614
さんくすね、プリプロセッサで置換みたいなので大丈夫だと思うけど、staticが入るとどう変わるんだろか

619 :デフォルトの名無しさん :2020/05/13(水) 16:42:19.79 ID:9jM9qfYw0.net
ポインタは使えるけどC++と違ってstaticなオブジェクトですらガベコレによってアドレス変わる可能性が常にあるから
長寿命なポインタというのは自前でガベコレ管轄外のアンマネージドメモリを確保しない限り成立しない

620 :デフォルトの名無しさん (ワッチョイ 5b84-57Gp):2020/05/13(水) 17:08:14 ID:D3xPcSfY0.net
>>602
whileのロジックが足りない

while((x != -1 && x < list1.Count) && list2[x].flag)

にするとlist1の要素超えなくて見つからないと「-1」が返ると思うよ

621 :デフォルトの名無しさん :2020/05/13(水) 17:24:13.51 ID:D3xPcSfY0.net
>>615
確認していないので適当だけど、ProcessStartInfoで自分の標準出力を相手に
リダイレクトする指示をしているのに、自分の標準出力に書き出すメソッドを
使っているので、リダイレクトじゃない状態で出力されて相手がリダイレクト元を
見失っているんじゃないかな
>>617が書いてくれたのは書き込む前に自分の標準出力をリダイレクトに
切り替えているので、簡単にやるならば「p.StandardInput.WriteLine」を使うのが
良いんじゃないかな
あ、どうしてもConsole.WriteLineじゃなきゃダメって言うならば>>617の方法に
なるだろうけど

622 :デフォルトの名無しさん :2020/05/13(水) 17:39:16.20 ID:VSt/R8YQ0.net
Ruby では普通に、print, puts メソッドで出力したら、
標準出力・$stdout に出力される

どこに出力するかなど、考えたこともない

623 :デフォルトの名無しさん (ワッチョイ 115f-hrec):2020/05/13(水) 17:51:43 ID:48KyBdoc0.net
>>622
相変わらずバカだね

624 :622 (ワッチョイ 7f2c-JcAG):2020/05/13(水) 18:25:56 ID:VSt/R8YQ0.net
標準出力以外を使う場合は、標準エラーに出力する時だけ。
標準出力なら、パイプ・ファイルへのリダイレクトも使える

a.rb | b.rb パイプ
a.rb > b.rb 上書き
a.rb >> b.rb 追記

625 :デフォルトの名無しさん (ワッチョイ 2b01-32x/):2020/05/13(水) 19:32:00 ID:tJ/HyvQb0.net
>>619
なるほどね、実質ポインタは使い物にならないね、何が出てくるかわからないとか

626 :デフォルトの名無しさん (ワッチョイ ff01-vB/y):2020/05/13(水) 20:56:37 ID:WBibu7Ic0.net
>>624
rubyやpythonならspawnやpopen使って生成した
子プロセスの標準入出力の話

627 :デフォルトの名無しさん :2020/05/13(水) 21:18:36.78 ID:9jM9qfYw0.net
>>625
ローカル値型変数ならその関数抜けるまではスタック上にあることが保証されるからその関数内限定でCと同じように扱える
バイト配列等参照型もfixed (byte* ptr = &bytes[0]) {}と囲っている間はガベコレにアドレス移動させない通知を出せばそのスコープ間では扱える
ポインタフィールドを持たせたいとかになるとさっき言ったようなアンマネージドメモリを利用するしかないのでC#では実質不可能になってくる

628 :デフォルトの名無しさん (ササクッテロレ Sp63-5XO3):2020/05/14(Thu) 02:19:30 ID:2LmxtE+Tp.net
C#に、lispでいうmapcar関数のようなものはありますか?

629 :デフォルトの名無しさん (ワッチョイ ff01-vB/y):2020/05/14(Thu) 03:11:58 ID:HxdbbI2M0.net
>>628
Enumerable.Select()

630 :デフォルトの名無しさん (オッペケ Sr93-5iCk):2020/05/14(Thu) 10:45:17 ID:n+ookAJTr.net
c#頑張ってきたのでc++ちょっとかじって浮気してきまっす!
挫折したら秒で戻ってきまっす!

631 :デフォルトの名無しさん :2020/05/14(木) 11:26:58.59 ID:ztWr1bjJ0.net
目的がかなり違う言語だから気をつけなされ

632 :622 (ワッチョイ 7f2c-JcAG):2020/05/14(Thu) 14:04:08 ID:FSEZeoAj0.net
>>626
Ruby では、`コマンド`、system(コマンド)などは同期処理だけど、
spawn は非同期だから、すぐに子プロセスのPID が返ってくる

だから、Process.waitpid で、子プロセスの終了を待ち合せる必要がある

p pid = spawn('uname') #=> 1142

Process.waitpid pid

出力
Linux

633 :デフォルトの名無しさん (アウアウウー Sa31-7tKh):2020/05/14(Thu) 14:53:15 ID:0DpJdKOEa.net
List<string>をfor文中で繰り返し初期化して使用したいのですが、
List<string> 変数 = new List<string>()
で出来ますか?
それともfor文の最後でclearしないといけませんか?
ネットにソースが見当たらないので質問しました。ソースもあるよという方はその内容も教えていただきたく。
お願いいたします。

634 :デフォルトの名無しさん :2020/05/14(木) 15:31:14.00 ID:0NVqPTt90.net
forの中でList<string> 変数 = new List<string>()とループ毎に確保しているのなら終わり際にClearは書かなくていい
文字通りnewだからね
ただパフォーマンス的にはforの前で作ったリストをループ中の最後にClear()して使いまわす方が若干効率は良くなる
一般的な用途であれば差にもならない差だから前者で良いけど

635 :デフォルトの名無しさん :2020/05/14(木) 16:08:02.92 ID:0DpJdKOEa.net
>>634
なるほど、ありがとうございます。

636 :デフォルトの名無しさん (ワッチョイ 5fb2-mth5):2020/05/14(Thu) 16:24:15 ID:oGs32I5W0.net
>>630
おかえり

637 :デフォルトの名無しさん (ワッチョイ 5fb2-mth5):2020/05/14(Thu) 16:24:31 ID:oGs32I5W0.net
>>632
さよなら

638 :デフォルトの名無しさん (ワッチョイ 5fb2-mth5):2020/05/14(Thu) 16:25:38 ID:oGs32I5W0.net
>>635
clearいれるだけ処理遅くなるぞ。不要や

639 :デフォルトの名無しさん (ワッチョイ 5fb2-mth5):2020/05/14(Thu) 16:26:53 ID:oGs32I5W0.net
>>635
C#にはGC機能があるから

640 :デフォルトの名無しさん (ワッチョイ 2b01-32x/):2020/05/14(Thu) 16:40:09 ID:IzazKMsN0.net
>>627
限定的ながらもポインタ使えるんだね、少し>>601がわかった希ガスサンクス

641 :デフォルトの名無しさん :2020/05/14(木) 16:56:49.51 ID:0DpJdKOEa.net
>>639
GC機能ってfor文だけでは機能しないと思っていたんですが、初期化時点で古いのは解放されると思っていいんでしょうか?

642 :デフォルトの名無しさん (ワッチョイ 9f9e-X6oS):2020/05/14(Thu) 17:09:46 ID:IJMYY1560.net
>>638
ここは初心者が回答してみるスレじゃないぞw

643 :デフォルトの名無しさん (ワッチョイ 5fb2-mth5):2020/05/14(Thu) 17:11:23 ID:oGs32I5W0.net
>>642
はあ?ループ中のリスト毎回clearするなんてアホなコードお前しか書かないだろw

644 :デフォルトの名無しさん :2020/05/14(木) 17:17:42.65 ID:PBygD1y70.net
それは言えてるな

645 :デフォルトの名無しさん (ワッチョイ 4124-gIXh):2020/05/14(Thu) 17:23:39 ID:0NVqPTt90.net
ListのClearは内部バッファの中身をデフォルトクリアしてCount = 0とするだけであってバッファのキャパ自体はそのまま
Clear後に利用する際にそのListインスタンスのキャパ以下の利用であれば内部でbuffer = new T[capacity]みたいな処理が走らないから効率化される可能性があるという話

一般的なプログラマであればこのようなことを考える意味は皆無なのでnewし直すが正解で良い

646 :デフォルトの名無しさん (ワッチョイ 9f9e-X6oS):2020/05/14(Thu) 17:30:23 ID:IJMYY1560.net
笑えるwww

今度からいちいちnewしてる馬鹿いたら、
あーこいつは初心者が回答してみるスレの住人だと分かっていいなw

647 :デフォルトの名無しさん (アウアウウー Sa31-7tKh):2020/05/14(Thu) 17:32:02 ID:0DpJdKOEa.net
>>645
承知しました。

648 :デフォルトの名無しさん :2020/05/14(木) 17:36:51.73 ID:5fNjH7LKM.net
>>646
恥ずかしい奴

649 :デフォルトの名無しさん :2020/05/14(木) 17:41:31.72 ID:IJMYY1560.net
>>648 ←ループの中でいちいちnewしてたnewtype発見w 初心者スレおもしれーwww

650 :デフォルトの名無しさん :2020/05/14(木) 17:45:22.91 ID:HxdbbI2M0.net
>>645
毎回newしたほうが効率がいいケースと
1つのListをClearして使い回したほうが効率がいいケースとそれぞれあるよね?

651 :デフォルトの名無しさん :2020/05/14(木) 17:49:33.37 ID:OtqKph2Y0.net
たまに勘違いしている人がいるみたいだが、このスレは「初心者用」のスレだから
質問者も回答者も「初心者」だよ
>>650
条件が詳しく書いてないんだから「場合によって使い分ける」
このスレでは「問題なく動けばいい」

652 :デフォルトの名無しさん (ワッチョイ eb36-5iCk):2020/05/14(Thu) 17:56:08 ID:PBygD1y70.net
まあ、newし直すのは意味はあるけど、
気になるのは同じ変数名を使い回してないかってことくらいやな
まあ、自分だけのコードなら好きにすればとしか

653 :デフォルトの名無しさん :2020/05/14(木) 17:59:19.41 ID:IJMYY1560.net
そういや初期のjavaの実装がそうだったなw 全部new。 糞おせーw
C#を実装したのがおまえらじゃなくてfastcall使いまくるヘジで助かったぜ。

654 :デフォルトの名無しさん :2020/05/14(木) 19:05:04.03 ID:oGs32I5W0.net
ID:IJMYY1560
今日の基地外

655 :デフォルトの名無しさん :2020/05/14(木) 19:06:50.12 ID:5fNjH7LKM.net
>>653
違うだろ?「勉強になりました。」と素直に謝ればOK

656 :デフォルトの名無しさん (ワッチョイ 9f9e-X6oS):2020/05/14(Thu) 20:07:00 ID:IJMYY1560.net
なんだもう自演煽りしかできないのか。情けない。

逐一newがいかに速いか知ったかして語ればいいのにw もっと初心者スレらしくアホを晒せw

657 :デフォルトの名無しさん (ブーイモ MM81-mth5):2020/05/14(Thu) 20:31:18 ID:5fNjH7LKM.net
>>656
違うだろ?「勉強になりました。」と素直に謝ればOK

658 :デフォルトの名無しさん :2020/05/14(木) 23:37:20.23 ID:oGs32I5W0.net
>>656
こーゆうレガシーな情報をアップデート出来ない老害コーダーがスコープとか意識出来ずにスパゲッティコード量産していくんだろうな。

659 :デフォルトの名無しさん :2020/05/14(木) 23:59:13.36 ID:IXDIM6PP0.net
List<string> 変数 = new List<string>();
for(;;){
 // 処理
 変数.Clear();
}

for(;;){
 List<string> 変数 = new List<string>();
 // 処理
}

これで言い争い?

660 :デフォルトの名無しさん (ワッチョイ cf61-gjhq):2020/05/15(金) 00:33:19 ID:mc9+JSH60.net
さうです。

661 :デフォルトの名無しさん (ワッチョイ 9f9e-X6oS):2020/05/15(金) 06:10:46 ID:QqRlTuRs0.net
言い争いなんか誰もしてません。ここは無知無双を観察するスレです。

clear()は遅いですw スパゲッティになるので逐一newしてますw java思想は正しいですw ヘジは老害コーダーですってwww

662 :デフォルトの名無しさん (ワッチョイ df6a-X4oJ):2020/05/15(金) 08:09:40 ID:mZ/V4tLT0.net
上でも書かれてるけどClearってcount=0にしてるだけだろ?

663 :デフォルトの名無しさん (アウアウウー Saaf-Wcp/):2020/05/15(金) 08:38:30 ID:4F5qAPuFa.net
怪しい時には実装にあたったほうがいいよ
https://referencesource.microsoft.com/#mscorlib/system/collections/generic/list.cs,ca7bce81a50b0aeb,references
count=0だけじゃなくて配列の個々の値も初期値に戻してる
まあそれでも_sizeがかなり大きくない限りは参照型のインスタンスを都度生成して生成してヒープに置くよりローコストだと思うけど

664 :デフォルトの名無しさん (ワッチョイ 4f63-4oRg):2020/05/15(金) 09:26:05 ID:EzimMGOi0.net
争いと表現するのもおこがましさを感じる低次元さ

665 :デフォルトの名無しさん (ワッチョイ 9f9e-X6oS):2020/05/15(金) 10:16:11 ID:QqRlTuRs0.net
若者の夢は壊しちゃダメですよ。プライドはとても高いんですから。

あっ、老害コーダヘジのおれが考える現代風コンパイラのデータ構造の再利用実装についての動画を置いときますねw
https://channel9.msdn.com/Blogs/Seth-Juarez/Anders-Hejlsberg-on-Modern-Compiler-Construction

666 :デフォルトの名無しさん (ワッチョイ 0b90-gsGE):2020/05/15(金) 10:43:10 ID:0cESgAsr0.net
議論でとりあえず有名人の名前出したり話すれば、有利になると思ってる単細胞な発想はやめよう

667 :デフォルトの名無しさん (ワッチョイ 3fac-5iCk):2020/05/15(金) 11:04:04 ID:SPdgeRtp0.net
そろそろ誰かが比較出してくれるんじゃね
それで決着だろ

668 :デフォルトの名無しさん (ドコグロ MM4b-cWUa):2020/05/15(金) 11:13:54 ID:/Y86RUc5M.net
>>659
俺なら上を採用する場合一回分無駄になるけどループの先頭(可能であれば使う直前)にClear()を呼ぶ

669 :デフォルトの名無しさん (ワッチョイ 459b-gIXh):2020/05/15(金) 13:18:50 ID:+lfXgI6Y0.net
名前、年齢、部署を表示するListViewで、マウスを当てるとポップアップ表示されるように
したく、以下のようにコーディングしました

ListViewItem lList = new ListViewItem(name);
List.ToolTipText = name //ツールチップの設定
ListViewItem.ListViewSubItem lvs = UrlList.SubItems.Add(age);
lvs.Tag = txtSearchWord.Text; //ツールチップの設定
ListViewItem.ListViewSubItem lvs = UrlList.SubItems.Add(section);
lvs.Tag = txtSearchWord.Text; //ツールチップの設定

一応これでポップアップするようになったのですが、位置がリストの表示位置と
離れすぎているのでもう少し「リストの文字に覆いかぶさるように」調節したいのですが
方法はありますでしょうか?

670 :デフォルトの名無しさん (ワッチョイ a72c-CX6h):2020/05/15(金) 13:21:44 ID:TG5diAlh0.net
たぶんC#書いてると上を採用するケースは少ないと思う

671 :デフォルトの名無しさん :2020/05/15(金) 13:44:50.97 ID:OlE2WbGda.net
>>669
https://dobon.net/vb/dotnet/control/lvitemtooltip.html
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.listviewitem.tooltiptext

672 :デフォルトの名無しさん (ワッチョイ d379-x0Oq):2020/05/15(金) 13:52:25 ID:/bV5Wl+o0.net
でも下を採用すると
newとGCと場合によってはキャパ超えの処理が複数回
ループ毎に発生する

673 :デフォルトの名無しさん (ワッチョイ 2b2c-2D9n):2020/05/15(金) 13:53:09 ID:1rmq22iw0.net
.NETの範囲内だとToolTip自分で設定してマウスオーバーした時に自分でShowするぐらいしかないのかな
https://docs.microsoft.com/en-us/windows/win32/controls/ttn-show
Win32的にはTTN_SHOWでSetWindowPosしろって書いてある
ちなみにTTN_SHOWはListViewの派生クラスでWndProcオーバーライドすると捕まえられる

674 :デフォルトの名無しさん (ワッチョイ ff01-vB/y):2020/05/15(金) 14:08:20 ID:zOp0aFPX0.net
>>669
WPFだと表示位置を調整可能だけどWinFormだとデフォルトでは設定できないので
デフォルトのToolTipをオフにして自分でマウスイベント使ってToolTipを表示する
設定するToolTipのShow()メソッドで位置調整可能

675 :デフォルトの名無しさん (ワッチョイ 6d2d-imz8):2020/05/15(金) 15:37:07 ID:Szckw36p0.net
オブジェクト複製の方法(ディープコピーやシャローコピー)を明示的に定義したインターフェイスはありますか

676 :デフォルトの名無しさん :2020/05/15(金) 15:54:49.38 ID:kU/eypzIM.net
ない
ICloneableがまさにコピー方法等の規定がなく役に立たないために非推奨となったが、特に代替となるインターフェイスはない
MSとしてはコンストラクタ引数にコピー元オブジェクトを渡すことによるコピーを推奨しており、
シャローコピーなのかディープコピーなのかはそのコンストラクタのドキュメントに書くのがよいと思われる

677 :デフォルトの名無しさん :2020/05/15(金) 16:02:55.82 ID:TSXqI5G8a.net
あったとして使い道を思いつかないw

678 :デフォルトの名無しさん :2020/05/15(金) 16:04:17.52 ID:Q6HDAvk8M.net
ICloneableの一般化は有名なアンチパターン

679 :デフォルトの名無しさん (ワッチョイ 2b2c-2D9n):2020/05/15(金) 19:43:40 ID:1rmq22iw0.net
そんな推奨あったっけ
コンストラクタはasyncにできないし直接デリゲートにできないしで扱いづらいんだよね…

680 :デフォルトの名無しさん (ワッチョイ 4da7-071a):2020/05/16(土) 02:07:37 ID:iEtxjNqq0.net
CS1628 :匿名メソッド、ラムダ式、 またはクエリ式内では、refまたはoutパラメーター 'parameter'で使用できません.

ってエラーが出たらどうしたらいいですか?

681 :デフォルトの名無しさん (ワッチョイ 2352-ri7+):2020/05/16(土) 02:55:26 ID:XDh9Q16+0.net
>>680
どうしたらいいですか?
→具体的にエラーが発生した場所のコードを示して質問する。

682 :デフォルトの名無しさん (ワッチョイ 3bad-fRvC):2020/05/16(土) 02:55:57 ID:hzvIc6mG0.net
そのメッセージの通りじゃね?

683 :デフォルトの名無しさん (ワッチョイ 4da7-071a):2020/05/16(土) 07:51:09 ID:iEtxjNqq0.net
>>682
でも値を戻して欲しいんです

684 :デフォルトの名無しさん :2020/05/16(土) 08:33:36.19 ID:1poti3B0M.net
対処方法も書いてあるが?
https://docs.microsoft.com/ja-jp/dotnet/csharp/misc/cs1628

685 :デフォルトの名無しさん :2020/05/16(土) 09:03:08.49 ID:iEtxjNqq0.net
>>684
よくわかりませんでした

686 :デフォルトの名無しさん (ワッチョイ d978-gIXh):2020/05/16(土) 09:13:21 ID:YgFCYzEo0.net
質問者が理解できない(理解しようとしない)だと回答する意味ねぇわな

687 :デフォルトの名無しさん (ワッチョイ 97ad-SWFu):2020/05/16(土) 09:36:21 ID:GaPEU8I00.net
MSDNは日本語版で読むと意味不明だから、英語で読んだほうが良いよ。

688 :デフォルトの名無しさん (ワッチョイ 3bad-fRvC):2020/05/16(土) 09:47:43 ID:hzvIc6mG0.net
>>683
だからコードをさらしてみ

689 :デフォルトの名無しさん (ワッチョイ 3bad-fRvC):2020/05/16(土) 09:48:00 ID:hzvIc6mG0.net
>>687
docsね

690 :デフォルトの名無しさん (ドコグロ MM7b-cWUa):2020/05/16(土) 10:36:14 ID:brzmqlgbM.net
>>687
この程度ならたいして変わらなくね?
て言うか
> このエラーを回避するには、ローカル変数を使用するか、別のコンストラクトを使用します。
を理解 {でき|しようとし} ない奴が
> To avoid this error, use a local variable or some other construct.
を理解できるとは思えないけど…

691 :デフォルトの名無しさん :2020/05/16(土) 10:50:18.03 ID:5tLRWKNk0.net
こんな日本語を理解しようとするのは時間の無駄

Ref または out パラメーター 'parameter' 匿名メソッド、ラムダ式、またはクエリ式の内部を使用することはできません。使用する場合、このエラーが発生した、 in、 ref、またはout匿名メソッド ブロックの内部でパラメーター。

692 :デフォルトの名無しさん :2020/05/16(土) 11:26:30.30 ID:GaPEU8I00.net
>>689
docsか、すまん。

>>690
よく読めば一瞬で謎に陥る。
>>691
の部分が一番やばい。

俺Xamarin最近いろいろやってるからドキュメントに当たるんだけど、もう少しなんとかならんかなあれ。
MVPあたりに音頭取らせて翻訳をみんなに手伝ってもらえばいいのに。コントリビューション記載してくれるなら権利放棄して喜んでやってくれるだろうに。

693 :デフォルトの名無しさん (ワッチョイ 97ad-SWFu):2020/05/16(土) 11:31:27 ID:GaPEU8I00.net
安易にgithubのイシュー切れて、好き勝手文句を書いたように見えたから前回は問題になったんだし、githubでやるより、翻訳するにあたって当たり前のツールで対訳は作るべきだと思うんだがなぁ。
何もTradosを買えって言うわけじゃないけど、何か機械翻訳ではなくてメモリ翻訳+人間でやってほしい感じがするわ。

694 :デフォルトの名無しさん (ワッチョイ 5fb2-mth5):2020/05/16(土) 11:58:34 ID:l25Hva970.net
>>683
returnで返せばええやん

695 :デフォルトの名無しさん (ドコグロ MM51-cWUa):2020/05/16(土) 12:16:10 ID:Xg9MPSsRM.net
>>691
これ元の英文もおかしいと思う

Cannot use in ref or out parameter 'parameter' inside an anonymous method, lambda expression, or query expression

の 'in' がキーワードと認識できないからわかりにくい訳になってる
in, ref, outを列挙するならカンマでつないで

Cannot use in, ref, or out parameter 'parameter' inside an anonymous method, lambda expression, or query expression

とするのが普通だと思う
これならGoogle翻訳でも

匿名メソッド、ラムダ式、またはクエリ式内では、in、ref、またはoutパラメーター 'parameter'を使用できません

とそれなりの訳文になる

696 :デフォルトの名無しさん (ワッチョイ ff01-vB/y):2020/05/16(土) 14:19:19 ID:5tLRWKNk0.net
Cannot use ref or out parameter … だったところに
新機能でinが追加されて修正したやつがミスったんだろ

実際のエラーメッセージはカンマ入りでちゃんと修正されてる
CS1628: Cannot use ref, out, or in parameter 'x' inside an anonymous method…

697 :デフォルトの名無しさん (ワッチョイ 97ad-SWFu):2020/05/16(土) 14:33:46 ID:GaPEU8I00.net
>>695
つまりはここでしくったって事か。
https://github.com/dotnet/docs/commit/b6260bc6ec50f5aac074be770802dc63d4f9faf2#diff-c8c760ed90c0eac9154358b3438bfdde

698 :デフォルトの名無しさん :2020/05/16(土) 15:24:12.42 ID:hzvIc6mG0.net
>>697
そうだね、parameterが重複しちゃってるのはその前からだし、そもそもキーワードはバッククォートで囲っとくべきだけどね

699 :デフォルトの名無しさん :2020/05/16(土) 17:58:30.18 ID:gofaxmB+0.net
練習がてらWindowsフォームでカレンダーを作っています
アプリが選択されていない時でも、例えば特定のラベルに
マウスポインタをかざすだけでイベントを発生させることはできますか?

700 :デフォルトの名無しさん (ワッチョイ ab7b-u9dh):2020/05/16(土) 18:06:26 ID:WlfS3Ahk0.net
>>699
MouseEnterイベント

701 :デフォルトの名無しさん (ワッチョイ 6b01-VOoi):2020/05/16(土) 18:26:07 ID:gofaxmB+0.net
>>700
ありがとうございます
MouseEnterイベントの内容を間違えて捉えていました

702 :デフォルトの名無しさん :2020/05/16(土) 19:09:59.71 ID:Z06SXSKt0.net
イベントは常に発生しているだろ
それをフックするかしないかだけで。

703 :デフォルトの名無しさん :2020/05/16(土) 20:00:39.55 ID:9bKV5hlVa.net
ワイルドだろぉ〜?
まで読んだ

704 :デフォルトの名無しさん :2020/05/17(日) 09:17:29.91 ID:cGtEzJ7q0.net
WinFormsでWndProcとかフックしてて思ったんだけど
C++でデスクトップGUI作る場合ってGetMessageループするスレッド立ててWMをswitchさせてって感じでチマチマやってんの?

705 :デフォルトの名無しさん :2020/05/17(日) 09:26:02.95 ID:qz8+t6v/0.net
C++もMFCで組む場合はなんかよくわからんイベントで処理されてること考えないとあかんで
c#に移植するときは対応するイベントやメソッドがどれか当てはめるだけで移植できるかもしれんほど似てる

ぶっちゃけこの周りはwin32api時代のが一番見通し良かった

706 :デフォルトの名無しさん (ワッチョイ 9701-nHeX):2020/05/17(日) 09:41:58 ID:vdKycdNh0.net
隔靴掻痒

707 :デフォルトの名無しさん :2020/05/17(日) 10:20:04.65 ID:c3b5r+2ta.net
Win32API が見透し良いのは同意
MFC は糞(ただのラッパーをクラスライブラリと称するとかアホかと)

708 :デフォルトの名無しさん (ワッチョイ 6b01-VOoi):2020/05/17(日) 10:38:34 ID:WidHY7hL0.net
>>702
はい

独学だと基本がだめですね
読まないといけない本がたくさんあります

カレンダーは一旦完成したんですけど、また組み直してます
Form1にメソッドが集中するのもどうかと思い、カプセル化の勉強がてらクラスに分けたりしています

あと、デザイナでエラーが起きるのが怖いです
カレンダーの日付が表示される42個の部品をユーザーコントロールで作っているのですが
これのプロパティをいじるとデザイナでよくエラーが起きます
ソリューションのクリーンなどをしてると直るんですけど、それでよかったのかよくわかりません
ちなみにここで言ってるプロパティとは、セッターゲッターのある自分で入力するプロパティです
このプロパティと、プロパティウィンドウでのプロパティはどういう関係にあるのかもよくわからないんですけど。Designer.csをみるとただのフィールドのように見えるので。

709 :デフォルトの名無しさん (ワッチョイ eb7c-ahgx):2020/05/17(日) 10:42:17 ID:A0b/Dj9R0.net
馬鹿はいつもあさっての方向に努力するよな

710 :デフォルトの名無しさん :2020/05/17(日) 10:47:23.24 ID:U+QztSWEa.net
インターフェース多すぎて使い方よく分からんのだけど、いい解説サイトない?

711 :デフォルトの名無しさん (ワッチョイ d978-gIXh):2020/05/17(日) 10:54:28 ID:xmDbof2g0.net
>>710
https://docs.microsoft.com/ja-jp/dotnet/

712 :デフォルトの名無しさん (ワッチョイ 8902-aUbQ):2020/05/17(日) 10:57:26 ID:a6GN2IRE0.net
>>708
そのコードを晒してみれば、優しいお兄さん方が色々指導してくれるかも知れないよ。
独学ヤバいと思うならやってみてもいいかと。

713 :デフォルトの名無しさん (ワッチョイ 6b01-VOoi):2020/05/17(日) 12:52:02 ID:WidHY7hL0.net
>>712
大学卒業したての美人の女医さんに
はい、パンツ脱いでおちんちん見せなさいって言われてるようで
はずかしすぎてとても無理っす



落ち着いていろんなことを実験したり調べてみると理解できるようになるんで頑張ってみます

714 :デフォルトの名無しさん (ワッチョイ 17f1-8kLo):2020/05/17(日) 13:26:59 ID:oJIHh9Jk0.net
>>713
逆に大学卒業したての美人の女医さんに
はい、パンツ脱いでおちんちん見せなさいって言われる体験をしたいのですが
どうすればいいですか?そんな例えを思いつくくらいだから方法はあるのでしょうね

715 :デフォルトの名無しさん (ワッチョイ 6b01-VOoi):2020/05/17(日) 14:26:14 ID:WidHY7hL0.net
>>714
5歳ぐらいに戻れば簡単
変装でも8割方いけますわ

716 :デフォルトの名無しさん (ワッチョイ 17f1-8kLo):2020/05/17(日) 14:39:23 ID:oJIHh9Jk0.net
>>715


717 :デフォルトの名無しさん (JP 0H13-2td9):2020/05/17(日) 15:21:16 ID:BOpWVUpQH.net
IT掲示板群 ttp://x0000.net/forum.aspx?id=15

学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など

simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0
連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
4Dエンジン
ttp://x0000.net/topic.aspx?id=3677-0
matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0
ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0
SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0

718 :デフォルトの名無しさん (ワッチョイ 1384-57Gp):2020/05/17(日) 15:59:31 ID:bUEaT9ex0.net
>>708
使い方とか設定でなにかあるのかもしれないけど、挙動からみるとデザイナはリアル
タイムにクラスのコードを解釈しているのではなく、キャッシュされたコードを使って
描画を行っているっぽい

DataGridViewクラスはhogeColumnクラスとhogeCellクラスを作るとユーザ定義の
セルを作れて、デザイナで作ったセル用のクラスをコントロールできるようになる
けど、作成直後はコードを保存してもリビルドしてもデザイナには反映されない
一旦コードをデバッグ実行すると、次からはデザイナでコントロール可能になるけど
プロパティを増やすとデザイナーに反映されないし、削除するとプロパティがないって
デザイナのコンパイラ(?)がエラーを吐いたりする

一応デザイナ画面を表示させない状態でバイナリのビルドに成功した状態で実行
してフォームが表示されれば、次からはデザイナで操作できるので気にしないで
使ってるけど

.NetFrameworkのソース見ると何か色々、実際のコードとは関係なさそうな指示
コードがたくさん書いてあるので、デザイナで使用するにはこの辺も記述する
必要があるのかもしれないけどよくわからない

デザイナで表示されるプロパティウィンドウに表示されるのは、単純にクラスで定義
されているプロパティなので別に違いはないはずだけどなぁ

719 :デフォルトの名無しさん (ワッチョイ 6b01-VOoi):2020/05/17(日) 17:21:28 ID:WidHY7hL0.net
>>718
とても参考になりました
ありがとうございます

デザイナのエラーで元に戻らなくなると怖いので
ソリューションフォルダごとバックアップのためコピーしてるんです。
でも、エラーが起きるはずのないフォルダから起動しても
エラーが一時的に起きたことがあったんで疑問に思ってました。
キャッシュが残ってたからなんですね

>一応デザイナ画面を表示させない状態でバイナリのビルドに成功した状態で実行
>してフォームが表示されれば、次からはデザイナで操作できるので気にしないで
>使ってるけど

これ意識してなかったんですけど、そう言われればその手順でやるとエラー消えてました

プロパティについては理解が浅くて、いろいろ間違えていました。
山田先生の独習を読み直して教科書通りに書き直してみたらエラーが起きないようになりました
setterにいろいろ書きすぎてました。一応動いちゃうので大して気にせずに。

あと、自分で書いたプロパティとの違いですけど、これも勘違いしてました。
例えばForm1はFormクラスを継承してるので、プロパティはFormクラスや
さらにその先のクラスで定義されてるということですね
Designer.csやForm1.csでそれらしきのが書かれていなかったので早合点してました

720 :デフォルトの名無しさん :2020/05/17(日) 18:05:02.43 ID:kGA4FYso0.net
本題とは関係ないけど
> デザイナのエラーで元に戻らなくなると怖いので
> ソリューションフォルダごとバックアップのためコピーしてるんです。
Git導入してみてはどうだろう 一人開発でも十分役に立つぞ
今どきはVSにも組み込まれてるんだし

721 :デフォルトの名無しさん :2020/05/17(日) 18:12:17.37 ID:T4/b/bLZa.net
初心者の勉強にGitなんか要らんよ
俺も初心者の頃は意識高い情報に踊らされてバージョン管理しながら勉強してたが、前のバージョンに戻すなんて一度たりともやった覚えがない
もっと言えば、初心者時代に書いたコードなんてはっきり言って何の価値もないゴミだ
後から見返したことは一度もない

722 :デフォルトの名無しさん (ワッチョイ d390-6tiU):2020/05/17(日) 18:27:33 ID:NeE1Esak0.net
後々取っておくとこんなのもあったなあ…って懐古しながら成長したことを実感できるよ

723 :デフォルトの名無しさん (ワッチョイ 9b4f-gIXh):2020/05/17(日) 18:29:18 ID:EbKAPsbe0.net
いろいろ試行錯誤する初心者の方が役に立つと思うけどなぁ。
ガチャガチャ試しているうちに今まで動いていたところがなぜかうまく動かなくなったとか。

724 :デフォルトの名無しさん :2020/05/17(日) 18:42:33.53 ID:sPeeGmAVa.net
ZIPで固めて丸ごと保存最高だよねw
一瞬で出来るし何の準備もいらん

725 :デフォルトの名無しさん (ワッチョイ 3d01-gIXh):2020/05/17(日) 19:15:02 ID:WeV7wvNO0.net
Gitは保存の仕方だけ覚えたから上書きだけしてる
初心者だからバージョン管理とか不要

726 :デフォルトの名無しさん (ワッチョイ 3bad-fRvC):2020/05/17(日) 19:33:53 ID:VAj0yrtz0.net
初心者だろうとなんだろうとバージョン管理は基本

727 :デフォルトの名無しさん :2020/05/17(日) 19:56:39.41 ID:zE6yFOdt0.net
バージョン管理システムの概念を理解するまで結構慣れが必要だから
初心者の内から触るのも悪くない

728 ::2020/05/17(日) 20:03:25.43 ID:US7auhKkH.net
私も昔は CVS のレポジトリを dropbox に置いてお気楽に、ああ便利だ、とやってましたが…
ある日突然レポジトリが死んでしまったのにショックを受けて以来、今も躊躇しているのです

729 :デフォルトの名無しさん:2020/05/17(日) 20:22:56 .net
>>724
これ

730 :デフォルトの名無しさん (ワッチョイ 8902-aUbQ):2020/05/17(日) 20:24:25 ID:a6GN2IRE0.net
>>723
だよな。
初心者じゃなくても、不具合を生んじゃった箇所を調べたり出来るし。
過去バージョンに戻したりはしないけど、比較はよくやるよ。実際。

731 :デフォルトの名無しさん :2020/05/17(日) 20:35:22.45 ID:dvSHUyYR0.net
比較なんてエディタでもできるし
そもそも一人なんだからローカルリポジトリでいいだろ

732 :デフォルトの名無しさん :2020/05/17(日) 20:47:12.43 ID:cbSXa2eM0.net
sourcetreeいれてブランチつくってこねこねしてたらなんとなく複雑なバージョン管理している気分になれるからおすすめ
なお実戦で役に立つかどうかはしらん

733 :デフォルトの名無しさん :2020/05/17(日) 20:49:38.05 ID:T4/b/bLZa.net
SourceTreeってWindows版はWPFだから嫌い
Forkに乗り換えたわ

734 :デフォルトの名無しさん (ワッチョイ 6b63-S0xs):2020/05/17(日) 21:11:45 ID:hv2XIFXO0.net
>>733
べつに使う側からしたらWPFでもformsでも何でもよくない?

735 :デフォルトの名無しさん (ワッチョイ d978-gIXh):2020/05/17(日) 21:14:15 ID:xmDbof2g0.net
>>733
VisualStudio使ってないの?

736 :デフォルトの名無しさん :2020/05/17(日) 21:50:04.36 ID:jYDn0xup0.net
>>732
SourceTree仕事でもメッチャ使ってる
でもAtlasianのアカウント作れって言われるようになって面倒
最近は Git Extensions のUIも頑張ってるからそっちに乗り換えようかとおもってる

737 :デフォルトの名無しさん :2020/05/17(日) 22:13:04.12 ID:Cxm54tO20.net
VS以外だとTortoiseGit使ってるわ

738 :デフォルトの名無しさん :2020/05/17(日) 22:34:53.36 ID:VAj0yrtz0.net
Visual Studio CodeとCLIで大体の作業は事足りるしなあ

739 :デフォルトの名無しさん :2020/05/17(日) 23:11:20.91 ID:wfhyoR0J0.net
>>736
アレさ
フォルダの中のファイル変えるじゃん
現在アクティブなブランチはフォルダ見ただけじゃわからないし
すべての操作が気軽にしてはいけないくせに右クリックのメニューとか
ドラッグ・アンド・ドロップでやらせようとするのがゴミ

操作前に操作後の結果がビジュアル的に見えないといけないツールのくせに
何もしてないし
いらなくね?
普通にtortoiseGitでできる範囲の操作しかしないほうがいい

740 :デフォルトの名無しさん :2020/05/17(日) 23:29:14.84 ID:jYDn0xup0.net
>>739
なんの操作のこと言ってるかわかんないけど何でも楽にできていいけどなあ
間違えたら元に戻せばいいだけだし
そんなに間違えないし

741 :デフォルトの名無しさん :2020/05/17(日) 23:43:05.81 ID:wfhyoR0J0.net
>>740
いいや、この手のツールはデータのミスには強いけど
操作のミスには甘くないよ

742 :デフォルトの名無しさん (ワッチョイ 4da7-071a):2020/05/17(日) 23:53:55 ID:wfhyoR0J0.net
ツールの故障もダメ
コミット失敗してもロールバックしてくれないぞ

743 :デフォルトの名無しさん :2020/05/18(月) 00:04:19.65 ID:g/ITMYKi0.net
コミット失敗の意味がわからん
間違いコミットなんか別に問題ないし戻りたければ戻れるだろ
pushしてからミスに気付いたのは面倒だけど
それはツールかどうか関係ないしな

744 :デフォルトの名無しさん :2020/05/18(月) 00:05:50.73 ID:flcUkeyx0.net
>>742
コミットミスがどの操作でどの範囲のミスか知らんけど、sourcetreeなら自分でロールバックできるじゃん

745 :デフォルトの名無しさん :2020/05/18(月) 00:14:15.65 ID:ZhbDs7dG0.net
その昔VSSという、格納したファイルが
ロストするというとんでもないバージョン管理システムとか

文書が消滅する文書管理システムとかあってなw

746 :デフォルトの名無しさん :2020/05/18(月) 01:35:24.95 ID:gGxx/ysn0.net
>>745
SQLServerのデータだから何とでもなるだろ
サーバのバックアップも取っていなかったアホの類い?

747 :デフォルトの名無しさん (ワッチョイ 4da7-071a):2020/05/18(月) 02:00:15 ID:Js/sWW350.net
>>744
つい最近やったばっかりだけど
何やってもエラー出るようになって動かなくなったよ
もっともGitが悪いのかSourcetreeが悪いのか切り分けしてないけど

748 :デフォルトの名無しさん (ワッチョイ 4da7-071a):2020/05/18(月) 02:01:08 ID:Js/sWW350.net
>>744
通信異常だっていってるじゃん

749 :デフォルトの名無しさん :2020/05/18(月) 02:16:56.43 ID:dAzYDVZg0.net
未経験から半年でフリーエンジニアになれる人の特徴
https://www.youtube.com/watch?v=YCxu0jn52Qw
フリーランスか会社員かどっちが簡単かについての最終回答
https://www.youtube.com/watch?v=JA4JNSmIdxI
【エンジニア】正社員/派遣社員/フリーランスのメリット・デメリットについて
https://www.youtube.com/watch?v=fTG-eMpwhCg
月収1000万円オンラインサロンオーナーの日常【飲み過ぎ】
https://www.youtube.com/watch?v=lPfWZLatYus&t=107s
借金400万円から人生逆転するまでの軌跡
https://www.youtube.com/watch?v=fXdHlFFUjGY

750 :デフォルトの名無しさん :2020/05/18(月) 02:54:46.58 ID:QOM8mByz0.net
>>749
スレチ グロ

751 :デフォルトの名無しさん (ワッチョイ 7701-tC+g):2020/05/18(月) 07:21:22 ID:ZhbDs7dG0.net
>>746
馬鹿は知ったかぶりすんな

752 :デフォルトの名無しさん (アウアウエー Sa93-jstM):2020/05/18(月) 09:32:08 ID:vuzvZUyca.net
ループ中にList<string>へAddして追加していった文字列があります
Listの中身は仮にABCD, ABCD, EFGH, IJKL, IJKL, IJKLとします
これを集計してMessageBox.Showにて下記のように出力したいのですがどのような方法がありますか?
---------------
ABCD 2件
EFGH 1件
IJKL 3件
---------------

集計部分の方法について教えていただきたいです
二重ループにてひとつずつカウントするのは思いつくのですがもっと無駄の無い方法があるのではないかと質問させていただきました
ループの回数、Addされる文字列は決まっていないためListに格納してみました
ループ1回の中で条件に合致するとListへAddします(1回のループで追加なし or 1回だけAddの必ずどちらかです)
質問の前提条件が足りませんでしたら指摘お願いします
よろしくお願いします

753 :デフォルトの名無しさん (ワッチョイ 49ea-gIXh):2020/05/18(月) 09:37:16 ID:pauZM8r90.net
Dictionary<string, int>
でよくね?

754 :デフォルトの名無しさん :2020/05/18(月) 09:47:52.23 ID:OpjsybgA0.net
Addするときについでに数えるならDictionary<stirng, int>
完成したList<string>を数えるならGroupBy()をそれぞれCount()

755 :デフォルトの名無しさん (アウアウウー Sa1d-/iGY):2020/05/18(月) 10:12:42 ID:W1RwdSEUa.net
そういうのは集計対象データがDBに入ってるケースが殆どだから、最初からSQLでやっちゃうのが一番スマート

756 :デフォルトの名無しさん :2020/05/18(月) 10:54:25.11 ID:vuzvZUyca.net
>>753-755
ありがとうございます

>>753,754
Dictionaryを使う場合、stringに文字列、intに件数
追加する際にContainsKeyで重複確認
存在しなければ[ABCD, 1]で追加、存在すればintを+1
こんな感じでしょうか?

>>754
ListでGroupBy()、Count()を使用したい場合、List追加時に
{ no = 1, name = "A", grade = 3 }のような形式で追加する必要があると思っているのですが
単純なList.Add(str)でもGroupBy()等が使えるのでしょうか?
ググった中では上記の例しか見つけられずここに質問に参りました

>>755
SQLなら良かったんですが、テキストファイルをDB取込用に変換する時点のお話なんです…

757 :デフォルトの名無しさん :2020/05/18(月) 11:32:45.53 ID:JFOczdfW0.net
>>756
こんな感じでいけるんでね?
var result = list.GroupBy(x => x)
 .Select(x => new { Name = x.Key, Count = x.Count() });

758 :デフォルトの名無しさん :2020/05/18(月) 12:26:33.79 ID:vuzvZUyca.net
>>757
いけました!!!
実現したいことができそうです!
ありがとうございました!

759 :デフォルトの名無しさん (ワッチョイ cf61-gjhq):2020/05/18(月) 12:47:51 ID:p81iujaQ0.net
>>757
Selectいる?

760 :デフォルトの名無しさん (ワッチョイ 7f2c-JcAG):2020/05/18(月) 13:58:26 ID:MslK9QoT0.net
Ruby なら、

ary = %w(あ 12 x 12 あ 12)
p ary.group_by( &:itself ).transform_values( &:size )

出力
{"あ"=>2, "12"=>3, "x"=>1}

761 :デフォルトの名無しさん (ワッチョイ ab33-2pxY):2020/05/18(月) 14:32:21 ID:JFOczdfW0.net
>>759
無しでも書けるか

var groups = list.GroupBy(x => x);
foreach (var g in groups)
{
 Console.WriteLine("{0} {1}件", g.Key, g.Count());
}

762 :760 (ワッチョイ 7f2c-JcAG):2020/05/18(月) 15:54:33 ID:MslK9QoT0.net
Ruby なら、x => x
などのラムダ式も、

&:itself などのメソッド名を渡すだけで良い

763 :デフォルトの名無しさん :2020/05/18(月) 22:54:28.02 ID:/IMIPkUF0.net
>>762
Sapphireならどう出る?

764 :デフォルトの名無しさん (ワッチョイ a72c-MWp5):2020/05/18(月) 23:51:04 ID:TSImRkOU0.net
>>761
ごめん素朴な疑問なんだけど、そのCount()の使い方だと、イテレータの評価が毎回全周するわけにはならんのん?

765 :デフォルトの名無しさん (ワッチョイ 2b2c-2D9n):2020/05/19(火) 00:00:16 ID:QbrDO9YB0.net
ならないよ
GroupByでキャッシュされる

766 :デフォルトの名無しさん :2020/05/19(火) 00:32:37.22 ID:1Pn0Xhkl0.net
キャッシュ?

767 :デフォルトの名無しさん :2020/05/19(火) 00:46:42.98 ID:7LUV0pB00.net
寝ぼけてたらすまない。

>>764 の「毎回全周」ってどういう状態?

768 :デフォルトの名無しさん :2020/05/19(火) 00:51:43.48 ID:QbrDO9YB0.net
とりあえず自分はCount()のたびに
list.GetEnuemrable().GetEnumerator()が呼び出されることと受け取った

769 :デフォルトの名無しさん :2020/05/19(火) 00:53:42.34 ID:QbrDO9YB0.net
あ違う
Count()のたびにlist.GetEnumerator()からの列挙が、だな

770 :デフォルトの名無しさん :2020/05/19(火) 01:21:07.22 ID:1Pn0Xhkl0.net
var groups = list.GroupBy(x => x); のgroupsはIEnumerable<IGrouping<string, string>>
foreach (var g in groups) のgはIGrouping<string, string>
IGrouping<T>に対するCount()はEnumerable.Count()が呼ばれる

IGrouping<T>にICollection<T>やICollectionは実装されてないから
Enumerable.Count()が呼ばれるとGetEnumerator()使って数えるんじゃないかな
(各グループごとにグループ内の要素数分だけMoveNext()が呼ばれるイメージ)

771 :デフォルトの名無しさん :2020/05/19(火) 01:36:28.09 ID:1Pn0Xhkl0.net
試してみたらg as ICollection<string>で変換できたので
Count()はGetEnumeratorされてなさそう

772 :デフォルトの名無しさん :2020/05/19(火) 01:50:25.74 ID:PNm9d/ci0.net
await Task.Factory.StartNew(
() => {
for (int i = 0; i < imageList.Count; i++)
{
Clipboard.SetImage(imageList[i]);
}
},
CancellationToken.None,
TaskCreationOptions.None,
TaskScheduler.FromCurrentSynchronizationContext()
);

こんな感じで画像のリストを1つ1つクリップボードにコピーさせていくのですが
タスクでSTAスレッドで処理をするとUIのメインスレッドがフリーズするのですがフリーズ回避はどうしたらいいですか?

773 :デフォルトの名無しさん (テテンテンテン MM17-/iGY):2020/05/19(火) 02:02:02 ID:Gmm+b2VzM.net
単に Clipboard.SetImage(imageList.Last()) にすればいい
等価だ

774 :デフォルトの名無しさん (ワッチョイ 7f2c-JcAG):2020/05/19(火) 08:52:42 ID:NuzKkPrj0.net
クリップボードみたいなユーザーよりの機能は、
バックグラウンドスレッドから、アクセスできるかな?

ひょっとしたら、UI(メイン)スレッドからしか、アクセスできないかも?

775 :デフォルトの名無しさん :2020/05/19(火) 09:39:08.13 ID:uON0wt840.net
>>770
764だけどなるほど、ありがとう

776 :デフォルトの名無しさん (ワッチョイ 5b84-57Gp):2020/05/19(火) 17:49:11 ID:+0P+K8Fq0.net
>>772
STAスレッド(Formのスレッド?)で処理していたらUIの更新が行えないので
正しい動作かな
ClipboardクラスはSTAでしか動かないってなっているので、asyncメソッドでtaskを
実行してdelegate経由のinvokeで呼び出すんじゃないかな

777 :デフォルトの名無しさん (ワッチョイ 4d1d-ucyj):2020/05/19(火) 18:20:34 ID:8HY/3oGP0.net
SIer業界がブラックな理由を解説する。エンジニアは自社開発をしているWeb業界がオススメ!
https://www.youtube.com/watch?v=iy4nnAI9og4
エンジニアの仕事が稼げる理由とは?プログラミングスキルと
仕事の需要は比例しないので、実は技術力が低くても稼ぐことができる!
https://www.youtube.com/watch?v=82Bs-NH8jAM
通勤時間が長い人ほど無能説。家賃節約とか言っている暇があったら、
会社の近くに引っ越して浮いた時間に副業したほうがお金も貯まるし強くなれる。
https://www.youtube.com/watch?v=mt6K1RJnk6I
プログラミングに英語は必要か?に対する明確な答え
https://www.youtube.com/watch?v=WWULJbVECKU
私がヤフーを辞めた理由
https://www.youtube.com/watch?v=-G-7Hc3rJw8
【業界研究】IT業界でひと括りにするのは危険。SIer、Web制作、
アプリ開発で仕事内容が全く違います。【就活・転職】
https://www.youtube.com/watch?v=_IJQ2iBkf4w

778 :デフォルトの名無しさん (ワッチョイ ebfd-4TjA):2020/05/19(火) 18:32:12 ID:mepgGg800.net
vb.netとc#の大きな違いってなんでしょうか
仕事で後者を触らないといけないんですが

779 :デフォルトの名無しさん (アウアウエー Sa93-ahgx):2020/05/19(火) 18:34:15 ID:h69Ba80Ra.net
vb.net うれしくない
C# どちらでもない

780 :デフォルトの名無しさん :2020/05/19(火) 18:49:46.90 ID:DkycvRhf0.net
>>777
ハゲとるやないか

781 :デフォルトの名無しさん (ワッチョイ 3d01-gIXh):2020/05/19(火) 19:07:11 ID:klHbQUiE0.net
>>778
開発終了と開発続行

782 :デフォルトの名無しさん (オッペケ Sra5-4TjA):2020/05/19(火) 19:56:29 ID:FEuqCu/Yr.net
そんなに大きく違いますか?
文法書見てる感じではそこまで大きな差はないなかな、と思ったりしてますが

783 :デフォルトの名無しさん (ワッチョイ 6b63-S0xs):2020/05/19(火) 20:07:13 ID:T11FGKSX0.net
>>782
どっちも.NETベースだから基本は大して変わらんけどC#のほうが長続きしてるのでVB.NETにない新しい言語機能がいろいろある

784 :デフォルトの名無しさん (ワッチョイ 3bad-fRvC):2020/05/19(火) 20:40:43 ID:a0TVrn2w0.net
>>782
リソースが段違い

785 :デフォルトの名無しさん (アウアウウー Sa31-L7FI):2020/05/19(火) 20:48:48 ID:Hcak2SNoa.net
>>782
あんまり意味のある質問に思えないんだけどw

786 :デフォルトの名無しさん (アウアウウー Saaf-Wcp/):2020/05/19(火) 20:49:42 ID:jcXcpHtca.net
>>782
言語仕様はほぼ一緒なんだけど使い手のレベルとか文化とかに雲泥の差が
控えめに言ってVBしかできないような人は20世紀から取り残されたゴミみたいな開発者が大半
BASICの歴史的な経緯からくる負の遺産、いままでに蓄積されたクソコードもてんこ盛り
VBに関わるとダメプログラマに転落するぞ

といいつつC#でも下手するとVS2005〜2008位で時間が止まったままの案件も結構あるけどな
そういう現場にどっぷり漬かるとVBでもC#でもダメエンジニアへの道まっしぐらだ

787 :デフォルトの名無しさん (ブーイモ MM81-DBEz):2020/05/19(火) 20:55:05 ID:1ZWHWWZ0M.net
っていうか言語で出来ることが変わるとか制限あるのがおかしい
日本語の「ツンデレ」を訳せる言語が無いとかそういうレベルと違う

788 :デフォルトの名無しさん (ワッチョイ 3fac-5iCk):2020/05/19(火) 20:57:59 ID:HSamcFUd0.net
VBはちょっと。。
言語もだけど、書く人の頭が古いからコードまで至るところで古さを感じる
多重for、ifとかそんなレベルで
VB現役でやってる人でもすごい人はいるんだろうけど、稀有やろなあ

789 :デフォルトの名無しさん :2020/05/19(火) 21:07:44.17 ID:+YYtOpaV0.net
VBの言語仕様はラムダ式とかクロージャと相性が悪い

790 :デフォルトの名無しさん (ワッチョイ d978-gIXh):2020/05/19(火) 21:11:51 ID:nVxChFQF0.net
C# と VB.NET、同じコード書いても IL レベルで見るとVB.NET側にゴミが付くんだよな

791 :デフォルトの名無しさん (ワッチョイ 55da-N57e):2020/05/19(火) 21:23:56 ID:u8EJQdwC0.net
C#とVB.NETどっちも選べる状態でVB.NET選んでる人やプロジェクトってどれくらいあるんかな?

792 :デフォルトの名無しさん (ワッチョイ d390-6tiU):2020/05/19(火) 22:18:57 ID:KmzCw2hp0.net
数年前に作られたVB.NETのWebシステム知ってる
オフショアで作らせたら動く粗大ゴミが誕生したと聞いた
詳しくは知らんが

793 :デフォルトの名無しさん (アウアウウー Sac7-RnIb):2020/05/20(水) 06:51:50 ID:AQWueC8Ga.net
自分が作ってるツールはexcel操作する場合
いつもvb.netで書いてしまうわ

794 :デフォルトの名無しさん :2020/05/20(水) 07:03:39.27 ID:lHd0Mfby0.net
VBはC#より稀に先進的な記述方法がある
行末に;要らないとか
つかC#もそうして欲しい
簡単だろ

795 :デフォルトの名無しさん :2020/05/20(水) 07:05:09.78 ID:QEwx4hM4a.net
C#で書いてると、たまにVB使うとエンターキーの違いでイラっとくるわ

796 :デフォルトの名無しさん :2020/05/20(水) 07:11:31.80 ID:lHd0Mfby0.net
VBに限っては改修業務が良い
新規でVBとか考えたくない

797 :デフォルトの名無しさん :2020/05/20(水) 10:16:35.82 ID:qjNDk5Cx0.net
エンターキーの違いとは?

798 :デフォルトの名無しさん :2020/05/20(水) 12:59:08.46 ID:nNq7q5wW0.net
public Class MyCustomForm : Form
という自作の拡張Formクラスを作り、コンストラクタで色やいくつかのコントロールを配置したものをメインのForm1で継承させ、コンパイルも上手くいき実際の動作も希望通りではあるのですが、
上記のMyCustomFormのコンストラクタ内で追加したコントロールがデザイナで編集することができません。
まるで背景画像かのように選択すら出来ないものや、選択こそ出来てもAutoSizeやLocationなどの項目が灰色掛かって編集不可能になっていたりします。

InitializeComponent()以外で追加したコントロールをデザイナ上で操作することは不可能なのでしょうか?

799 :デフォルトの名無しさん :2020/05/20(水) 13:29:58.53 ID:ABO4MomS0.net
VBで作ったシステムをVB.NETに移植しようとしたが
あまりも超絶スパゲッティだったのでほぐしたら
最終的にコード量が1/4になった事がある

800 :デフォルトの名無しさん :2020/05/20(水) 13:51:44.57 ID:AVjmh1IR0.net
VB6で長年熟成された秘伝のソースをぽっと出のVB.netごときで再現できるわけがない

801 :デフォルトの名無しさん (オッペケ Srbb-jY78):2020/05/20(水) 14:39:55 ID:JM16LRl0r.net
https://pc.watch.impress.co.jp/docs/news/1253193.html
Microsoft、Win32とUWPの2つのAPIを再統合する「Project Reunion」

802 :デフォルトの名無しさん (アウアウエー Sa52-NLVI):2020/05/20(水) 14:41:38 ID:mXqWoGfUa.net
VBのツールいまだに動くからリプレイスする意味ない
放置が安全

803 :デフォルトの名無しさん (ワッチョイ 8b01-oW4g):2020/05/20(水) 16:24:15 ID:wnqJe1lz0.net
プロジェクト・リュニオン!
ゴー!リュニオン!

804 :デフォルトの名無しさん (ワッチョイ 6301-UYz0):2020/05/20(水) 16:27:54 ID:kLEW4Vt90.net
>>801
眩暈がして来た

805 :デフォルトの名無しさん :2020/05/20(水) 18:05:51.93 ID:e2MEnn77a.net
要するに5年ぐらい前に言ってたはずの「Win32を全廃してUWPで一本化する」計画は
諦めたってこと?

まああの話も一瞬出ただけでその後まったく聞かなくなってたけど

>>798
アクセスレベルがprivateになってるとかではなくて?
っていうか、もしコントロールをユーザーコードで追加している場合だけ起こる(デザイナで追加した場合は起こらない)
問題だと分かっているなら変なこだわりを捨てればよいだけなのでは?


まあバグでプロパティがいじれないコントロールも一部あるらしい
https://teratail.com/questions/236012

806 :デフォルトの名無しさん (オッペケ Srbb-yNr9):2020/05/20(水) 18:40:47 ID:t37lmoTKr.net
デザイナはわりと属性見てるので、その辺ちゃんとやっとかないとうまくいかないことがある

807 :デフォルトの名無しさん (ワッチョイ 9763-xLuj):2020/05/20(水) 19:08:47 ID:2OJQAkVy0.net
リユニオンとか真っ黒になりそう

808 :デフォルトの名無しさん :2020/05/20(水) 20:43:28.09 ID:wnqJe1lz0.net
トレイン変形!ゴー!リュニオン!

809 :デフォルトの名無しさん (ワッチョイ 9a01-hY51):2020/05/21(Thu) 04:25:59 ID:ShhpHDma0.net
winフォームアプリなのですが、Form1上のtextBox1に他クラスからアクセスしたい時って
Form1.Designer.csの下の方にあるフィールドをpublicに変えるのはよくない例ですか?

Form1のコンストラクタで自分自身を当該他クラスに引き渡す処理は済んでいます

Form1で、textBox1.TEXTをプロパティにして
他クラスからアクセスする方法も考えたんですけど、
じゃ、テキストボックスじゃなくてリストビューとかだとどうするんだとか考えたら
めんどくさいからもうpublicでいいんじゃないかとか思っちゃうんですけど
ベテランの皆さんはどうしてるんでしょうか

810 :デフォルトの名無しさん :2020/05/21(木) 04:48:51.98 ID:KUTx9pVe0.net
だめ

811 :デフォルトの名無しさん :2020/05/21(木) 04:53:08.19 ID:ShhpHDma0.net
>>810
はい、頑張って考えてみます

812 :デフォルトの名無しさん :2020/05/21(木) 07:23:16.29 ID:iIzHpd9H0.net
>>809
俺はpublicにしちゃってる
ものすげー数があるときにいちいち仕組み作ってたらすごく汚くなっちゃったから
余計なことせずにpublicにしちゃったほうがよかった

813 :デフォルトの名無しさん (ワッチョイ 8b01-crVl):2020/05/21(Thu) 07:32:49 ID:MQs/4XZV0.net
ボタン継承して新しいの作れば

814 :デフォルトの名無しさん (ワッチョイ 8b01-crVl):2020/05/21(Thu) 07:33:55 ID:MQs/4XZV0.net
あっtextboxか

815 :デフォルトの名無しさん (アウアウウー Sac7-anYt):2020/05/21(Thu) 08:59:55 ID:9RboWam4a.net
internal でよくね?

816 :デフォルトの名無しさん :2020/05/21(木) 11:45:51.28 ID:LNx85Gx+a.net
>>811
頑張って考えるまでもない。
XがFormを参照するんじゃなくて、FormがXを参照するように変えるだけ。

なぜUIの更新なんていう猿仕事を他のクラスにやらせようとするの?
それはUI自身の仕事だよ。

817 :デフォルトの名無しさん (ワッチョイ 9a01-hY51):2020/05/21(Thu) 14:57:27 ID:ShhpHDma0.net
>>812
誘惑にかられますわ
>>813-815
カスタムコントロールとかですか?
ググっていろいろ調べたんですけど面白そうですねこれ
今回の用途にどう使うのかについてはまだ理解できてないですけど
継承ってこういうことに使うんですね
>>816
つまり、他クラスからForm1のtextBox1に書き込む仕様自体がおかしいってことですか
Form1から他クラスに仕事させて、結果をForm1で受けとってForm1からtextBox1に書き込むべきという理解でよいですか
確かにそうですね
他クラスから書き込むとForm1のコードがスッキリするので気に入ってたんですけどよくないってことですね
他クラスの汎用性を奪っているとも言えますね

818 :デフォルトの名無しさん (ワッチョイ 9a01-hY51):2020/05/21(Thu) 15:28:29 ID:ShhpHDma0.net
>>813-815
なんとなく分かりました

public partial class CustomTextBox1 : TextBox

こうやって定義してから、このクラスに処理のためのメソッドをおくとともに
自分自身のTextプロパティに書き込むようにしておく
で、このメソッドをForm1から呼んで処理させればボックスに書き込むことができるっていうことですね

あー勉強になりました

819 :デフォルトの名無しさん (ワッチョイ 9a01-hY51):2020/05/21(Thu) 15:32:59 ID:ShhpHDma0.net
>>815さんは違う提案でした
アクセス修飾子の話ですね
publicにする必要ないだろうということですね
なるほどです

820 :デフォルトの名無しさん :2020/05/21(木) 17:41:35.31 ID:66n7MLhy0.net
>>809
やり方は人それぞれなので何が良いとかないと思うけど、デザイナで操作できる
ところはデザイナで操作したほうが良いと思うよ
Designer.csをいじっても結果は同じなんだけど、おかしなコードを書くとデザイナの
挙動がおかしくなったりしてイランことに時間がかかったりするから

821 :デフォルトの名無しさん (スッップ Sdba-6rFm):2020/05/21(Thu) 17:47:51 ID:LaJH1wCvd.net
見掛けは同じように見えても、改行コードのせいでエラー吐いてたプロジェクトをなんとかしてくれと依頼されたことがある

822 :デフォルトの名無しさん :2020/05/21(木) 18:45:11.84 ID:/Pr2yAaR0.net
>>809
ってDesigner.csを直接編集することに疑念をもっているのか
コントロールをPublicにすることに疑念をもっているのかどっちなんだろ?

823 :デフォルトの名無しさん (ワッチョイ 2702-crVl):2020/05/21(Thu) 18:58:27 ID:MVvwgJKT0.net
空っぽのイベントハンドラを一発で消去する消去する方法は無いのでしょうか?

824 :デフォルトの名無しさん :2020/05/21(木) 19:17:33.27 ID:n40K1Wl40.net
日本語でOK

825 :デフォルトの名無しさん (ワッチョイ 9a01-hY51):2020/05/21(Thu) 19:27:16 ID:ShhpHDma0.net
>>820
>>822
コントロールのアクセス修飾子をデザイナから変更できることをさっき知りました
そうすべきでした

元々の質問内容は、直接Designer.csを編集してもよいかどうかではなく、
publicにすること自体いいのか悪いのか、でした。

826 :デフォルトの名無しさん (アウアウウー Sac7-vdj3):2020/05/21(Thu) 22:44:16 ID:y7fmuH5Aa.net
TextBox自体をpublicにするのはやっぱり微妙かなあ
自分だったらForm1クラスにpublic(or internal)なメソッドを作って、
メソッド名をTextBoxにアクセスする目的を明確に表す名前にする

たとえば、
 void set合計金額Text(int price, Color textColor) { }
 string get現在のその他欄入力値()
とか言った感じで

827 :デフォルトの名無しさん (アウアウウー Sac7-vdj3):2020/05/21(Thu) 22:49:45 ID:y7fmuH5Aa.net
あ、小文字始まりでJavaのsetter/getterみたいにしちゃったけどC#なら当然大文字始まり

受け取りたい項目が複数、例えポップアップ表示ダイアログの各項目の入力値を取り出すなら、
入力値を詰め込むInputValuesクラスとかを定義したうえで、
 InputValues GetInputValues() { }
みたいなメソッドを作って入力値をオブジェクトで扱いやすくして返すようにする

828 :デフォルトの名無しさん :2020/05/21(木) 22:58:08.80 ID:n40K1Wl40.net
インデクサー作った方がスマートかな?
public var this[int i]

829 :デフォルトの名無しさん :2020/05/21(木) 23:13:48.54 ID:iIzHpd9H0.net
>>826
やめろやめろ
そんなバカなことなれて
コントロールが300個とかあるときどうするんだ
〜するべきとかそもそも元の造りがそんなふうになってないことのが多いのに
無駄なラッピングなんてするべきじゃない
想定するならそれが1000個あるときそれをやってられるかどうかを想定しろ
そもそも少数ならアクセス方法なんてどうだっていいだろ?
想定してるのは大量にある時なんだよね?

830 :デフォルトの名無しさん (ワッチョイ ba52-NhWw):2020/05/21(Thu) 23:54:34 ID:VEFS25bE0.net
>>829
何で勝手に膨大な数のコントロールがある前提なんだ?
質問者はそんなこと全く言ってないし、読んだ限りでは初心者が小規模なプログラムを作ってる可能性の方が高そうだ。
そういう相手に実務上の仕方なくやる汚いやり方を教えるより、場合によっては理想論になるかもしれないが基本的に良いとされる考え方をまず教えた方がいいだろう。

831 :デフォルトの名無しさん :2020/05/22(金) 00:00:35.63 ID:2K6mKaTxa.net
???
おおもとの>>809では対象はtextBox1の一つだけみたいだけど
でこれがTextBoxからListViewに変わったときとかの話はあるけど
対象項目が大量なんて前提はどこから湧いてきたんだっけ?

というか1画面にコントロールが300個とか1000個とか配置されてて、
全部publicフィールドになってて、法則性もなくあらゆるコントロールに無尽蔵にアクセスする
なんて、その時点でソースから腐臭が漂ってるよ
そこまで酷い状態になってるなら諦めて全部publicにするしかないでしょう
後日メンテナンスしなきゃならないときの影響調査で死ぬだろうけど

832 :デフォルトの名無しさん :2020/05/22(金) 01:09:32.35 ID:xIO0+KZFa.net
>>809
Viewのインターフェースを決めてFormで実装
他のクラスにはViewのインターフェースを渡す
他のクラスはFormの詳細には興味がない

833 :デフォルトの名無しさん :2020/05/22(金) 01:10:19.16 ID:mKnPmupma.net
>>826のラッピングが無意味で有害無益なのは>>829の言う通りで、
問題点をはっきりさせるために大量のコントロールがあるケースを想定するのも間違ってない。
だからと言って>>812にあるようにコントロールをpublicにするのもダメ

OOP的な考え方もカプセル化の意味も分かってない人がこうも大量にいるのは困っちゃうねw

834 :デフォルトの名無しさん :2020/05/22(金) 01:25:23.44 ID:HA9eXiUk0.net
>>833
なんで?
理由を説明できる?

835 :デフォルトの名無しさん (ワッチョイ 97de-2bic):2020/05/22(金) 01:29:28 ID:tRHrER1d0.net
>>830
良くないじゃん
だってお前のやり方は数が増えたら手間ばっかり増えて何のメリットもないし
数が少なければ見通しが効くからラッピングなんかいらないわけで
この世に必要ないことしてんだよ

836 :デフォルトの名無しさん :2020/05/22(金) 01:35:16.74 ID:mKnPmupma.net
>>834
何の理由?
つーかこのレベルの話が分からん人は回答する側に回ったらダメだろうさすがにw

837 :デフォルトの名無しさん :2020/05/22(金) 01:38:59.95 ID:bg8HuHxQ0.net
>>836
publicにするのの何が駄目なん?

838 :デフォルトの名無しさん (アウアウウー Sac7-lIs9):2020/05/22(金) 01:47:55 ID:mKnPmupma.net
>>837
だから、それって「どうしてカプセル化なんて必要なの?」って聞いてるのと同じだよw
カプセル化が重要なのは人間の脳が複雑性に対して脆弱だから。
だから必要な物だけ見せてそうでないものは見せないことによって複雑性を減らす必要がある。

例外はあるが、基本的にはUIはメンバーを外部に公開する必要がない。
表示を更新するのも、ユーザー入力をモデルに伝達するのも全部それはUIの仕事。
それを他人にやらせようとする発想が根本的に間違っている

839 :デフォルトの名無しさん (ワッチョイ dbde-2bic):2020/05/22(金) 01:54:29 ID:sv4o2LUU0.net
>>838
複雑になんねーよ
text一個だって
数が増えたらお前の仕組みは邪魔で邪魔でいらねーんだよ

だから、この世に必要ないことしてんだよ

って言ってんだよw

840 :デフォルトの名無しさん :2020/05/22(金) 08:35:08.41 ID:JafM55Gga.net
>>838
カプセル化を考えるからこそ、publicにするかどうかを悩むんじゃね?
カプセル化が頭になければ、悩まないで全部publicにしちゃうだろ

841 :デフォルトの名無しさん :2020/05/22(金) 09:03:50.95 ID:7ltZImPja.net
UIスレッド以外のスレッドから操作されると危険だよね、単純にコントロールを公開すると。

842 :デフォルトの名無しさん :2020/05/22(金) 09:10:28.54 ID:VBq+8Qqi0.net
そう。後悔することになる。

843 :デフォルトの名無しさん :2020/05/22(金) 09:49:54.76 ID:+j//r/2da.net
全部private readonlyにしろ

844 :デフォルトの名無しさん (ワッチョイ 3761-crVl):2020/05/22(金) 10:09:40 ID:ImtqKYD30.net
コントロールに直接アクセスを許すんじゃなくて根っこにあるデータへのアクセスを許すようにしとけばいいんじゃね?
コントロールとデータはBindingしてんだからそれでいいだろ

845 :デフォルトの名無しさん (ワッチョイ 1b8c-crVl):2020/05/22(金) 10:15:33 ID:NtcwyNbz0.net
WinFormsだからバインディングはしてないとおもう

846 :デフォルトの名無しさん (ワッチョイ 0301-f9J/):2020/05/22(金) 10:20:34 ID:+ec+XM8b0.net
>>833
現実的に問題解決の方法が知りたい

847 :デフォルトの名無しさん :2020/05/22(金) 10:32:58.69 ID:I4qPJ3i7a.net
>>841
それはフォームにメンバを追加してラップしたところで解決にならん
フォーム自身がコントロールとして元々持っている大量のメンバはどうするんだ?
もしスレッドセーフにしたいのならフォーム自体も公開してはいけない

848 :デフォルトの名無しさん (アウアウウー Sac7-lIs9):2020/05/22(金) 12:22:25 ID:/6UQkCjLa.net
>>846
そんな大げさな話?
コントロールへのアクセスはFormの仕事だから他人にやらせようとせずにForm自身にやらせろと言っている。
これのどこがそんな難しい話?

ファミレスで客が厨房に乗り込んで注文出さないのと同じことだよ
注文を受けるのはウェイトレスの仕事
パスタの担当が厨房の佐藤さんであることを客が知ってないとナポリタンの注文を
出せなようなファミレスにあんた行きたいか?w

849 :デフォルトの名無しさん (アウアウウー Sac7-VIJV):2020/05/22(金) 12:30:46 ID:JafM55Gga.net
>>848
ウェイトレスがいるレストランが正しいのか、セルフサービスの定食屋が正しいのかの議論に見える
つまり、どちらも正しくて、ケースバイケースで選ぶのが正しい

850 :デフォルトの名無しさん :2020/05/22(金) 13:06:32.78 ID:Yx9iiiQWM.net
ぶっちゃけアーキテクチャパターンと規模次第

MVVM、MVU、MVCの場合はVの機能をV以外に公開することは滅多にない
MVPでは逆にVの基本的な機能をインターフェースで抽象化して積極的にPに公開してコントロールを委ねる

Formの主力アーキテクチャはどうなっているかというとMVPのVPが結合した怠惰なアーキテクチャになってる場合が非常に多い
丁寧に作るならPに書くべきコードが手抜きされてVのFormイベントに書かれてしまっている状態

VPが結合してるからprivateなコントロールを抽象化しなくてもアクセスすることはできる
しかしそれでは規模が大きくなるほどメンテナンスしにくくなる
VPが結合していても基本的な機能を抽象化しておくと後々のメンテナンスが楽になる

このような自クラス内部に向けて抽象化された安全なインターフェースを提供する開発手法を自己カプセル化と言う

851 :デフォルトの名無しさん :2020/05/22(金) 13:17:57.12 ID:F9tTEKoS0.net
規模が小さい練習用のアプリなら>>826 の言ってるように組むと思うけどな。なにが問題なんだ

852 :デフォルトの名無しさん :2020/05/22(金) 13:22:07.31 ID:jD2+szsjM.net
>>849
そういう問題じゃない
注文相手がウェイトレスだろうと厨房にいる店主のオッサンだろうと、客がすることは「注文を店の人に伝える」だ
その注文を受けて店がどうするかという実装の詳細は知ったことではない
ケースバイケースで判断するべきは、そのフォーム同士のやり取りが客と店の間で行われるのか、それとも店の中で行われるのか、という点
後者なら例えばウェイトレスが厨房の設備のレイアウト等を知っていることを前提としてコックへ依頼をすることは店の規模次第では許されるし、そうしたほうが手っ取り早いケースは多いだろう
これは突き詰めると責任分界の問題で、フォームの役割や開発チームの構成等によって最適解は変わってくる

853 :デフォルトの名無しさん :2020/05/22(金) 13:33:40.82 ID:H3nV2EgY0.net
そう言う実装がヤバいってのを
身を持って体験するのも勉強の一つじゃね?

初心者スレなんだし😅

854 :デフォルトの名無しさん :2020/05/22(金) 13:59:56.31 ID:IED0c2cK0.net
客: 「すみませーん、注文お願いします」
店員:「注文はそちらのタブレットからお願いします」(NotImplementedException)

855 :デフォルトの名無しさん :2020/05/22(金) 14:44:15.74 ID:YTFb7Y3X0.net
>>853
初心者のうちに気づける失敗はどんどん経験させた方がいいと思うけど、今回の話みたいに、規模が小さいうちは悪手でも問題なくてそれに気づかず変な癖をつけてしまって、後になって大きな規模で問題に直面することもあるからちゃんと説明するのは大事だと思う。

856 :デフォルトの名無しさん :2020/05/22(金) 14:50:45.75 ID:I90ID8Hwa.net
>>851
規模が大きくなるほど抽象化が重要になる

857 :デフォルトの名無しさん (ワッチョイ b6de-2bic):2020/05/22(金) 15:17:04 ID:aYr0yvAC0.net
>>852
バイキング形式でもいいじゃん
店員いらんよな?

858 :デフォルトの名無しさん :2020/05/22(金) 16:16:46.92 ID:GLaq/xoS0.net
ビジネスホテルの朝バイキングたのしいよね

859 :デフォルトの名無しさん (ブーイモ MM7f-t91P):2020/05/22(金) 17:41:35 ID:49gWHqYrM.net
朝バイキングあるような高級ビジネスホテルなんて泊まったこと無いな

860 :デフォルトの名無しさん (ワッチョイ dbde-2bic):2020/05/22(金) 17:59:13 ID:mtheMDmH0.net
>>859
東横インにもないのかよ

861 :デフォルトの名無しさん :2020/05/22(金) 18:29:14.17 ID:7QsDy1x+0.net
>>859
ドーミーインとか高級なの?
ビジネスホテルは温泉とか朝食ビュッフェついてる事優先で選ぶけどな。

862 :デフォルトの名無しさん (ワッチョイ 1b8c-crVl):2020/05/22(金) 18:48:22 ID:NtcwyNbz0.net
東横インって高級ビジネスホテルなの?

863 :デフォルトの名無しさん (ワッチョイ 0e2d-f9m4):2020/05/22(金) 18:51:49 ID:W0pT+Psy0.net
>>861
ドーミーインはちょっぴり高級

864 :デフォルトの名無しさん (ブーイモ MM7f-t91P):2020/05/22(金) 19:05:57 ID:49gWHqYrM.net
>>860
東横インの朝食をバイキングと呼ぶかね?

865 :デフォルトの名無しさん (ワッチョイ 977b-KA8w):2020/05/22(金) 19:17:57 ID:V6jLBdBV0.net
役に立たない議論と雑談をどれだけ続けるんだお前ら
マ板でやれ

866 :デフォルトの名無しさん :2020/05/23(土) 00:48:15.75 ID:KnmbZWpz0.net
C#9.0いい感じだね
今年中に出る予定みたい
https://devblogs.microsoft.com/dotnet/welcome-to-c-9-0/

867 :デフォルトの名無しさん :2020/05/23(土) 00:54:53.82 ID:dlI7NS18M.net
もう関数型言語だな
ジャパニーズドカタは完全に置き去り

868 :デフォルトの名無しさん (ワッチョイ 9a6a-crVl):2020/05/23(土) 01:08:33 ID:Gttmmg320.net
遂に登場!コピーコンストラクタ
not とか and とか basic ぽい
でも is not はいいね
Covariant returns 個人的には欲しかった機能

869 :デフォルトの名無しさん :2020/05/23(土) 07:48:04.30 ID:tXW5Hyqw0.net
.NET5に合わせる感じか
結構良い感じだけど付いていけない老害は騒ぐだろうな

870 :デフォルトの名無しさん (ワッチョイ 032d-ze6u):2020/05/23(土) 11:45:11 ID:USRRjb5n0.net
withってコンストラクタは呼ばれるのかな?

871 :デフォルトの名無しさん (ブーイモ MM26-NLVI):2020/05/23(土) 12:49:31 ID:YCd5Ugn0M.net
便利になるのは嬉しいけど最近、他の言語の後追いが多くねえか?
async/awaitのときみたいな、C#すげえって感動をまた味わいたいものだ

872 :デフォルトの名無しさん (ワッチョイ a3ad-T1cz):2020/05/23(土) 12:58:29 ID:MMWDLofe0.net
何気にトップレベルで直接プログラムが開始できるの嬉しいな。
小さいスクリプト的な使い方で便利になるかもしれん。
dotnet run xxxx.csみたいに出来ると言うことないな。

873 :デフォルトの名無しさん :2020/05/23(土) 14:33:05.59 ID:N5u382BOM.net
>>872
個人的にはやり過ぎだと思うわ
コンパイルが不要になるわけじゃないしちょっと複雑なことしようと思ったら変数宣言も要るからあんまりメリットに思えない
スクリプトならPowerShellでお腹いっぱい

874 :デフォルトの名無しさん (アウアウエー Sa52-NLVI):2020/05/23(土) 14:39:56 ID:wudsPJksa.net
CakeやC# Scriptがすでにあるしなぁ
Record周りの新機能といい、C#チームはTypeScriptを真似しようとしてるのかね

875 :デフォルトの名無しさん (テテンテンテン MMb6-8pht):2020/05/23(土) 14:50:01 ID:rR3WkHU8M.net
今時のWeb開発だとマイクロサービス指向で小物を沢山作ることが多くなってて、
振る舞いを色々備えててカプセル化とかもきっちりやったリッチなモデルよりも、単にデータクラスを関数で弄るだけみたいなスタイルが主流になりつつあるんだよ
Main省略もその文脈で言えば自然
最近のC#周りは完全にアメリカで主流な内製開発に迎合していて、日本のドカタには理解されにくいね

876 :デフォルトの名無しさん (ワッチョイ a3ad-T1cz):2020/05/23(土) 15:00:31 ID:MMWDLofe0.net
>>873
コンパイルがまるで不要かのように振る舞わせたいんだと思うよ。
replできたり、dotnetコマンド見てると。
確かに、csxはどうしたいんだろうな。
個人的にはPowerShellは抵抗感あるかもしれん。

877 :デフォルトの名無しさん (アウアウエー Sa52-NLVI):2020/05/23(土) 16:46:21 ID:wudsPJksa.net
新しいものごとを追求するのはNodeとかにまかせておけばいい
静的並の型安全性、動的の起動速度、モダンな構文、モダンな機能、豊富なパッケージと全てが揃ってるからC#が追いかけても勝ち目ない
C#に求められてるのは業務向けの特性、つまり安定性、安全性、後方互換性、学習の簡単さ(シンプルさとも言える)とかだよ
ポストJavaにふさわしい言語に育ってほしい

878 :デフォルトの名無しさん :2020/05/23(土) 17:07:15.43 ID:MMWDLofe0.net
追いかけてると言うよりも、ニーズがあるんだと思うよ。
実際にはnodeとかより、同じコンパイル言語のkotlinあたりからの機能な印象が強い。
initアクセサとか。
あと、データクラスの
public data class Person(string FirstName, string LastName);
は実際、滅茶苦茶便利だと思う。これもkotlinでもできる。

ポストJavaは言うとおりだと思うけど。

879 :デフォルトの名無しさん (ワッチョイ 93ac-PSKl):2020/05/23(土) 17:21:33 ID:FaM1nYaB0.net
Java並みに実行環境に依存しないの?

880 :デフォルトの名無しさん :2020/05/23(土) 17:39:18.54 ID:MMWDLofe0.net
Java並の求めるレベルがわからんが、OS無しのJavaチップとかまで入れられると完敗だな。
.net coreであれば、LinuxかmacかWindowsなら、ってレベルで良いなら全然大丈夫だし、armでも動くし、
.NET 5なら純正でAndroidやiOSでも大丈夫って言えるんじゃない?

881 :デフォルトの名無しさん (ドコグロ MM03-zJk2):2020/05/23(土) 17:53:05 ID:/js8a+7YM.net
>>876
> コンパイルがまるで不要かのように振る舞わせたいんだと思うよ。
それはあまり無理なくできると思うけど、今の言語仕様のままだと
class Program{
 static void Main() {

 }
}
を書かなくて済むって言うだけだからそんなに嬉しいような気がしないんだけど
> 個人的にはPowerShellは抵抗感あるかもしれん。
まあPowerShellは好き嫌いがあるとは思う
俺も配列周りはちょっと嫌

882 :デフォルトの名無しさん (ワッチョイ 6301-UYz0):2020/05/23(土) 18:28:01 ID:KZXlBn7S0.net
GUI より簡単に目的を達せられるのが
CUIのメリットなのに、何で全部フルスペルで
冗長やねん。これの設計した奴アホか

883 :デフォルトの名無しさん (ワッチョイ d7da-crVl):2020/05/23(土) 18:37:48 ID:yVIq4Zo10.net
もうF#でよくね?

884 :デフォルトの名無しさん :2020/05/23(土) 20:35:16.02 ID:82HS7qFwr.net
普通にC#はすたれていくと思う
他の言語より優れた面がかなり少なくなってきて仕様がファットになりすぎてきてる
それでいて簡便にも書けない

思想が違うのはわかるけど…

885 :デフォルトの名無しさん (ワッチョイ 2702-CPqG):2020/05/23(土) 20:55:20 ID:e9KeJQaL0.net
別に開発環境なんて何でもいいじゃん。
要望があったり、使いやすいものを選択すればいいだけ。
言語スレで言う台詞じゃないけど。w

C# は言語仕様もそうだけど、それ以上に VS が秀逸すぎる。

886 :デフォルトの名無しさん :2020/05/23(土) 21:24:54.50 ID:Gttmmg320.net
>>878
未確認飛行を読むとinitなんかは随分前から課題になってたらしいね

887 :デフォルトの名無しさん :2020/05/23(土) 22:05:55.36 ID:KgH++zHFr.net
c#って簡単なWinFormアプリとUnityくらいしか実際に使われていないよな

888 :デフォルトの名無しさん :2020/05/23(土) 22:09:11.22 ID:V60pRoIY0.net
でもいきなりandroidやwebアプリって心が折れて死にかねんような?

889 :デフォルトの名無しさん (ワッチョイ bea7-Z84n):2020/05/23(土) 22:26:03 ID:+sMsxQfC0.net
やる気の問題じゃ

890 :デフォルトの名無しさん :2020/05/23(土) 22:27:56.42 ID:kbRausRQ0.net
>>887
ねーよ

891 :デフォルトの名無しさん (オッペケ Srbb-crVl):2020/05/23(土) 22:34:26 ID:82HS7qFwr.net
なんだってやる気の問題ならC#使わないでアセンブラででも書けばいい

892 :デフォルトの名無しさん (ワッチョイ 032d-ze6u):2020/05/23(土) 22:38:04 ID:USRRjb5n0.net
Webの学習は心が折れるわ
ASP.Net coreのチュートリアルは長い上、終わった部分にも結構な謎が残る
例えば、データベースサーバをアカウント管理とそれ以外と別にしたい場合、どうするのが正攻法なのか?とか、全然わからん

893 :デフォルトの名無しさん (ワッチョイ 5a01-S/TN):2020/05/23(土) 23:37:02 ID:KnmbZWpz0.net
>データベースサーバをアカウント管理とそれ以外と別にしたい場合、どうするのが正攻法なのか?

それWebもASP.NETも関係なくね?

894 :デフォルトの名無しさん :2020/05/23(土) 23:51:57.43 ID:USRRjb5n0.net
そこを1文切り取られちゃうとそうかもな
どうか、ASP.Net coreを使うときの話でって前提で頼みまんす

895 :デフォルトの名無しさん :2020/05/24(日) 00:05:07.40 ID:gPIK88xN0.net
C#廃れるかな?
ここが巻き返し時だと思うけど。
Windowsで開発するときはC#一択だったのが、他の環境でもC#を選べるようになってきたんだし。
ファットと言うほどファットでないと言うか、必ずしも使わなくても良い機能は確かに増えたけど、使わなければ良いだけだと思うけどな。
Xamarinが.net本家に合流とかときめくけどね。

>>886
そうなんだ?あんまり最近読んでなかったな…

896 :デフォルトの名無しさん :2020/05/24(日) 00:22:33.70 ID:oKSUDOq10.net
廃れるとは全く思わんね
VSに寄るところが大きいけどWindows向けであればこんな簡単に開発できる環境は他にないし

897 :デフォルトの名無しさん :2020/05/24(日) 00:24:21.69 ID:TzQxyCjoM.net
>>894
コネクションを複数使い分けたらいいだけだろ
EFならDbContext分けるだけ
フェデレーションとか使う手もあるが、インフラに変な前提を持ち込むのは個人的にはお勧めしない
管理対象が増えて結果的に余計に面倒になる

898 :デフォルトの名無しさん :2020/05/24(日) 00:37:52.59 ID:j6xo7mIMa.net
廃れるかどうかはAzureで.NETアプリのPaaS環境をどれだけ整備できるか次第じゃないかな
少なくとも今のAzure App Serviceはクソ以外の何者でもないし、
最近のAzureはコンテナに傾倒してるが.NETアプリをコンテナ化するニーズとか皆無なので厳しい状況だが

899 :デフォルトの名無しさん :2020/05/24(日) 02:00:47.62 ID:/j9jSa3n0.net
皆無なわけないやろ

900 :デフォルトの名無しさん (ワッチョイ 6301-UYz0):2020/05/24(日) 04:02:39 ID:0NoVcrVy0.net
>>895
ちょまど事件が無ければなぁ
正式セミナーでやった以上、正式謝罪が無い限り、
まともな会社は手を出さないと思う

901 :デフォルトの名無しさん :2020/05/24(日) 07:59:15.47 ID:JGT9mP/J0.net
ちょまど事件てなに?

902 :デフォルトの名無しさん :2020/05/24(日) 08:52:34.10 ID:gPIK88xN0.net
あれはまぁ確かに。
やらかしたと思ったけど。
ただ、若い姉ちゃんだったから余計に問題になったんだけど、なんとかユーザーグループってえらいおっちゃんにも囲む会とかするぞ。
で、ユーザーグループでの事案を選定の対象外にするのはちょっとお門違いな気がするわ。
正式セミナーではなくて、ユーザグループの勉強会だしな。

>>901
Xamarin勉強会で誕生日祝って、結果的にサイン会とツーショット会になった。

903 :デフォルトの名無しさん (ワッチョイ 33a7-2bic):2020/05/24(日) 09:05:33 ID:HTbn0mhn0.net
救えねぇw

904 :デフォルトの名無しさん (アウアウウー Sac7-vdj3):2020/05/24(日) 09:12:12 ID:XUG+Lg/fa.net
へ?それだけ??
何か刑事事件になるような話だったりパワハラセクハラ方面の倫理的な問題とかでもなくて?
開発技術選定に影響を与えるような話には思えないんだけど
>>900のいう「まともな会社」ってのはこういう話を基準に意思決定するものなのか

905 :デフォルトの名無しさん (ワッチョイ 33a7-2bic):2020/05/24(日) 09:21:00 ID:HTbn0mhn0.net
>>904
えーでも気持ち悪いなぁ
人脈とか本気で考えてそう
公式に情報乗せる気ゼロに見える

セミナーでお金取ろうとか思ってそうキモー

906 :デフォルトの名無しさん (ワッチョイ df63-ONnU):2020/05/24(日) 09:25:30 ID:admc8lsI0.net
https://pbs.twimg.com/media/CyKXMkvUsAAkB_g?format=jpg&name=900x900
まあこういうの見ると気持ち悪いのは確か

907 :デフォルトの名無しさん (ワッチョイ a3ad-T1cz):2020/05/24(日) 09:28:31 ID:gPIK88xN0.net
まあ間違いなく悪ノリはあるんよ。
そればっかりはなんとも言いづらいんだけど。
ただ、Xamarin自体はそう悪いもんじゃないよ。ずっと使ってるけど。

908 :デフォルトの名無しさん (ワッチョイ a3ad-T1cz):2020/05/24(日) 09:30:09 ID:gPIK88xN0.net
>>904
一部のコミュニティに関する事案で、それも半分以上感情論だから、
うちは一切気にしてないな。

909 :デフォルトの名無しさん :2020/05/24(日) 09:33:22.79 ID:0NoVcrVy0.net
https://i.imgur.com/7OrnaHm.jpg

910 :デフォルトの名無しさん :2020/05/24(日) 09:34:55.56 ID:gPIK88xN0.net
>>909
これちょまどもタブチさんも関知してないところが可哀想だったはずよ。
取り巻きの問題だと思うが。

911 :デフォルトの名無しさん :2020/05/24(日) 09:40:59.00 ID:0NoVcrVy0.net
別に本人が悪いとは言っとらんでそ。

JXUGのポジションがおかしい
MS系のセミナーなんて品川や新宿でも
やっていたんだが(SE主催とか本社主催とか)、
主催者が俺達はお前らより偉い。
理由は神に近いからだってスライドあげて
同意を得られると思う?

912 :デフォルトの名無しさん :2020/05/24(日) 09:44:09.04 ID:HTbn0mhn0.net
>>910
でもね
みんなやたらと情報出て来ないし
割りかし本気でそういう意図なの?って思ったんだよ

俺らと仲良くしないとxamarinでの開発はできないからね

っていう意図に感じた
その後に気持ち悪いケーキカットでしょ?
ああ、そう、そうなのね・・・

913 :デフォルトの名無しさん (アウアウウー Sac7-vdj3):2020/05/24(日) 09:47:54 ID:XUG+Lg/fa.net
えっと、気持ち悪いのはXamarinコミュニティ界隈ってことなのね?
>>905の書き込みのほうがよっぽどネットストーカーというか気持ち悪いアンチっぽく見えたんだけど

ていうかC#が廃れる原因がちょまどって話じゃなかったのね、誤読してたわ
Xamarinは使ったことないから自分にはわからん

914 :デフォルトの名無しさん :2020/05/24(日) 09:50:45.90 ID:HTbn0mhn0.net
>>913
俺はMSの方針だと思ってるけどどうだろ?
そこはコミュと本体は別れてるのかな?
そうでないのかな?

915 :デフォルトの名無しさん :2020/05/24(日) 09:51:50.80 ID:gPIK88xN0.net
まあJXUGに関してはどうとも言えんけど、別に喧嘩しながらやる必要もないし、逆に仲良くしながらやる必要もないぞ。
Xamarin普通に使ってるけど、とくに利益相反は無い。
Xamarin自体は良いもんだから、それが誤解されるのはちょっと悲しいわ。

あんまり変な色眼鏡で見ないほうがいいと思うの。

916 :デフォルトの名無しさん (ワッチョイ a3ad-T1cz):2020/05/24(日) 09:53:40 ID:gPIK88xN0.net
坊主憎くて袈裟まで憎いになったら、ほんとつまんない結果にしかならんよ。

917 :デフォルトの名無しさん :2020/05/24(日) 09:58:48.44 ID:0NoVcrVy0.net
>>914
うちら近辺も公式に否定されなかったから、
上からそういう方針なんだなって判断された模様

918 :デフォルトの名無しさん :2020/05/24(日) 10:03:40.11 ID:gPIK88xN0.net
いちいちユーザーグループのいち登壇者のいちスライドに対して反論したりしてたらきりないっしょ。
なんか、よっぽど嫌いなんだなとしか言いようがないと言うか。

ちょっとその反応度の高さに引くわ。
ユーザグループとかああいうノリ自体、輪に入る、聞き流すという行為が苦手なのかね。

919 :デフォルトの名無しさん :2020/05/24(日) 10:05:41.83 ID:DCX/O0u/a.net
WebView2がC#でも使えるようになったけどフォームに貼り付けて実行するだけで
ヌルポになるんだけどなぜだろう

920 :デフォルトの名無しさん (ワッチョイ 9a1a-fHJf):2020/05/24(日) 10:19:41 ID:Zr7A90Cs0.net
>>909
うわ吐きそう

921 :デフォルトの名無しさん (アウアウウー Sac7-8pht):2020/05/24(日) 10:20:21 ID:N7cNYcK3a.net
>>918
ちょまど祭り上げはde:codeの公式セッションなんかでも結構やってるよ
AWSやGCPのイベントにも何度か参加したけど、それらに比べても明らかにノリが気持ち悪いのは残念ながら事実
あれ米国MSのゲストも変な顔してたしいい加減怒られるんじゃないか

922 :デフォルトの名無しさん (アウアウエー Sa52-NLVI):2020/05/24(日) 10:20:50 ID:q/17zy3Ka.net
新しいUIフレームワークでるしXamarinも終わりでしょ

923 :デフォルトの名無しさん (ワッチョイ 6778-crVl):2020/05/24(日) 10:36:01 ID:egXQI+sn0.net
あれはXamarinの後継だよ

924 :デフォルトの名無しさん (オッペケ Srbb-jY78):2020/05/24(日) 11:24:16 ID:390U+iwor.net
>>909
これは気持ちわりい!!!!!

925 :デフォルトの名無しさん :2020/05/24(日) 11:38:45.43 ID:X8UkIXV20.net
何の話だと思って調べてみたら、男ばかりのオタコミュあるあるやん
持ち上げにノルひととノラナイひとで対立させた以上、これをサークルクラッシュと呼ぶんだよなぁ・・・

926 :デフォルトの名無しさん (アウアウウー Sac7-lIs9):2020/05/24(日) 13:20:51 ID:GPV2jvNGa.net
日本人のメンタリティーの基盤ってつくづく「村人」なんだねw
どのセクターもみんな「村」の中の人間関係に対する関心が異様に高い。
横溝正史の小説の世界だな。

日本人のこういうところ、他人事として俯瞰してみたら陰湿でダセーと思う人の方が
多いはずだと思うんだけど

927 :デフォルトの名無しさん :2020/05/24(日) 13:45:48.89 ID:vlMud3Add.net
>>921
そうなのか。
まあ怒られるなら怒られてサクッと話を終わらせてほしいな。
関係ないのにXamarinが叩かれるのはかなわん。
好きなのに。

>>922
あれはむしろXamarinが本流になるような感じよ。

928 :デフォルトの名無しさん :2020/05/24(日) 15:13:53.64 ID:0NoVcrVy0.net
名前を変えてくれないと、提案書書いても
通らないので困る。

929 :デフォルトの名無しさん (ワッチョイ a3ad-T1cz):2020/05/24(日) 16:23:34 ID:gPIK88xN0.net
よくそんな基準でNG出るなぁ。
結構不思議かもしれん。
MSが明確にあのイベントのあの取り組みを後援したならそりゃNG出るだろうけど、特に止めなかった程度でコンプラ違反として扱うのはどうかと思うが。
単純に興味があるが、MSがなんていう声明を出せば良いんだろう?
別に庇ってるわけじゃなくて、一部に悪ノリがあることはわかってるが、我々の関知するべきものではないという判断なんだが。

うちは普通に使うべきシーンでは使ってるけどな。
というか技術選定にコミュニティも何も無いと言うか。
便利なのにもったいない。

930 :デフォルトの名無しさん :2020/05/24(日) 17:03:31.11 ID:x8aMDsmma.net
J●UGってロクなの無いな

931 :デフォルトの名無しさん (アウアウウー Sac7-lIs9):2020/05/24(日) 21:48:37 ID:GPV2jvNGa.net
ちょっと質問

SynchronizationContext.Sendって引数で渡したデリゲートが同期コンテキストのスレッドで
実行完了するまでブロックされるって理解で合ってたっけ?

932 :デフォルトの名無しさん (ワッチョイ 33a7-2bic):2020/05/24(日) 21:50:19 ID:HTbn0mhn0.net
わかんねぇの使うなよ初心者
俺も知らねーけど

933 :デフォルトの名無しさん (ワッチョイ 032c-BHqY):2020/05/24(日) 22:50:13 ID:vethg+c+0.net
厳密な考え方では違うのかもしれんが
Send/Postが同期/非同期に対応してるから完了までブロックと考えていいよ
WinFormなんかは単純にInvoke/BeginInvokeで実装してるし

934 :デフォルトの名無しさん :2020/05/24(日) 23:16:15.55 ID:GPV2jvNGa.net
>>933
ありがと!

935 :デフォルトの名無しさん (ワッチョイ 032d-ze6u):2020/05/25(月) 16:52:16 ID:CLMMg9Ns0.net
すまんが、継続的に動かしたいタスクの抜け防止ってどうやるの?
素人考えでこんなのをタスク処理の最後に入れてるんだけど・・・・もっとまともな書き方あるのかな
while (cancellationToken.IsCancellationRequested == false){
await Task.Delay(1000);
}

936 :デフォルトの名無しさん (アウアウウー Sac7-8pht):2020/05/25(月) 17:22:15 ID:83qlHvUWa.net
やることが無くなったんなら無駄に待機しないでそのまま終了したらいいだろう
何がしたいのかさっぱり分からん

937 :デフォルトの名無しさん (ワッチョイ 9a84-BCZG):2020/05/25(月) 17:24:53 ID:qg6WFaTF0.net
別に問題ないと思うけど
タスクの最後にwhileループって言うのが良く意味がわかんないけど
バックグラウンドにしたい処理をwhileの中に記述して「IsCancellationRequested」が
「false」な間whileで無限ループが普通じゃないかな
あとDelayが1秒ならばどうでも良いのかもだけど、Delayに「cancellationToken」を
指定してエクセプションをキャッチするようにしておくと、Delay時間待たなくても
すぐに処理終われるとか

938 :デフォルトの名無しさん (ワッチョイ 032d-ze6u):2020/05/25(月) 17:39:01 ID:CLMMg9Ns0.net
ありがとう!
WebSocket通信のタスクで終わられちゃ困っていて、タスクが終わられると困るだけでwhileで回すものもないし・・・・これで凌いでたよ
でもこんなの見ないってことは、もっと根本的に違った別な正攻法があるのかな

939 :デフォルトの名無しさん (ワッチョイ 6301-UYz0):2020/05/25(月) 17:49:37 ID:c+rZ/LtC0.net
win32api的には、WaitForSingleObject
かな

940 :デフォルトの名無しさん (ワッチョイ 4e2c-5qFb):2020/05/25(月) 18:22:47 ID:gis+qwRr0.net
JavaScript で非同期通信は、callback 関数を指定して待つだけ。
タイムアウト時間が過ぎたら、エラーになるだけ

while みたいな、busy loop を使わない。
CPU が100% に張り付いてしまうから

941 :デフォルトの名無しさん (ワッチョイ 032c-BHqY):2020/05/25(月) 20:44:15 ID:/pdJGglT0.net
通信のタスクってのがよく分からんよ
インスタンスとタスクをごっちゃにしてるように感じる

942 :デフォルトの名無しさん (アウアウウー Sac7-lIs9):2020/05/25(月) 21:43:15 ID:GUauqgR5a.net
まあ設計というかロジックに問題があるようにしか正直聞こえないけど、
そこはいいでしょ別に

943 :デフォルトの名無しさん (ワッチョイ fa3c-bAg/):2020/05/25(月) 22:31:36 ID:3aP0Z4na0.net
つーか、Monoで学ぶC#オブジェクト指向とか言う本、わざわざMonoで学ばんでも普通のVSでマナびゃいい内容なんすけど。

MonoでやるならLinuxGUI作る方法でも教えてくれる方がよほどいい。

944 :デフォルトの名無しさん (ワッチョイ fa3c-bAg/):2020/05/25(月) 22:34:13 ID:3aP0Z4na0.net
マジでC#でLinuxアプリある程度で良いんで作れるようにして欲しい。

QtとかGtk+とかもうね、泣けてキル。

945 :デフォルトの名無しさん (ワッチョイ fa3c-bAg/):2020/05/25(月) 22:35:21 ID:3aP0Z4na0.net
Xamarinって情報量とか少なそうだけど、まともにスマホアプリ作れるんですか?

迷ってるなら、Javaでやったほうがいいですか?

946 :デフォルトの名無しさん (ワッチョイ a3ad-T1cz):2020/05/25(月) 22:40:48 ID:UFuP99WV0.net
>>945
使ってるし、まともにアプリ作れるよ。
任天堂も一つのアプリで使ってるらしいけど。

俺はXamarin.Formではなくて、Xamarin.Android使ってるけど、ほとんど普通のAndroid開発の言語がC#になった感じで、特に固有の情報は必要でない。
悩むんならJavaでやるよりkotlinでやったら良いんじゃない?

947 :デフォルトの名無しさん (ワッチョイ 6301-UYz0):2020/05/25(月) 22:42:27 ID:c+rZ/LtC0.net
skiasharpが公式。
こんなのでどうしろと。

で例の事件に戻る

948 :デフォルトの名無しさん :2020/05/25(月) 23:21:56.50 ID:UFuP99WV0.net
XamarinはFormsだけじゃないよ。
別に無理にSkiaSharp使わなくても。

例の事件引きずる割にはあんま知らんのな。

949 :デフォルトの名無しさん :2020/05/26(火) 02:34:10.49 ID:O4WcavVK0.net
skiasharpはxamarinの一部だw

950 :デフォルトの名無しさん :2020/05/26(火) 07:56:44.84 ID:HYoEE9nX0.net
意識せずに使えるって言ってんのに。
どうしてもアンチしたいならそう言いなよ。

951 :デフォルトの名無しさん :2020/05/26(火) 10:55:16.55 ID:O4WcavVK0.net
無理筋の擁護は迷惑だから止めなよ。

個人で全ての仕様を決定して良いならそうするさ、
問題なのはスポンサーを説得出来ない事だよ。

952 :デフォルトの名無しさん :2020/05/26(火) 11:17:56.86 ID:i0q/U3sp0.net
unityできればc#もできますか(´・ω・`)

953 :デフォルトの名無しさん :2020/05/26(火) 11:24:23.50 ID:G8RqiJh80.net
C#できないとunityもできません

954 :デフォルトの名無しさん :2020/05/26(火) 11:55:03.61 ID:gxc82pqW0.net
Unityで造った3Dゲームを
C#はそのままでUnityじゃなくてVC#だけの環境でコンパイルして遊べますか?

955 :デフォルトの名無しさん :2020/05/26(火) 11:56:54.86 ID:6ileE2Zca.net
できません

956 :デフォルトの名無しさん (スププ Sdba-T1cz):2020/05/26(火) 14:42:23 ID:wUEZ7fxyd.net
擁護とか言われるとなんかモヤるわぁ。
ああいうのは良くないと認めた上で、Xamarin自体は悪くないよと言ってるんよ。

スポンサーを説得できないのはまた別問題じゃん。
そこまでして使うもんではないと言う判断も一つ、
提案自体へのニーズというかXamarinがふさわしいと思うポイント一つ、
提案と提案力の問題が一つ、
色々合わさって技術選定するんだから。

主観的に気持ち悪いしスポンサーにオッケーって言わせられないから使わないよーってのは、個人の能力や主張であって、それを理由にされるのはなんか違う気がするわ。
一時期のアンチMSの人たちと変わらん精神性に見える。

957 :デフォルトの名無しさん (ワッチョイ 6301-UYz0):2020/05/26(火) 14:53:44 ID:O4WcavVK0.net
ITバブルの会合にヘリコで乗り付けて、
都知事激怒させて資金注入中止させた
事件があっただろ。それと同じ。

軽薄な連中が遊び半分にやってるプロダクトと
レッテルを貼られたから大規模開発の
予算が取れない。だからせめて名前を変えてくれないと未来は無いって言っているの。

内容については言及していない。

958 :デフォルトの名無しさん (ワッチョイ ba52-NhWw):2020/05/26(火) 15:54:06 ID:gtoMtdIk0.net
そのレッテルってお前さんの周辺のごく狭い範囲でのみ認識されてるローカルな話なんでないの?
世間一般でもそうなのか?

959 :デフォルトの名無しさん (スププ Sdba-T1cz):2020/05/26(火) 15:57:37 ID:wUEZ7fxyd.net
レッテルを今も貼り続けてるのは自分たちじゃん。
その調子だと名前変えてもどうせ未来は理由を見つけるんでしょ。

そもそも、個人的にも使ってるが、仕事でもそれなりに大規模開発の案件で何プロダクトも予算どころか本番投入できてるからその主張が謎なんよね。

まあもう疲れたし良いわ。
何言ったって無駄っぽいし。

960 :デフォルトの名無しさん (スププ Sdba-T1cz):2020/05/26(火) 15:59:22 ID:wUEZ7fxyd.net
>>958
それしか見る気ないか、気づいてないんでしょ。
スポンサーが、とか言ってるし。
時代は変わったと言う気も無いし、調べる気も無いってこった。

961 :デフォルトの名無しさん (ワッチョイ cb59-x2L0):2020/05/26(火) 16:03:44 ID:Y1qBNpza0.net
どうでもいい話いつまでやってんの?
否定されても自分が便利と思うなら使ってればいいじゃん。

962 :デフォルトの名無しさん (ワッチョイ 9a6a-OZlI):2020/05/26(火) 16:20:40 ID:a4j1g6SW0.net
そういや、次スレどうすんの?
ワッチョイない141を使い終わってから?

963 :デフォルトの名無しさん (ワッチョイ 032c-BHqY):2020/05/26(火) 16:28:04 ID:4+roRX2l0.net
ワッチョイ有無で並立していいらしいからいつも通り980で新スレ立てるだけだよ

964 :デフォルトの名無しさん (ワッチョイ 9a6a-OZlI):2020/05/26(火) 16:31:27 ID:a4j1g6SW0.net
なるほどありがとう

965 :デフォルトの名無しさん :2020/05/26(火) 16:59:22.59 ID:UeJz6oGUM.net
イベントハンドラがよくわかりません。

PaSoLiにかざされたFelicaの内容をForm上に表示するプログラムを作成しています。
かざされた、というのを判定するためにはどういうイベントハンドラの設定が必要ですか?

ひとまずFormにタイマーを設定して、時間経過毎にPaSoLiの状態をチェックする…というのを考えたのですが、
他に何かいい知恵がありましたら教えてください。

よろしくお願いします。

966 :デフォルトの名無しさん :2020/05/26(火) 17:05:55.42 ID:O4WcavVK0.net
>>965
どこのカードリーダとどのような接続
をしている?

開発キットが付いて来なかった?

967 :デフォルトの名無しさん :2020/05/26(火) 17:14:46.85 ID:UeJz6oGUM.net
>>966
Sony PaSoRi 3.0 と Win10機をUSBで接続しています。
開発キットは…使っていません。最終的に簡単なタグを作成したいので、WinSCardをラップし使用しています。
(Sonyの無料スターターキットは書き込みの関数がなかったので…)

情報後出しになってすみません…

968 :デフォルトの名無しさん :2020/05/26(火) 17:27:47.85 ID:O4WcavVK0.net
SCardGetStatusChange()で変化を検知して
delegate でUIにコールバックするか
イベントを使うかかな

969 :デフォルトの名無しさん :2020/05/26(火) 17:40:48.36 ID:XnLSD37X0.net
>>938
うーーん、処理はしないけどメソッドを抜けないようにする意味が分からないのは
そのままなんだけど、ずーーーとそこでとまっていれば良いのであれば「Delay」の
引数を「-1」にすればwhileで回す必要ないよ

で、whileで回すのをあまり見ないのは、みんな大好き美しいプログラミングだと
空ループはシステムに任せて、各種イベントで処理の振り分けを行って必要な部分
だけを非同期処理ってやり方をするので、自分でループ処理を用意する必要が
ないってのが基本

でも、実際にはあらゆる処理に自分が必要とするイベントが実装されているとは
限らないので、独自のイベントを返してくれる非同期処理を作成するときには
なんらかのループ処理が必要になる
ただ、サンプルレベルのプログラムだとそこまで実装をしている例は冗長なので
書いている人が少ないので、実用的なアプリケーションのソースコードとかを読ま
ないとループ型の非同期処理って見かけないだけだと思うけど

970 :デフォルトの名無しさん (アウアウクー MMfb-egCw):2020/05/26(火) 17:52:50 ID:UeJz6oGUM.net
>>968
なる…ほど…?

…正直よく理解できてないのですが、その2つキーワードにして調べてみます。
ありがとうございます。

971 :デフォルトの名無しさん (ワッチョイ a302-crVl):2020/05/26(火) 22:40:42 ID:nfOZPr0+0.net
Visual Studio2019を更新したら今まではメソッドの文字色が黄色だったはずが白くなってしまったのですが、これは更新内容に含まれてる事なんでしょうか?

972 :デフォルトの名無しさん :2020/05/26(火) 22:53:49.21 ID:nfOZPr0+0.net
連投すみません
ローカル変数は水色、外のフィールド変数は白であったはずがローカル変数も白になっているなど、関数の色以外にも色々変わってしまったようです・・・。
すごく見づらいのですがこれは更新時にテーマの設定ファイルか何かが破損してしまったのでしょうか?

973 :デフォルトの名無しさん (ワッチョイ a302-crVl):2020/05/26(火) 23:13:17 ID:nfOZPr0+0.net
度々すみません、自己解決しました。
オプション -> テキストエディタ -> C# -> 詳細 -> エディターの配色をVisual Studio 2019にしたら元に戻りました。
アプデを行ったらなぜかエディターの配色がVisual Studio 2017になっていたようです

974 :デフォルトの名無しさん (ワッチョイ 9719-qwq+):2020/05/26(火) 23:25:29 ID:G8RqiJh80.net
俺も配色戻っててイラッとした

975 :デフォルトの名無しさん (ワッチョイ 8b01-I6Yg):2020/05/26(火) 23:27:51 ID:gXLmrSCn0.net
俺もだった アプデ後なんか見辛いなーって思ってたありがとう
ほかにも変な設定に勝手に変えられて気づいてないところありそうだ

976 :デフォルトの名無しさん (ワッチョイ da89-crVl):2020/05/26(火) 23:29:37 ID:pUNOqgdh0.net
Name = 太郎, Age = 27, Score = 92
Name = 次郎, Age = 23, Score = 89
Name = 太郎, Age = 27, Score = 100
Name = 三郎, Age = 20, Score = 95
Name = 次郎, Age = 23, Score = 61

このようなListがあり、以下のように集計したいのですが、
LINQで可能でしょうか

Name = 太郎, Age = 27, Score = 192
Name = 次郎, Age = 23, Score = 150
Name = 三郎, Age = 20, Score = 95

977 :デフォルトの名無しさん (ワッチョイ 1aad-cFKA):2020/05/26(火) 23:32:01 ID:xP2EobkM0.net
>>976
できるよ

978 :デフォルトの名無しさん (ワッチョイ 1aad-cFKA):2020/05/26(火) 23:34:30 ID:xP2EobkM0.net
https://www.sejuku.net/blog/47220#Sum

979 :デフォルトの名無しさん :2020/05/26(火) 23:55:57.69 ID:pUNOqgdh0.net
>>978
ありがとうございます
リンク先の例でいうと、ClassName(やその他の項目もあればそれ)も表示させたい場合はどのようにすればいいですか?

980 :デフォルトの名無しさん (ワッチョイ 1389-moxv):2020/05/27(水) 00:07:17 ID:Pggemlyq0.net
>>979 自己レスですが、以下の記述でいけました
ありがとうございました
var query = result
.GroupBy(x => new { x.Name, x.ClassName })
.Select(x => new Test() { Name = x.Key.Name, Points = x.Sum(y => y.Points), ClassName = x.Key.ClassName });

foreach (var group in query)
{
Console.WriteLine($"{group.Name}の合計点数:{group.Points}点;ClassName{group.ClassName}");
}

981 :デフォルトの名無しさん (スップ Sdf3-Tvg7):2020/05/27(水) 00:15:29 ID:DUgyxf22d.net
>>980
キーが1つならGroupbyでわざわざ匿名クラス使う必要ないんじゃね?

982 :デフォルトの名無しさん :2020/05/27(水) 02:33:41.36 ID:QazEq+CO0.net
WinForms版WebView2に、WebBrowserのObjectForScripting相当の機能があれば教えてください。

983 :デフォルトの名無しさん :2020/05/27(水) 04:28:54.83 ID:Z8ofXxl7r.net
ゴミ品質の宝庫サムライのリンクつけるなよ

984 :デフォルトの名無しさん :2020/05/27(水) 07:23:43.27 ID:Bvk+i7ky0.net
学校でCを習っていながら実務ではjavaとC#しかやったことがありません
お陰でポインタとか実務で使ったことが無いのですが、ポインタの考えを活用するシュチュエーションはC#開発を進めると出てくるでしょうか?

985 :デフォルトの名無しさん :2020/05/27(水) 07:52:45.69 ID:zpQipMg10.net
初心者ですけど、Win32API使う時にCの知識が役にたった

986 :デフォルトの名無しさん :2020/05/27(水) 09:08:23.02 ID:sy4nr1lC0.net
>>980
次スレよろ

987 :デフォルトの名無しさん :2020/05/27(水) 09:13:12.39 ID:H3YZJB5x0.net
>>984
基本出てこない
C#でポインタは使えないわけではないが使わないで実装できる手段がたいてい存在する
出てきてもC/C++ほど活用するケースは少ない

988 :デフォルトの名無しさん :2020/05/27(水) 09:19:38.91 ID:Z8ofXxl7r.net
>>984
画像編集でピクセル加工処理するときに使った

989 :デフォルトの名無しさん :2020/05/27(水) 09:37:11.33 ID:sy4nr1lC0.net
>>981
ClassName引き出すのはどうするんだろ?

990 :デフォルトの名無しさん (アウアウウー Sac5-5vhd):2020/05/27(水) 09:58:43 ID:liCJZGAla.net
必要ない
x => x.Name でいい

991 :デフォルトの名無しさん :2020/05/27(水) 10:10:49.20 ID:wHIUQvvs0.net
次スレ立てるね

992 :デフォルトの名無しさん :2020/05/27(水) 10:15:14.28 ID:wHIUQvvs0.net
次スレ
ふらっと C#,C♯,C#(初心者用) Part148
http://mevius.5ch.net/test/read.cgi/tech/1590542079/

993 :デフォルトの名無しさん :2020/05/27(水) 10:16:57.67 ID:wHIUQvvs0.net
あ、ごめんワッチョイ入れ忘れたっていうか注意文言部分全部入れ忘れた
立て直しお願いします

994 :デフォルトの名無しさん :2020/05/27(水) 10:18:24.20 ID:wHIUQvvs0.net
-----------------------------------------
!extend:checked:vvvvv:1000:512
!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

995 :デフォルトの名無しさん (ワッチョイ 9394-J1D8):2020/05/27(水) 10:49:27 ID:n9K/Qc/t0.net
先生!

MFCのAfxBeginThreadでUARTの通信スレッド起動していましたが、C#だとどうやるのですか?

スレッドは外部変数でループを抜けて終了する仕様でループ内は受信したデータをファイルにロギングするだけです。ループ内はSleep(1)で若干負荷を下げてます。

996 :デフォルトの名無しさん :2020/05/27(水) 11:46:42.78 ID:VAOyF+uoa.net
>>995
ループでも別にいいと思うけど、ポーリングなら素直にタイマー使った方が簡単じゃないかな

997 :デフォルトの名無しさん :2020/05/27(水) 17:42:50.18 ID:oFYn/j/i0.net
>>905
SerialクラスのDataReceivedイベントを使えば特にスレッドを切らなくてもデータ
来るたびに特定の処理をさせるみたいなこと出来るけど

998 :デフォルトの名無しさん (ワッチョイ dbda-+GDy):2020/05/27(水) 18:10:33 ID:IQNb7uUG0.net
質問いいですかぁ?

999 :デフォルトの名無しさん (ワッチョイ 4101-ZnxB):2020/05/27(水) 18:16:02 ID:JktWhmx60.net
いいよ

1000 :デフォルトの名無しさん (アウアウクー MM0d-DHkq):2020/05/27(水) 18:18:54 ID:amwFvGuGM.net
では早速

1001 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1001
280 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★