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

■ このスレッドは過去ログ倉庫に格納されています
2020/02/19(水) 17:25:41.55ID:IsrGexiaF
!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
2020/02/20(木) 07:23:34.72ID:W2AwCBod0
息をするように自演するやついるんだよな
プログラマというか技術職自体向いて無いからさっさと立ち去ってほしい
9デフォルトの名無しさん (アウウィフ FFe7-IPX/)
垢版 |
2020/02/20(木) 10:30:18.93ID:sbHTvmgoF
>>6
新型チュンコロ感染と一緒で常在化しててもただちに影響はありませんな
10デフォルトの名無しさん (アウアウウー Sae7-icJa)
垢版 |
2020/02/20(木) 12:38:26.36ID:M4vgGbqza
言っても無駄だけど、普通の人は2chくんだり、特にこんな人口が少ない板の
人口が少ないスレで「自演」とやらをやりたいなんて動機を持ってない。

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

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

日本って地方の条例どころか国の法律がこういう目的や実効性を吟味せずに
感情論で制定される感情論の国なんだよね。韓国と100%同じ
11デフォルトの名無しさん (ラクッペ MM87-wHG4)
垢版 |
2020/02/20(木) 12:40:53.51ID:lwE/hX+lM
ワッチョイのどこが有害なのか
なにもしなきゃ無害だろう
12デフォルトの名無しさん (アウウィフ FFe7-IPX/)
垢版 |
2020/02/20(木) 12:43:48.28ID:sbHTvmgoF
防衛する側としてはワッショイのおかげで見なくて済むから気が済むのは確か
2020/02/20(木) 13:22:03.09ID:mvd02NB50
家に鍵かけたって本気の泥棒はどこからでも入ってくる
だから鍵なんて無くすべきだって主張?

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

デメリットがあるなら効果のある範囲とデメリットの内容の天秤になるのはわかる
そしてその天秤具合は人それぞれなので議論しても答えは出ない宗教論争と一緒
14デフォルトの名無しさん (ワッチョイ cf2d-z3z/)
垢版 |
2020/02/20(木) 14:26:02.37ID:0JvS6qsQ0
変な書き込みがあっても、普通は気にしなけりゃいいだけだろう
だけど統合失調症の人には、そういう書き込みが目に入るだけで発狂しちゃうんだろうな
ワッチョイは統合失調症の閲覧者のためにあるようなもん
2020/02/20(木) 14:37:30.03ID:ZbpWL9ae0
毎日IDでNGに放り込むか、週一でワッチョイでNGに放り込むかの違いしかないなw
2020/02/20(木) 15:19:48.73ID:IVVK5qcRa
道端に落ちてるゴミや犬の糞は見たくない。掃除するのが毎日なのか週一ですむのかなら、後者の方がありがたいというのは普通の感覚だと思うぞ。
2020/02/20(木) 15:20:24.08ID:mvd02NB50
ワッチョイって後ろ4文字は1週間でもかわんないんじゃなかった?
いつも後ろ4文字でNG入れてるわ
2020/02/20(木) 15:36:09.44ID:jdtbGwr30
相談させてください。

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)」で適切でしょうか。

どうぞよろしくお願いいたします。
2020/02/20(木) 15:49:35.66ID:huOL9BGI0
https://referencesource.microsoft.com/#PresentationFramework/src/Framework/System/Windows/Thickness.cs,109d8135ab5a3074
Left ^ Top ^ Right ^ Bottomだから全部同値なら0
手抜き実装ではあるが別に不具合というわけでもないな
2020/02/20(木) 16:01:01.11ID:jdtbGwr30
>>19
ありがとうございます。

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

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

よろしくお願いいたします。
2020/02/20(木) 16:23:37.51ID:huOL9BGI0
https://github.com/dotnet/coreclr
.NET CoreのソースだけどValueTupleなら.NET Frameworkでもそのまま持ってきてるんじゃないかな
2020/02/20(木) 17:21:18.55ID:Bpu8FWYY0
>>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推奨
2020/02/20(木) 17:37:44.28ID:jdtbGwr30
>>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()))
と書いたほうがコードの目的が分かりやすいかなと思いました。

それではこのあたりで失礼いたします。
ご親切にどうもありがとうございました。
2020/02/20(木) 18:09:06.51ID:DIV2RvDKa
Hello!
って表示された…!
25デフォルトの名無しさん (ワッチョイ 2335-wHG4)
垢版 |
2020/02/20(木) 18:57:40.71ID:Pb7WanUc0
タプルに一括で関数適用する文法でもあるのかと思った
2020/02/20(木) 19:19:27.62ID:2rLj+nIZM
>>15
結構でかくね?
2020/02/21(金) 03:13:35.78ID:xBmtUMMla
石取りゲームできた…!
日記ですみません
28デフォルトの名無しさん (ワイーワ2 FFdf-HF0o)
垢版 |
2020/02/21(金) 12:21:46.43ID:5cQWFY2cF
おめ
29デフォルトの名無しさん (ラクッペペ MM7f-wHG4)
垢版 |
2020/02/21(金) 12:39:57.96ID:Z2lAagbxM
Twitterでやれ
30デフォルトの名無しさん (JP 0Hdf-Hkjj)
垢版 |
2020/02/21(金) 15:08:34.18ID:4h0xZa5sH
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.59ID:7CwG8WAb0
各DIコンテナがやってくれる注入作業って、どういう仕組みで行われているの?
インターフェイスやらコンストラクタの引数やらをリフレクションで取ってきて、注入してるのかな?
2020/02/22(土) 16:57:57.77ID:nfgptzfk0
>>31
基本的にはそう
型情報を取得してActivator.CreateInstance()みたいのでインスタンス生成して渡してる
33デフォルトの名無しさん (ワッチョイ cf2d-z3z/)
垢版 |
2020/02/22(土) 18:39:28.34ID:7CwG8WAb0
>>32
ほんと、不思議で不思議でたまらなかったわ
ありがとう
2020/02/22(土) 19:49:40.56ID:CYM04x9q0
OSSの中身確認するのが一番早いよ
入り口さえわかれば後の処理を追うのは簡単
35デフォルトの名無しさん (ラクッペペ MM7f-wHG4)
垢版 |
2020/02/23(日) 00:10:20.60ID:wbGqawi7M
くだらねえ������
2020/02/23(日) 11:37:03.29ID:h4Sd0hn50
すいません。名前の付け方で悩んでます
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なんて名前でいいものか・・・
2020/02/23(日) 11:42:20.62ID:h4Sd0hn50
逆だった
WifiCtrl
でいいものか・・・
2020/02/23(日) 12:15:23.08ID:U1SoOOADa
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.69ID:GBgAuRZAa
>>36
名前が適切かどうかはそれだけの情報では誰も判断できないでしょうw

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

読み出し専用のプロパティーにした方がいいと思う。
シングルトンにする必要性は個人的には疑問
2020/02/23(日) 15:19:44.33ID:mVzZkmaX0
>>36
変数名を単体で悩むより、名前空間を適切に使えばいいのでは?
2020/02/23(日) 16:11:03.65ID:HGdGso/xM
シングルトンかっこいいじゃん
2020/02/23(日) 16:40:17.12ID:qRVHuH/p0
わかる
2020/02/25(火) 12:06:33.83ID:K+FIgRaj0
シングルトンって利点がよく分からない
それもうstatic classで良くない?って思うんだけど継承とかインターフェースのためだけにそうしないだけ?
44デフォルトの名無しさん (アウウィフ FFe7-IPX/)
垢版 |
2020/02/25(火) 13:15:34.49ID:FzVRg2bhF
static Struct
2020/02/25(火) 13:22:35.51ID:5IAL5cM20
singletonならインスタンス生成タイミングを制御できる利点がある
初期の立ち上げを極力軽くしたい時とか
そういうのあんま気にしなくていい環境ならstaticでもいいかと
2020/02/25(火) 13:30:56.90ID:rfLfmv0Z0
>>43
デバイスなどのアクセスでインスタンス2つ持ちが意味無いかバッティングするから1つにしたいとき?

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

一応やっといてバッティング対策必要だったらやる感じで?
(まあ、だいたいライブラリ側でやってくれっけど)
2020/02/25(火) 14:03:18.98ID:K+FIgRaj0
>>45
static classだって静的コンストラクタで実質同じ事できるじゃん
_instance ?? (_instance = new Class())って形と実質同じだよね
まぁ継承使えないとか制約多いからってことなんだろうけど、staticおじさんアレルギーなのか知らないけど死んでもstaticは使わないって風潮もどうかと思う昨今
48デフォルトの名無しさん (アウアウウー Sae7-icJa)
垢版 |
2020/02/25(火) 14:12:26.94ID:o7stKPona
ほとんどの場合ちょっと大げさ過ぎる感じなんだよねシングルトン。

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

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

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

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

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

だからstaticクラスでシングルトンも個人的にはちょっと気持ち悪く感じる
2020/02/25(火) 14:16:11.11ID:9IyrqwVFM
激しく同意
シングルトンを使う奴はほぼ例外なく「インスタンスを唯一に制限するため」を言い訳にして、その実はグローバル変数が欲しいだけ
実際にはインスタンスが一つでなければならないクラスなどほとんどない
一つしか作れないのではなく「アプリで一つしか必要ない」のであれば、>>48のようにstatic寄せ集めクラスを作るべき
2020/02/25(火) 14:33:00.25ID:oSeHo6cg0
>>47
>static classだって静的コンストラクタで実質同じ事できるじゃん
static classのコンストラクタがいつ実行されるかはコントロールできないよ

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

逆にシングルトンは面倒くさいから
static classで間に合うユースケースならstatic使っとけばいい
2020/02/25(火) 15:01:43.07ID:IPCihoyTM
おかしい…「モダン言語と現行ライブラリ下においてはシングルトンパターンを適用することは通常開発下ではまずないが」という大前提がまったく共有されていない…
もしかして10年前の感覚で脳内敵を殴りつけてスッキリ喋ってる…?
52デフォルトの名無しさん (ワッチョイ ff63-ufZq)
垢版 |
2020/02/25(火) 15:04:06.03ID:9vKHdmbh0
テメエも皮肉ってればいいと思ってんなよガキ
2020/02/25(火) 15:27:35.00ID:1xtbBMnCp
死んでもstatic使わない、じゃなくて死んでもシングルトン使わない、の話になってるが
2020/02/25(火) 17:25:56.66ID:5IAL5cM20
singletonがデザパタの中で意義も理解しやすく実装もそこそこ分かりやすく楽で有効に利用できると思わせる範囲が広いから無駄に広まってしまった
他により有効な手段ができても単一インスタンスだからsingletonで!っていう脳死とstaticは結局グローバルだからとにかく駄目!とかいうこれまた脳死が合わさってしぶとく使われているだけじゃない?
2020/02/25(火) 19:02:03.46ID:YCFpdAhz0
どこにstaticはとにくかくダメだなんて話が出てるのか
56デフォルトの名無しさん (ワッチョイ ffad-KTmx)
垢版 |
2020/02/25(火) 20:48:36.91ID:CjA4SEoV0
GoF初版は4半世紀前のJavaすら出る前だぜ
そろそろ新しい版を誰か書いて
2020/02/25(火) 21:46:44.65ID:rfLfmv0Z0
初めstaticで足りると思ったんだけど
対象のクラスに
継承やIFいんじゃんクソが
ってなるといつの間にかにシングルトンなってたりするだけだ
2020/02/25(火) 22:40:31.11ID:BegpSlwc0
>>57
これだよね。
staticクラスやグローバル変数でもいいんだけど呼び出し側に影響させないで実装を拡張できるという。
2020/02/25(火) 23:30:16.22ID:K+FIgRaj0
>>50
シングルトンが初回アクセス時に実行されるのと同様にstaticコンストラクタもそのクラスのいずれかに初回アクセス時に実行されるから同じ事だと思うよ
2020/02/26(水) 01:29:08.48ID:sMj0eedP0
>>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もロードされてたはず
2020/02/26(水) 10:56:30.52ID:/kjPVa9J0
型名の一部でしかないnamespaceのロードって何…?
2020/02/26(水) 11:28:50.62ID:sMj0eedP0
>>60
念の為試してみたら俺が間違ってたわ
すまん

static classでもLazy<T>使えば必要なタイミングまで確実に遅延できた
2020/02/26(水) 12:01:04.52ID:QHwYyYy1d
当たり前なんだけどsingletonでしか実現できない話じゃなくてsingletonなら自然にできる話だからね
singletonじゃなくたって実現方法はいくらでもある
こうすりゃできるなんてわかりきった上で話してるんだよ
64デフォルトの名無しさん (ワッチョイ b301-8X5p)
垢版 |
2020/02/26(水) 12:04:17.00ID:xo5HgIYJ0
>>63
そのsingletonが有用な場面ってのを解説してくれ
2020/02/26(水) 12:08:38.94ID:QHwYyYy1d
>>64
環境的にstaticが使えないとか?C#じゃあんまないんじゃない?
組み込みC環境だとstatic不可とかあるよ
2020/02/26(水) 12:11:40.77ID:QHwYyYy1d
ところでsingletonが有用な場面ってどっから湧いた話?
過去レス確認したけど、俺そんなこと言ってなかったんだけど
2020/02/26(水) 12:16:01.74ID:91Y2xJrV0
>>60
メンバーの話じゃなくてコンストラクタね
static class Human
{
static Human(){} //←この部分は保証されてる
}
68デフォルトの名無しさん (JP 0H82-SZE8)
垢版 |
2020/02/26(水) 14:16:45.27ID:oid0ZUpoH
ある強力なFor関数を紹介いたす(C#)
ttp://x0000.net/topic.aspx?id=3630-0

アルファ・ラボ|学術掲示板群
(理系 文系 工学 語学)
ttp://x0000.net/
2020/02/26(水) 15:11:05.12ID:/kjPVa9J0
ただのAggregateでは?
70デフォルトの名無しさん (アウアウウー Sa2f-A7eh)
垢版 |
2020/02/26(水) 17:52:39.14ID:FtoTEkgba
>>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();
  }
}
2020/02/26(水) 18:15:26.79ID:uSMym8r00
>>70
それはシングルトンじゃねーよ
まずシングルトンはnewしない
2020/02/26(水) 18:19:20.31ID:ZCj63VZA0
>>71
一回目は作るべ?
73デフォルトの名無しさん (アウアウウー Sa2f-A7eh)
垢版 |
2020/02/26(水) 18:21:41.53ID:FtoTEkgba
>>71
揚げ足取りはいいけど、よく読んでからにして欲しいよね
2020/02/26(水) 18:22:19.21ID:uSMym8r00
>>72
つか、インスタンスは自分自身の中にスタティックで用意する
そのクラスのスタティックプロパティー経由でインスタンスを参照するが
最初の参照時にシングルトンクラスで自身の中に生成する

だから外部で使うクラスはインスタンスを明示的に生成しません
2020/02/26(水) 18:30:13.02ID:/kjPVa9J0
> インスタンスは自分自身の中にスタティックで用意する
private static Form2 Singleton { get; set; }
用意してるな

> 外部で使うクラスはインスタンスを明示的に生成しません
public static void ShowSingleton()
{
 if (Singleton == null || Singleton.IsDisposed) Singleton = new Form2();
してないな
2020/02/26(水) 18:40:31.49ID:qN9Z1rJQM
>>62
それ実体が生成されないだけでLazy<T>自体はロードされるだろ
2020/02/26(水) 18:42:00.84ID:sMj0eedP0
シングルトンじゃなく
シングルトン的な発想が有用なケースって確かに書いてるね
2020/02/26(水) 18:50:11.01ID:uSMym8r00
>>77
シングルトンの最大の特徴は、複数のクラスから一つのインスタンスを参照できることだから
それはシングルトン的なものでもない

>>75
シングルトンではSIngletonクラスの内部にたった一つのインスタンスがプライベートで格納されている
それをSingletonのスタティックメソッドやスタティックプロパティーで参照するのがGOFのデザパタだ
79デフォルトの名無しさん (ワッチョイ 9e2d-9Aak)
垢版 |
2020/02/26(水) 19:43:16.15ID:JBdLkQQ40
シングルトンって、昔は、複数インスタンスが作られる可能性を潰すためにやってたんだろうけどさ
今は、主にDIコンテナへの指示みたいなもんとして役立ってんじゃねえのか?
2020/02/26(水) 20:21:07.70ID:J/Z+GoCJM
DIコンテナ使ってるなら、DIコンテナが自動的にインスタンス化して単一のインスタンスを各所へ注入してくれるから、
GoFのシングルトンパターン(というかグローバルインスタンスアンチパターンとでも呼ぶべきもの)は全く必要ないよ
81デフォルトの名無しさん (ワッチョイ 9e2d-9Aak)
垢版 |
2020/02/26(水) 21:07:30.64ID:JBdLkQQ40
単一かどうかはコンテナへの突っ込み具合で違ってくるんじゃないの
シングルトンでって指定していなければ複数インスタンス化されちゃうでしょう
2020/02/26(水) 21:12:48.10ID:pSd33gsra
属性などで指定するだけだよ
2020/02/27(木) 08:46:08.57ID:LiuiNLxS0
>>77
グローバル変数を単にフォームにおいてアクセス制御しただけで次とほぼ変わらないな
staticでいいじゃん側の話に思える

private static Form2 _form;
public static Form2 Hoge{
get{
if(_form == null || _form.IsDisposed)_form ==new Form2();
return _form;
}
}
2020/02/27(木) 08:57:22.75ID:/W1ksVR5p
もうめんどくせえからstaticも中でシングルトン使ってるから
実質シングルトンパターンって事でいいよ
85デフォルトの名無しさん (アウアウウー Sa2f-A7eh)
垢版 |
2020/02/27(木) 12:49:09.42ID:ENhVujQ1a
日本人はすぐそういう党派的(どっちの側にお前はつくんだ?}で幼稚な話になるよねw

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

こういう話だから。

シングルトンがあんまり有用じゃないとしても、
「唯一のオブジェクトを管理したり窓口になったりする役割をそのクラス自身に持たせる」
というシングルトン的なアイデアは応用できる、と言ってるんだけど、
これがそんなに難しい話かなw
2020/02/27(木) 17:27:49.50ID:0jrc+WC1r
そのアイデアを実現する手法としてstaticはどうだって話してたんじゃないないのか
2020/02/27(木) 19:49:51.32ID:6N44UBOdM
>>85
日本人はーっていうのも相当アホっぽいけどなw
外人だってエディタとかLinux vs. BSDとか宗教戦争しまくり
てか中東の内戦なんてガチの宗教戦争だし
2020/02/27(木) 20:14:51.21ID:NGAf+NLq0
うっかり2つ作らせない方法だからな
89デフォルトの名無しさん (アウアウウー Sa2f-A7eh)
垢版 |
2020/02/27(木) 22:15:47.05ID:ENhVujQ1a
>>87
日本人と欧米人の論争の仕方の違いは明らかで、
それは別に俺のオリジナルの見解でも何でもないよw

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

板違いだからもう止めるけどね。
2020/02/27(木) 22:46:12.99ID:RMeeA8fN0
>>89
> 今のこの話なら、日本人のダメなところは「シングルトンパターンの利点はここで問題点はここで」
> という議論が苦手なこと。
それでどちらかに決まるなら宗教戦争なんてすぐに解決してるよw
そもそも技術的な話とか言うわりには
> それが分かりやすいですか?
なんて人によって意見が違うことを言い出すから戦争はいつまで経っても終わらないわけで…
2020/02/27(木) 23:52:28.63ID:NGAf+NLq0
>>89
まあ、外人ならってのは幻想だな
そもそも奴らがそんなに頭が良かったのならオブジェクト指向なんて流行ってない

リーナスが言ったようにオブジェクト指向はカルトだ
誰もメリットなんて説明できない
それでも海を超えて日本へ来たのさ
92デフォルトの名無しさん (アウアウウー Sa2f-A7eh)
垢版 |
2020/02/28(金) 00:58:28.47ID:W4dF7kHwa
>>90-91
なんか党派的主張のお手本みたいなレスで何だかなあという気持ちになるけど
言っても無駄だねたぶんw
2020/02/28(金) 06:43:53.39ID:lgmUZMDZ0
>>92
技術的なお話とか言う割には
> なんか党派的主張のお手本みたいなレスで何だかなあという気持ちになるけど
みたいなレスしかできない時点で…
94デフォルトの名無しさん (ワッチョイ 4a63-ZWRU)
垢版 |
2020/02/28(金) 09:46:17.62ID:JX0D/Sej0
いつもいつも同じ流れでよく飽きないですねカスども
2020/02/28(金) 14:13:28.76ID:zv3KdV1x0
シングルトン的なものが必要になったら、殆どはDIのインジェクションでなんとかするけど
コレクションの要素にインジェクションなんて鬱陶しいから普通のシングルトンやStatic Class使ったりするな
2020/02/28(金) 16:17:34.85ID:5jfHvjE1d
シングルトンに依存するコレクションのエレメントとかちょっと悪夢だな。
97デフォルトの名無しさん (ワッチョイ cb4f-/wOo)
垢版 |
2020/03/01(日) 05:50:05.37ID:wVHwYgLC0
これが最新ぽいな
2020/03/01(日) 07:54:47.18ID:cyJFDbBK0
42 デフォルトの名無しさん  2020/03/01(日) 05:43:23.78 ID:wVHwYgLC
なんだ?この糞スレ
と思ったら2016年だとwww
どこから引っ張り出したんだよ
99デフォルトの名無しさん (ワッチョイ 679b-DFeu)
垢版 |
2020/03/02(月) 10:29:43.95ID:NX3+Q9hq0
C#というより.NET Framework全般の問題かもしれませんが・・・
ビルドした実行ファイルの拡張子を7zにして開けると
   .rsrc(フォルダ)
   .text
   .reloc
というファイルが出てきます

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

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

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

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

この文字列が入らないようにビルドするにはどうすれば良いでしょうか?
2020/03/02(月) 10:31:50.59ID:++2P6Dav0
mtawmg
2020/03/02(月) 10:56:03.68ID:dv6bLfIQ0
プロジェクトのプロパティでデバッグ情報の出力を「なし」か「埋め込み」にする
なしの場合はデバッグが難しいから頒布する用のリリースビルドだけにした方が良い
102デフォルトの名無しさん (アウウィフ FF2f-X91k)
垢版 |
2020/03/02(月) 11:01:21.30ID:glnmwhpKF
ググっただけですぐ出て来たが
https://www.atmarkit.co.jp/fdotnet/dotnettips/831stoppdbfile/stoppdbfile.html
http://var.blog.jp/archives/70196817.html
https://qiita.com/lainzero/items/27681ddc96638e33758b
103デフォルトの名無しさん (ワッチョイ 679b-DFeu)
垢版 |
2020/03/02(月) 11:30:46.56ID:NX3+Q9hq0
>>101-102

ありがとうございました。
pdbファイルがなんなのか理解できました
2020/03/04(水) 15:33:24.81ID:WNB6X6E30
yield returnの挙動について知りたいのですが、
例えばHuman[]からある苗字のHumanインスタンスだけを列挙する場合、
yield returnで貰えば新たな配列は生成されないという理解で良いんでしょうか?(無駄なヒープの生成なども無いと)
2020/03/04(水) 15:41:47.96ID:VYRn8ATr0
配列は生成されないけどIEnumerable<T>/IEnumerator<T>の実体クラスのインスタンスは作られるよ
具体的にどんなクラスになるかはildasm.exeとかで確認してみるといいよ
2020/03/04(水) 20:59:26.02ID:i/lDlkx00
var a = new int[10];
for(......){
......
}

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

配列変数の場合はどちらの書き方が正しいでしょうか?
下のほうはループを繰り返す毎に配列を宣言してるので無駄だと思うのですが
2020/03/04(水) 21:02:11.58ID:O/qwuvY6M
>>106
意味が違うからどっちが正しいもクソもない
2020/03/04(水) 21:03:35.42ID:nSjoZipw0
......の内容が大事だよなw
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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