!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■関連スレ
C#, C♯, C#相談室 Part95
https://mevius.5ch.net/test/read.cgi/tech/1508168482/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part143
https://mevius.5ch.net/test/read.cgi/tech/1558002486/
■情報源
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/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
ふらっと C#,C♯,C#(初心者用) Part144
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ドコグロ MM2f-DHp5)
2019/07/16(火) 15:36:23.74ID:i1fbuZ/pM723デフォルトの名無しさん (アウアウウー Sa85-9Tgq)
2019/09/21(土) 15:21:35.32ID:Ef6g+Zfma724デフォルトの名無しさん (ワッチョイ 1124-JE5y)
2019/09/21(土) 15:59:40.26ID:3kDOCDXv0 Dllimortで呼び出す関数の引数にはジェネリックは使えないのでしょうか?
725デフォルトの名無しさん (ワッチョイ 4d63-WGWF)
2019/09/21(土) 17:32:33.11ID:CRAyGleP0 使えない
726デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/21(土) 17:41:38.79ID:dMKiDHPTa727デフォルトの名無しさん (アウアウウー Sa85-+KEk)
2019/09/21(土) 17:50:18.96ID:GoVsp8loa >>726
.NETのジェネリックは実行時に特殊化されるから、技術的にはそんなに無茶な話ではないよ
.NETのジェネリックは実行時に特殊化されるから、技術的にはそんなに無茶な話ではないよ
728デフォルトの名無しさん (ワッチョイ 4d0c-Ms+D)
2019/09/21(土) 17:57:47.91ID:rw4WtgZd0 まあどのみち今のところできないから、いんぽ関数自体はIntPtrで受け取って
Marshal.PtrToStructureとかでごにょごにょするジェネリック関数でラップする感じでやるしかないね
SystemParametersInfoとかでそういう欲求があること自体はわかる
Marshal.PtrToStructureとかでごにょごにょするジェネリック関数でラップする感じでやるしかないね
SystemParametersInfoとかでそういう欲求があること自体はわかる
729デフォルトの名無しさん (ワッチョイ fd17-Ms+D)
2019/09/21(土) 17:59:11.73ID:ox/L2PXG0 >>727
それじゃ質問者に回答してやってくれ
それじゃ質問者に回答してやってくれ
730デフォルトの名無しさん (アウアウウー Sa85-+KEk)
2019/09/21(土) 18:12:58.46ID:GoVsp8loa731デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/21(土) 18:32:15.65ID:dMKiDHPTa 十分突飛だと思いますけどね。
これ、アンマネージドに限らない。
マネージドだろうが、他のアセンブリで既に定義されてる
非ジェネリックなstaticメソッドをジェネリック化したいと言ってるのと同じ。
だから、呼ばれた側は何すりゃいいんだよw
これ、アンマネージドに限らない。
マネージドだろうが、他のアセンブリで既に定義されてる
非ジェネリックなstaticメソッドをジェネリック化したいと言ってるのと同じ。
だから、呼ばれた側は何すりゃいいんだよw
732デフォルトの名無しさん (アウアウウー Sa85-+KEk)
2019/09/21(土) 18:43:55.34ID:GoVsp8loa >>731
CのAPIだと、サイズが同一の異なる型を一緒に扱ったり、条件に応じてポインタの指す型の解釈を変えたりとか珍しくないでしょ
CのAPIだと、サイズが同一の異なる型を一緒に扱ったり、条件に応じてポインタの指す型の解釈を変えたりとか珍しくないでしょ
733デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/21(土) 18:44:55.69ID:dMKiDHPTa734デフォルトの名無しさん (ワッチョイ 1124-JE5y)
2019/09/21(土) 18:46:58.39ID:3kDOCDXv0 >>726
具体的にはLPVOID引数で自己責任ながら参照型からref、outやintなどの値渡しまで色々な型のオーバーロードを作って実際にちゃんと機能しています
なので一々オーバーロードとそのラップだけで30行ほど使ってしまってる現状が無駄に思えてどうにか方法ないかなと
具体的にはLPVOID引数で自己責任ながら参照型からref、outやintなどの値渡しまで色々な型のオーバーロードを作って実際にちゃんと機能しています
なので一々オーバーロードとそのラップだけで30行ほど使ってしまってる現状が無駄に思えてどうにか方法ないかなと
735デフォルトの名無しさん (ワッチョイ 4d0c-Ms+D)
2019/09/21(土) 19:46:47.84ID:rw4WtgZd0 一例としてはこんな感じ
APIの想定される構造体がBlittableのみならマーシャリング不要なので
unmanaged制約にしてアドレス渡しの方が効率は良い
public static T GetSystemParametersInfo<T>(SPI uiAction, uint uiParam, SPIF fWinIni) where T : struct {
T value;
var buffer = Marshal.AllocCoTaskMem(Marshal.SizeOf<T>());
SystemParametersInfo(uiAction, uiParam, buffer, fWinIni);
value = Marshal.PtrToStructure<T>(buffer);
Marshal.FreeCoTaskMem(buffer);
return value;
}
まあぶっちゃけお行儀的にはオーバーロードだらだら並べる方が正解ではあるんだけどねw
APIの想定される構造体がBlittableのみならマーシャリング不要なので
unmanaged制約にしてアドレス渡しの方が効率は良い
public static T GetSystemParametersInfo<T>(SPI uiAction, uint uiParam, SPIF fWinIni) where T : struct {
T value;
var buffer = Marshal.AllocCoTaskMem(Marshal.SizeOf<T>());
SystemParametersInfo(uiAction, uiParam, buffer, fWinIni);
value = Marshal.PtrToStructure<T>(buffer);
Marshal.FreeCoTaskMem(buffer);
return value;
}
まあぶっちゃけお行儀的にはオーバーロードだらだら並べる方が正解ではあるんだけどねw
736デフォルトの名無しさん (ワッチョイ a207-vIUH)
2019/09/21(土) 19:58:38.68ID:A1p2bytl0 c# で必殺技みたいなメソッドがあったのですが思い出せません。どなたかご存知ないでしょうか?
737デフォルトの名無しさん (ワッチョイ 4563-tKbs)
2019/09/21(土) 20:03:15.85ID:y68BphyG0 >>736
リフレクション?
リフレクション?
738デフォルトの名無しさん (ワッチョイ 6922-2lm7)
2019/09/21(土) 22:34:09.60ID:rnFOOH9a0 >>736
privateメソッドを外部から無理矢理呼び出すやつ?
privateメソッドを外部から無理矢理呼び出すやつ?
739デフォルトの名無しさん (アウアウイー Sa11-kReW)
2019/09/21(土) 22:42:59.80ID:70YMyRx+a リフレクションならDynamicInvoke()がなんともかっこいいメソッド名
>>736のはおそらくはデストラクタあたりを想定してるんじゃないかと思うけど
>>736のはおそらくはデストラクタあたりを想定してるんじゃないかと思うけど
740デフォルトの名無しさん (アウアウウー Sa85-+KEk)
2019/09/21(土) 23:13:56.71ID:GoVsp8loa DangerousAddRefもなかなか
741デフォルトの名無しさん (ワッチョイ 5963-cEvk)
2019/09/22(日) 01:11:49.71ID:YKAr5fZO0 >>736
オーバーライド!!
オーバーライド!!
742デフォルトの名無しさん (ブーイモ MMf6-/3ZE)
2019/09/22(日) 01:26:33.02ID:01VTDUEXM オーバーロード!!
743デフォルトの名無しさん (スププ Sd22-2lm7)
2019/09/22(日) 01:39:55.72ID:V8FjsYeid >>736
ラムダ式!
ラムダ式!
744デフォルトの名無しさん (ワッチョイ c245-Iqd1)
2019/09/22(日) 07:51:48.39ID:Wx+hr3d10745デフォルトの名無しさん (ワッチョイ fd17-Ms+D)
2019/09/22(日) 08:33:40.66ID:6LYYKR960 1) githubで"sql parser"と検索
2) C#で絞り込む
3) 上から順に試す
4) 好みのが見つかったら改造を試みる
少なくとも1から作るよりは圧倒的に楽だし勉強にもなるよ
2) C#で絞り込む
3) 上から順に試す
4) 好みのが見つかったら改造を試みる
少なくとも1から作るよりは圧倒的に楽だし勉強にもなるよ
746デフォルトの名無しさん (ワッチョイ 829f-cF+R)
2019/09/22(日) 09:28:54.26ID:p/RNYxc40747デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/22(日) 12:11:14.62ID:PittLpUUa748デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/22(日) 12:16:38.76ID:PittLpUUa 少なくともC#のジェネリックはstringとbyte[]を透過的に扱ったり、
longをint2つと透過的に扱ったりするための仕組みじゃありませんwww
だからそういうのは共用体やオーバーロードを使うんだってw
longをint2つと透過的に扱ったりするための仕組みじゃありませんwww
だからそういうのは共用体やオーバーロードを使うんだってw
749デフォルトの名無しさん (ラクッペ MMc1-WGWF)
2019/09/22(日) 12:28:14.42ID:GskCdwYSM 端的に答えとけばいいんだよ
余計な講釈を垂れるな
余計な講釈を垂れるな
750デフォルトの名無しさん (ワッチョイ 02e0-jgJV)
2019/09/22(日) 22:36:43.63ID:584djEVu0 BitmapをBitmapDataにしたいのですが、使用されたパラメータが有効ではありませんと言われてしまいます。
ファイルから読み込んだbitmapは変換できるのですが、このようにコード上で作ったbitmapはダメです。
何がいけないのでしょうか?
Bitmap trimBmp = baseBmp.Clone(rect, baseBmp.PixelFormat);
BitmapData bitData = trimBmp.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
ファイルから読み込んだbitmapは変換できるのですが、このようにコード上で作ったbitmapはダメです。
何がいけないのでしょうか?
Bitmap trimBmp = baseBmp.Clone(rect, baseBmp.PixelFormat);
BitmapData bitData = trimBmp.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
751デフォルトの名無しさん (ワッチョイ 822c-9Tgq)
2019/09/22(日) 22:44:27.94ID:6/LwH+kT0 rectで切り出した後、その切り出した後のビットマップから
さらにrectで一部分のロックしようとしてるけど大丈夫? 全面じゃない?
さらにrectで一部分のロックしようとしてるけど大丈夫? 全面じゃない?
752デフォルトの名無しさん (ワッチョイ 02e0-jgJV)
2019/09/22(日) 22:53:39.23ID:584djEVu0 >>751
baseBMPからrectで切り抜いてますが、trimBMPにとってはrectは全面だと思うのですがダメなのですかね?
でも
Bitmap bmp = new Bitmap(100,100)
みたいな素画像でもやっぱりLockBitsできないです
baseBMPからrectで切り抜いてますが、trimBMPにとってはrectは全面だと思うのですがダメなのですかね?
でも
Bitmap bmp = new Bitmap(100,100)
みたいな素画像でもやっぱりLockBitsできないです
753デフォルトの名無しさん (ワッチョイ 6e7b-25Vu)
2019/09/22(日) 23:53:45.92ID:yl5BH+I+0 >>752
>trimBMPにとってはrectは全面
ではなくbaseBmpのrectの範囲って自分で指定しているよね
BitmapData bitData = trimBmp.LockBits(new Rectangle(0, 0, trimBmp.Width, trimBmp.Height), ImageLockMode.ReadOnly, trimBmp.PixelFormat);
>Bitmap bmp = new Bitmap(100,100)
>みたいな素画像でもやっぱりLockBitsできないです
できる。そっちもちゃんと引数の指定してみて
>trimBMPにとってはrectは全面
ではなくbaseBmpのrectの範囲って自分で指定しているよね
BitmapData bitData = trimBmp.LockBits(new Rectangle(0, 0, trimBmp.Width, trimBmp.Height), ImageLockMode.ReadOnly, trimBmp.PixelFormat);
>Bitmap bmp = new Bitmap(100,100)
>みたいな素画像でもやっぱりLockBitsできないです
できる。そっちもちゃんと引数の指定してみて
754デフォルトの名無しさん (ワッチョイ a207-vIUH)
2019/09/23(月) 01:34:07.15ID:CAyWI0VB0 private Point CalcPopupLoction(Form launcher, Form popupForm) {}
ボタン押したときに上部に表示する モーダルな popup フォーム の位置を計算するメソッドを書きました。
ボタンが左の方にあると、親フォームの左枠をはみ出さないように、popupForm は左揃えで表示。
真ん中へんにあると中央揃え、右端ならボタンとpopupForm を右揃えで表示する感じです。
1つ目の引数の良い名前が思い付きません。
主にボタンを想定してる引数です。
launcher (発射台)はどうもしっくりきません。
parent や baseForm はなんかおかしいのでやめました。
ボタン押したときに上部に表示する モーダルな popup フォーム の位置を計算するメソッドを書きました。
ボタンが左の方にあると、親フォームの左枠をはみ出さないように、popupForm は左揃えで表示。
真ん中へんにあると中央揃え、右端ならボタンとpopupForm を右揃えで表示する感じです。
1つ目の引数の良い名前が思い付きません。
主にボタンを想定してる引数です。
launcher (発射台)はどうもしっくりきません。
parent や baseForm はなんかおかしいのでやめました。
755デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/23(月) 03:14:26.31ID:QdBzCxoka756デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/23(月) 03:28:32.57ID:QdBzCxoka あー、右に揃える場合もあるのね。
じゃあボタン持ってるFormに
void ShowModalPopup(Form popup)
みたいなメソッドを持たせればいい
じゃあボタン持ってるFormに
void ShowModalPopup(Form popup)
みたいなメソッドを持たせればいい
757デフォルトの名無しさん (ワッチョイ 3d5f-tKbs)
2019/09/23(月) 03:42:05.85ID:ltbH9/U50 こういう使い回しが効きそうなのはいちいちフォームに実装しないで拡張メソッドにでもした方が
758デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/23(月) 03:56:41.99ID:QdBzCxoka 本当はボタン持ってる方のFormに
interface IDialogOwner:IWin32Window
{
HorizontalAlignment DialigHAlignment { get; }
Rectangle Rectangle { get; }
}
みたいなのをかぶせて、Popupする方のFormでShowDialogをオーバーロードして
void ShowDialog(IDialogOwner owner)
みたいにするのがいいのかも。
酔っぱらってるんでよく分からなくなってきたw
interface IDialogOwner:IWin32Window
{
HorizontalAlignment DialigHAlignment { get; }
Rectangle Rectangle { get; }
}
みたいなのをかぶせて、Popupする方のFormでShowDialogをオーバーロードして
void ShowDialog(IDialogOwner owner)
みたいにするのがいいのかも。
酔っぱらってるんでよく分からなくなってきたw
759デフォルトの名無しさん (ワッチョイ a211-2BIS)
2019/09/23(月) 08:49:12.84ID:l2jPGLgc0 C#でawaitに対応していないメソッドをawaitで非同期実行できるようにする方法を教えてください.
以下のようにしてもActionが実行されませんでした.
private async static void SomeHandler()
{
Console.Write("Burn");
await new Task(new Action(() =>{
Console.Write("[Start]");
Thread.Sleep(2000);
Console.Write("[Completed]");
}));
Console.Write("End");
}
以下のようにしてもActionが実行されませんでした.
private async static void SomeHandler()
{
Console.Write("Burn");
await new Task(new Action(() =>{
Console.Write("[Start]");
Thread.Sleep(2000);
Console.Write("[Completed]");
}));
Console.Write("End");
}
760デフォルトの名無しさん (ワッチョイ 1152-Ms+D)
2019/09/23(月) 08:58:35.82ID:ZRlL2jPD0761デフォルトの名無しさん (アウウィフ FF85-9GzD)
2019/09/23(月) 12:17:14.67ID:3qdqqJ07F bitmapinfo とか
dibsection とか
bitmapinfoheader とか
勉強してみたら
dibsection とか
bitmapinfoheader とか
勉強してみたら
762デフォルトの名無しさん (スフッ Sd22-J2vi)
2019/09/23(月) 14:47:11.75ID:vpc5pW+6d >>759
TaskCompletionSourceだっけ?うろ覚えですまんが、jsのPromiseオブジェクト的に使える。
TaskCompletionSourceだっけ?うろ覚えですまんが、jsのPromiseオブジェクト的に使える。
763デフォルトの名無しさん (ワッチョイ 5190-I/5H)
2019/09/23(月) 15:20:09.58ID:LbTjUCX60 taskをstartしてないだけだから...
764デフォルトの名無しさん (ワッチョイ c135-2BIS)
2019/09/23(月) 15:46:49.67ID:s6/Kehza0 >>763
ありがとうございます!
ありがとうございます!
765デフォルトの名無しさん (スププ Sd22-2lm7)
2019/09/23(月) 18:09:27.70ID:7f5aVpAAd どういたしまして!
766デフォルトの名無しさん (ワッチョイ 117b-PY7j)
2019/09/23(月) 19:11:24.16ID:24/7TZbh0 ID:QdBzCxoka
何の話してんのこの人
>>754
変数名が思いつかないとかはこのスレじゃなく
クラス名・変数名に迷ったら書き込むスレ。Part28 [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1494147712/
何の話してんのこの人
>>754
変数名が思いつかないとかはこのスレじゃなく
クラス名・変数名に迷ったら書き込むスレ。Part28 [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1494147712/
767デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/23(月) 22:40:56.88ID:6ZQTgZjHa768デフォルトの名無しさん (ワッチョイ a207-vIUH)
2019/09/23(月) 22:48:38.96ID:CAyWI0VB0769デフォルトの名無しさん (ワッチョイ a207-vIUH)
2019/09/23(月) 23:35:14.83ID:CAyWI0VB0 >>754
private Point CalcPopupLoction(Form launcher, Form popupForm) {}
上記は下部のボタンの位置に応じて、大きさのことなるpopupForm の表示位置を計算するメソッド
exportButton_Click 内で、
ShowDialog(); で表示する popupForm に戻り値を設定
https://i.imgur.com/ggjo4td.jpg
private Point CalcPopupLoction(Form launcher, Form popupForm) {}
上記は下部のボタンの位置に応じて、大きさのことなるpopupForm の表示位置を計算するメソッド
exportButton_Click 内で、
ShowDialog(); で表示する popupForm に戻り値を設定
https://i.imgur.com/ggjo4td.jpg
770デフォルトの名無しさん (ワッチョイ 0279-McVF)
2019/09/24(火) 00:01:07.45ID:OEzHH54a0 >>754
・Loctionて何
・ボタンの置いてあるオーナーウィンドウと対象のボタンを引数に取った方がいいと思う
・計算だけなら全部Rectangleでいいんじゃないの
Rectangle CalcPopupLocation(Rectangle Owner, Rectangle TargetButton, Rectangle Popup)
・Loctionて何
・ボタンの置いてあるオーナーウィンドウと対象のボタンを引数に取った方がいいと思う
・計算だけなら全部Rectangleでいいんじゃないの
Rectangle CalcPopupLocation(Rectangle Owner, Rectangle TargetButton, Rectangle Popup)
771デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/24(火) 00:03:53.21ID:ftn8dtDua >>769
だからさ、そのメソッドをどこに書くおつもり?
ポップアップを左右どちらに寄せるべきかを知ってるのは特定のFormだけのはずなのに
その例のllauncherの型がFormってのは変じゃないか?
そもそも何で「左右どちらに寄せるべきかを知ってる」奴のメソッドとして実装しないの?
それなら引数で渡す必要ないと思うんだけど。
だからさ、そのメソッドをどこに書くおつもり?
ポップアップを左右どちらに寄せるべきかを知ってるのは特定のFormだけのはずなのに
その例のllauncherの型がFormってのは変じゃないか?
そもそも何で「左右どちらに寄せるべきかを知ってる」奴のメソッドとして実装しないの?
それなら引数で渡す必要ないと思うんだけど。
772デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/24(火) 00:09:30.85ID:ftn8dtDua773デフォルトの名無しさん (ワッチョイ a207-vIUH)
2019/09/24(火) 11:39:03.69ID:vbZsX/Wo0 書き込みは、人を憎んでコードを憎まずのこころで行いましょう。
たとえクソコードであっても悪いのは書いた人だけです。
コードやプログラミング言語に罪は一切ありません。
コードの悪口はやめましょう。
クソコードの修正と言わず、リファクタリングといえばいいのです。
大量殺人犯や c# プログラマーの醜い心はリファクタリング不可能ですが、コードのリファクタリングはカンタンですよ。
https://www.google.co.jp/amp/s/anond.hatelabo.jp/touch/20180319181104%3fmode=amp
たとえクソコードであっても悪いのは書いた人だけです。
コードやプログラミング言語に罪は一切ありません。
コードの悪口はやめましょう。
クソコードの修正と言わず、リファクタリングといえばいいのです。
大量殺人犯や c# プログラマーの醜い心はリファクタリング不可能ですが、コードのリファクタリングはカンタンですよ。
https://www.google.co.jp/amp/s/anond.hatelabo.jp/touch/20180319181104%3fmode=amp
774デフォルトの名無しさん (ラクッペ MMc1-WGWF)
2019/09/24(火) 12:11:17.28ID:yrtqWHxIM 性格の悪さもリファクタリングしてくれ
775デフォルトの名無しさん (エムゾネ FF22-9GzD)
2019/09/24(火) 14:58:01.43ID:oiN+60axF 性格はコードに滲み出るよ
776デフォルトの名無しさん (ワッチョイ 216e-iM7L)
2019/09/24(火) 23:29:02.86ID:OoYPx0Tk0 性格は分からないけど姿勢みたいなものは見えると思ってる
こんなコピペばかりして少しはおかしいと思わないのかな?とかこんな古い書き方して言語の文法ざっとでもいいから一通り見たのかな?とか
いいコードを書こうとしてる人とそうでない人の差ってすごくよく分かる。本当に能力無くて頑張って頑張ってるのにひどいって場合もきっとあるんだろうけど
こんなコピペばかりして少しはおかしいと思わないのかな?とかこんな古い書き方して言語の文法ざっとでもいいから一通り見たのかな?とか
いいコードを書こうとしてる人とそうでない人の差ってすごくよく分かる。本当に能力無くて頑張って頑張ってるのにひどいって場合もきっとあるんだろうけど
777デフォルトの名無しさん (ワッチョイ 4690-jgJV)
2019/09/24(火) 23:44:57.44ID:3clb0+hp0 ようわからんけど動いてるからヨシ!
778デフォルトの名無しさん (ワッチョイ 7901-EJEl)
2019/09/25(水) 07:36:43.68ID:apbfD+2I0 式木がイケてるらしいですが使いどころが解りません
プロの皆さんはどこで使ってますか?
プロの皆さんはどこで使ってますか?
779デフォルトの名無しさん (ドコグロ MMca-+KEk)
2019/09/25(水) 10:16:37.93ID:HV92OfVjM780デフォルトの名無しさん (ワッチョイ 6e63-JE5y)
2019/09/25(水) 22:57:19.53ID:5YRgoX3y0 >人を憎んでコードを憎まず
逆じゃないんかおい
逆じゃないんかおい
781デフォルトの名無しさん (ワッチョイ 0279-Ms+D)
2019/09/25(水) 23:01:24.46ID:1MbrNFaz0 自分より給料貰ってる先輩(笑)が
クソコードを産み落としていた場合は人もコードも憎む
というか蔑む
クソコードを産み落としていた場合は人もコードも憎む
というか蔑む
782デフォルトの名無しさん (ワッチョイ 6e63-JE5y)
2019/09/25(水) 23:16:09.44ID:5YRgoX3y0 何をもってくそコードと言ってるのか
783デフォルトの名無しさん (ワッチョイ 0279-Ms+D)
2019/09/25(水) 23:38:23.64ID:1MbrNFaz0 何を以ってクソコードかは難しいところだが具体例なら無数に挙げられるぞ
switchを使わず延々とif-else if分岐
if(flag) return ture; return false;
一行違うだけのメソッド大量生成
マジックナンバーだらけ
コレクションはほとんどList
かと思えば特にライブラリに必要とされているわけでもないobject[]
もちろんパターンマッチングなんて概念は存在しない
out代わりにrefを使う
boolではなくintをフラグとして使う
クラス内のあらゆる場所から明示されず書き換えられるフィールド
どう見ても親子関係にない継承
メソッド1個300行以上
これがさぞ大変な処理かと思えばリファクタリングしたら40行で書けた
1行に300文字以上
リソースでもFormsでもない普通のクラスが4000行
switchを使わず延々とif-else if分岐
if(flag) return ture; return false;
一行違うだけのメソッド大量生成
マジックナンバーだらけ
コレクションはほとんどList
かと思えば特にライブラリに必要とされているわけでもないobject[]
もちろんパターンマッチングなんて概念は存在しない
out代わりにrefを使う
boolではなくintをフラグとして使う
クラス内のあらゆる場所から明示されず書き換えられるフィールド
どう見ても親子関係にない継承
メソッド1個300行以上
これがさぞ大変な処理かと思えばリファクタリングしたら40行で書けた
1行に300文字以上
リソースでもFormsでもない普通のクラスが4000行
784デフォルトの名無しさん (ササクッテロ Sp51-WUQ/)
2019/09/25(水) 23:54:44.99ID:NtFNmlTfp >>778
ドカタだけどlinqのwhereメソッドの引数を動的に生成するときに使った
ここ参考になるよ
https://www.atmarkit.co.jp/fdotnet/dotnettips/986dynamiclinq/dynamiclinq.html
ドカタだけどlinqのwhereメソッドの引数を動的に生成するときに使った
ここ参考になるよ
https://www.atmarkit.co.jp/fdotnet/dotnettips/986dynamiclinq/dynamiclinq.html
785デフォルトの名無しさん (ワッチョイ 7f63-aXvP)
2019/09/26(木) 00:03:29.50ID:68XB546j0786デフォルトの名無しさん (ワッチョイ c76e-upKm)
2019/09/26(木) 00:08:48.21ID:QoSQSwcY0 >>783
>>switchを使わず延々とif-else if分岐
>>マジックナンバーだらけ
>>クラス内のあらゆる場所から明示されず書き換えられるフィールド
>>メソッド1個300行以上
>>リソースでもFormsでもない普通のクラスが4000行
今直面してるのにまさに当てはまっててもう
>>コレクションはほとんどList
こっちはListどころか配列しか使わないんだぜ。もう書き方が完全にC
>>switchを使わず延々とif-else if分岐
>>マジックナンバーだらけ
>>クラス内のあらゆる場所から明示されず書き換えられるフィールド
>>メソッド1個300行以上
>>リソースでもFormsでもない普通のクラスが4000行
今直面してるのにまさに当てはまっててもう
>>コレクションはほとんどList
こっちはListどころか配列しか使わないんだぜ。もう書き方が完全にC
787デフォルトの名無しさん (ワッチョイ 7f63-aXvP)
2019/09/26(木) 00:09:16.61ID:NU/jFtK40 メソッド以外はどれも影響は大きくないし
多少大きくてもテストできればなんとかなる
ちょっとした文化の違い程度の話だ
多少大きくてもテストできればなんとかなる
ちょっとした文化の違い程度の話だ
788デフォルトの名無しさん (ワッチョイ 7f63-aXvP)
2019/09/26(木) 00:10:34.86ID:NU/jFtK40 初心者が一見してくそ呼ばわりするコードはたぶんくそじゃない
わかるから細かい粗が目に付く
普遍的恐怖を知るべきだ
ぐちゃぐちゃな循環参照
テストできないメソッド
う そ っ ぱ ち の 名 前
わかるから細かい粗が目に付く
普遍的恐怖を知るべきだ
ぐちゃぐちゃな循環参照
テストできないメソッド
う そ っ ぱ ち の 名 前
789デフォルトの名無しさん (ワッチョイ c7da-S/NQ)
2019/09/26(木) 00:15:27.94ID:ThQ6mTfg0 突然現れるlinqの長々としたクエリ式
せてめメソッド式にしてくれ
せてめメソッド式にしてくれ
790デフォルトの名無しさん (ワッチョイ 7f63-aXvP)
2019/09/26(木) 00:18:57.61ID:NU/jFtK40 しかしC#いつのまにやらパターンマッチまで入ってたんか…
791デフォルトの名無しさん (ワッチョイ ff0d-hLG/)
2019/09/26(木) 00:28:52.23ID:ZFJdpCv/0 sqlを全て文字列結合で作ってるうえに500行以上あったときは後輩に丸投げした
792デフォルトの名無しさん (スププ Sd7f-Mf0M)
2019/09/26(木) 03:16:32.66ID:wZcpOMsUd793デフォルトの名無しさん (ササクッテロ Spbb-Xp2G)
2019/09/26(木) 11:30:46.50ID:Av/VHz3vp あいつに任せた俺の責任だからって最初から頭数に入れていないから憎みもしない。必要なら全面書き直しもいとわない。
794デフォルトの名無しさん (ワッチョイ 47a5-MO5W)
2019/09/26(木) 20:59:42.99ID:7bLC7yvk0 なんでListがいかんのか?
795デフォルトの名無しさん (ワッチョイ e7da-/0jh)
2019/09/26(木) 21:12:02.17ID:aLxxu1ok0 ビットで判定とるのがいかんのか?
796デフォルトの名無しさん (ワッチョイ 5f79-S/NQ)
2019/09/26(木) 21:18:55.30ID:fUfQlO4W0 7f63-aXvPからクソグラマーの臭いがする
797デフォルトの名無しさん (ワッチョイ 5f79-S/NQ)
2019/09/26(木) 21:21:22.68ID:fUfQlO4W0798デフォルトの名無しさん (ワッチョイ e7da-/0jh)
2019/09/26(木) 21:37:16.13ID:aLxxu1ok0 ZDDをboolの配列で評価するの?orz
799デフォルトの名無しさん (ワッチョイ 5f79-S/NQ)
2019/09/26(木) 21:40:05.70ID:fUfQlO4W0 >>798
特別な理由がないならと言ってるだろうが
特別な理由がないならと言ってるだろうが
800デフォルトの名無しさん (ワッチョイ c76e-upKm)
2019/09/26(木) 22:03:13.49ID:QoSQSwcY0 windows formsの書き方についてなんですけど
メイン画面にタブがいっぱいあってそれを切り替えて……みたいなアプリなんです
んで中身見たらFormクラスが1万行オーバーで。画面一つだからって何もかも突っ込んでる感じなんです
画面というかフォーム一つで1クラスみたいなのが通常の書き方なんでしょうか
メイン画面にタブがいっぱいあってそれを切り替えて……みたいなアプリなんです
んで中身見たらFormクラスが1万行オーバーで。画面一つだからって何もかも突っ込んでる感じなんです
画面というかフォーム一つで1クラスみたいなのが通常の書き方なんでしょうか
801デフォルトの名無しさん (ササクッテロ Spbb-Xp2G)
2019/09/26(木) 22:10:14.52ID:Av/VHz3vp 普通はブロックに分ける。
802デフォルトの名無しさん (ワッチョイ 6717-S/NQ)
2019/09/26(木) 22:13:41.16ID:fJKX2zi80 >>800
タブ毎にユーザーコントロールを作ればスッキリはすると思うよ
タブ毎にユーザーコントロールを作ればスッキリはすると思うよ
803デフォルトの名無しさん (ワッチョイ 7f7b-v5cH)
2019/09/26(木) 22:23:35.32ID:lGqB6oAG0 >>800
「通常」はどうか知らないけど例えば
MDIアプリケーションを作成する
https://dobon.net/vb/dotnet/form/mdiapplication.html
こういう作り方もある
あと一つのフォームに普通のコードはともかくコントロール(InitializeComponentのなか)を多く詰め込みすぎると起動に時間がかかるようになる
現状で問題ないのならそこは気にすることは無いが
「通常」はどうか知らないけど例えば
MDIアプリケーションを作成する
https://dobon.net/vb/dotnet/form/mdiapplication.html
こういう作り方もある
あと一つのフォームに普通のコードはともかくコントロール(InitializeComponentのなか)を多く詰め込みすぎると起動に時間がかかるようになる
現状で問題ないのならそこは気にすることは無いが
804デフォルトの名無しさん (ワッチョイ 07c5-Mf0M)
2019/09/26(木) 22:53:44.29ID:d7SzDWCz0 >>800
parcial class でタブごとにファイルわける。
parcial class でタブごとにファイルわける。
805デフォルトの名無しさん (ワッチョイ c76e-upKm)
2019/09/26(木) 23:38:48.19ID:QoSQSwcY0 なるほど参考になりました。
今思えば既にタブごとに部分クラスわけしてファイル別になってたような気がしないでもない……となると実質一クラス10万行か。笑えない
今思えば既にタブごとに部分クラスわけしてファイル別になってたような気がしないでもない……となると実質一クラス10万行か。笑えない
806デフォルトの名無しさん (ブーイモ MMab-4jkW)
2019/09/27(金) 06:43:42.33ID:N2euUEC0M >>800
1000行超える時点でオブジェクト指向できてない証拠
1000行超える時点でオブジェクト指向できてない証拠
807デフォルトの名無しさん (ワッチョイ 47da-AQ1v)
2019/09/27(金) 08:33:35.75ID:1dreLMG90 フォーム以外で使わない処理を
わざわざ外部のファイルやクラスに作る必要なんてある?
わざわざ外部のファイルやクラスに作る必要なんてある?
808デフォルトの名無しさん (アウアウウー Sa8b-MM89)
2019/09/27(金) 08:42:46.73ID:eAUqf5T9a >>807
それで可読性が高まるならやる意味はある
それで可読性が高まるならやる意味はある
809デフォルトの名無しさん (スフッ Sd7f-mDN4)
2019/09/27(金) 09:06:13.84ID:ikgA/i06d C#は1ファイルに全部書けるので必要ないです
810デフォルトの名無しさん (ワッチョイ 675f-Xp2G)
2019/09/27(金) 10:07:45.04ID:NnPkuVhE0 再利用しないならそれでいいんじゃね?
811デフォルトの名無しさん (ワッチョイ 5f79-S/NQ)
2019/09/27(金) 22:47:27.06ID:uik+OEWH0 お前を含めた全人類が未来永劫そのコードに手を加えない保証があるなら好きにすればいい
812デフォルトの名無しさん (ワッチョイ c76e-upKm)
2019/09/27(金) 23:28:58.48ID:MmWjZkvh0 ググったらタブ大量にあるような場合>>802がクラス分割のためのメジャーな手法なのね
813デフォルトの名無しさん (ワッチョイ 5ff9-vbpN)
2019/09/28(土) 08:43:54.27ID:uN9Z5b+x0 游ゴシックの英数文字をMeasureStringで取得した矩形を使ってDrawStringすると高さ不足で表示されない
矩形を使わなきゃ表示はできるから良いけどもやもやする
矩形を使わなきゃ表示はできるから良いけどもやもやする
814デフォルトの名無しさん (ワッチョイ 0701-/0jh)
2019/09/28(土) 10:37:47.08ID:elJniuwU0 フォント周りおかしいのはMS伝統では
ないだろうか?
Q
ないだろうか?
Q
815デフォルトの名無しさん (アウアウウー Sa8b-dvEi)
2019/09/28(土) 14:09:54.66ID:51nJyp6ja そんなざっくりした話じゃ、どうせお前自身のコードのバグだろって
反応しか返ってこないと思うw
反応しか返ってこないと思うw
816デフォルトの名無しさん (ワッチョイ 07c5-Mf0M)
2019/09/29(日) 01:52:26.51ID:sVRG+wNI0 インターフェイスと抽象クラスってどう使い分ければ良いのでしょう?
ググってもよくわかりません。
ググってもよくわかりません。
817デフォルトの名無しさん (ワッチョイ 47da-AQ1v)
2019/09/29(日) 02:47:00.08ID:TNnn17Gh0 インターフェースなら継承関係のない複数のクラスのように
振る舞うことができる
振る舞うことができる
818デフォルトの名無しさん (ワッチョイ 5f79-S/NQ)
2019/09/29(日) 02:49:22.44ID:HU0MDVmv0 大雑把言えば
プロパティとフィールド(値)を保持するのがクラス
クラスのメソッド(挙動)を公開するのがインターフェイス
プロパティとフィールド(値)を保持するのがクラス
クラスのメソッド(挙動)を公開するのがインターフェイス
819デフォルトの名無しさん (ワッチョイ 47da-AQ1v)
2019/09/29(日) 02:54:07.57ID:TNnn17Gh0 それが抽象クラスとなにが違うのだ?と彼は聞いているわけで
820デフォルトの名無しさん (ワッチョイ 5f79-S/NQ)
2019/09/29(日) 03:01:23.20ID:HU0MDVmv0 インターフェイスは値を持たないし
原則として挙動の実装も持たせない
原則として挙動の実装も持たせない
821デフォルトの名無しさん (アウアウウー Sa8b-dvEi)
2019/09/29(日) 03:20:49.12ID:m1n6jIU5a >>816
使い分けで悩む必要はないと思うよ。
インターフェイスで目的が達成できるならあえて抽象クラスを使う理由はないのだから。
たぶん使い分けが分からないのではなく、インターフェイスの使いどころが分からないだけじゃないのか。
よくわからなくてもとにかく実際コードを書いて使ってみることが重要。
別に難しい話じゃないので使ってるうちに自ずと分かる。たぶん
使い分けで悩む必要はないと思うよ。
インターフェイスで目的が達成できるならあえて抽象クラスを使う理由はないのだから。
たぶん使い分けが分からないのではなく、インターフェイスの使いどころが分からないだけじゃないのか。
よくわからなくてもとにかく実際コードを書いて使ってみることが重要。
別に難しい話じゃないので使ってるうちに自ずと分かる。たぶん
822デフォルトの名無しさん (ワッチョイ 47da-AQ1v)
2019/09/29(日) 03:35:49.46ID:TNnn17Gh0 多重継承的なことがしたくなったらインターフェースを使う
くらいな感じでいいのかもね
くらいな感じでいいのかもね
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★5 [BFU★]
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★6 [BFU★]
- 【サッカー】U-17W杯 日本代表、無念のベスト8敗退… チャンスは多く作ったが仕留め切れず オーストリアに0-1で敗戦 [冬月記者★]
- 【千葉】コンビニに尿入りペットボトル並べた疑い、26歳男「むしゃくしゃして」…購入した客が飲もうとしたところ臭いに違和感 [ぐれ★]
- 中国官製報道「日本経済はもう持たない」にネット民ツッコミ「ニュースだけ見てたら日本はもう百回くらい爆発してる」 [1ゲットロボ★]
- 植田日銀総裁 「円安進行が物価高を起こしている」 ★4 [お断り★]
- 現役JKのお茶会スレ( ¨̮ )︎︎𖠚ᐝ157
- 自分、馬鹿なのでおっしゃる意味がわかりません
- WTO世界のコメ🌾価格は記録的な豊作により1年で35%下落(5キロで200円程度)と発表※日本は1年で3倍値上がり [709039863]
- 【ぺこ専🐰】なんG 兎田ぺこら突発配信実況スレ🏡【ホロライブ▶】
- 中国大使館、「高市早苗の正体」を完璧に絵にしてしまう。こら才能あるでぇ! [592058334]
- NHKニュースウオッチ9「日本側は対話にオープンな姿勢で安定した日中関係を築きたい考えなのに中国が意固地で糸口が見いだせない」 [904151406]
