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

■ このスレッドは過去ログ倉庫に格納されています
2022/06/17(金) 08:42:12.88ID:CPX9Pfyj0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part154
https://mevius.5ch.net/test/read.cgi/tech/1644416019/
■関連スレ
C#, C♯, C#相談室 Part96
https://mevius.5ch.net/test/read.cgi/tech/1639965805/
■コードを貼る場合は↓を使いましょう。
https://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/
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries/
https://referencesource.microsoft.com/
https://source.dot.net/
・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
2022/06/26(日) 17:01:46.40ID:tmrZCe0Z0
webは知らんけど
最近ようわからんのにスレッド立てまくる奴が作ったプログラムがこんな動作だね
正直まずいレベルで下手っぴだと思う
c#の言語仕様のせいで
2022/06/26(日) 20:52:25.72ID:yfX3wl/l0
「こんな動作」とかフワフワした用語でマウント取りに来るなら自分のブログとかでやってくれ
ここは「初心者」スレ
2022/06/26(日) 20:59:48.87ID:NLYG3vIc0
>>157
正直まずいレベルで下手っぴな文章だな
2022/06/27(月) 01:26:20.48ID:wEAeif5H0
何言ってるかわからんと思ってたら他の人もそうだったので安心した
2022/06/27(月) 02:35:01.48ID:sfuoftVd0
ASDっぽい会話のコンテキストのおかしさ
2022/06/27(月) 02:35:22.77ID:l2B1RzVL0
>>160
言いたいことは>>153なんだけど
わからないほど悲しい脳みそしてるんだ?
2022/06/27(月) 03:01:17.94ID:lmKSzJyY0
ヌルヌル話法の特徴と根本原理|mentane|note
https://note.com/mentane/n/n1ba35d50bef0
164デフォルトの名無しさん (ワッチョイ 4f02-lwqN)
垢版 |
2022/06/27(月) 15:08:18.79ID:Kbl5ft5+0
インターフェースのメンバーを呼び出す時には実装を確認すべきなのでしょうか
それとも 定義元のインターフェースへのキャスト必須ですか
(例)
class MyList : IList<int>
{
int IContainer<int> Count { get; }
...
...
}
2022/06/27(月) 15:22:13.53ID:Kbl5ft5+0
ドットが抜けてました
int IContainer<int>.Count { get; }
2022/06/27(月) 15:33:45.50ID:Kbl5ft5+0
ぐちゃぐちゃですみません
int ICollection<int>.Count { get; }
2022/06/27(月) 19:24:48.05ID:c9y9U1Yc0
聞きたいことがよく分からない
「実装を確認する」というのがどういう行為なのか
そのMyListを実装する側の話なのか使用する側の話なのか
例が単にインターフェイスの明示的実装を書いてるだけでどこが疑問点か読み取れない
2022/06/27(月) 20:38:42.94ID:Kbl5ft5+0
>>167
var mylist = new MyList();
var c0 = mylist.Count; // build error
// MyList は IList<int> : ICollection<int> をもつので
var c1 = ((ICollection<int>)mylist).Count;
// MListでint ICollection<int>.Count { get; } という memberをもつので
var c2 = ((ICollection<int>)mylist).Count;
c1は 万能
2022/06/27(月) 21:10:43.08ID:lmKSzJyY0
プロパティにpublicつけ忘れてるだけじゃね?
2022/06/27(月) 21:49:28.21ID:oKLZ5l1i0
IList.Count って public int Count { get } じゃなかったっけ。
((ICollection<int>)mylist).Count; が出来るのは、別途 ICollection.Count が実装されているからじゃないの。
2022/06/27(月) 22:21:47.30ID:Kbl5ft5+0
>>169, >>170
var array = new int[]{1,2,3};
var c0 = array.Count; // build error
var collection = (ICollection<int>)array;
var c1 = collection.Count; // ok
2022/06/27(月) 23:11:12.57ID:oKLZ5l1i0
オマエ、きちんと日本語で他人に伝わるように説明する気ないの?
,前に書いたのに誤りがあるように見えないんだけど。
2022/06/28(火) 01:12:23.85ID:vCyl6X270
いきなりオマエ呼ばわりかよ、何様?
2022/06/28(火) 03:39:43.25ID:k21C1TP+0
攻撃的なレスは誰も得しない

>>172
前に書いたのってのは170のことで合ってる?
Countプロパティを定義してるのはICollection<T>
IList<T>はそれを継承してるだけ
だから
((ICollection<T>)array).Count
で正しく取れるし
((IList<T>)array).Count
と全く同じ意味になる
175デフォルトの名無しさん (スップ Sd5f-3THJ)
垢版 |
2022/06/28(火) 08:26:27.68ID:UdVkVSJZd
https://ufcpp.net/study/csharp/oo_interface.html?p=4#usage

インターフェースの実装は
public int Count{get{...}}
のようにpublicで公開するのが普通。

MyList mylist; mylist.Count; のようにアクセスするのがまずいなら
int IContainer<int>.Count {get{...}}
のように隠すこともできる。

インターフェイスとしてしか使わないなら
MyList mylist;
IContainer<int> c1=mylist;
c1.Count;
のようにアクセスする方法もある
2022/06/28(火) 14:11:24.95ID:gtViLG4V0
>>175
MyListでのインターフェイスの明示的実装の結果, 隠蔽されてしまうということですか
了解しました
177デフォルトの名無しさん (ワッチョイ 27ad-9ZeA)
垢版 |
2022/07/05(火) 02:51:20.89ID:pywdYBm60
SOLID原則のDの依存性逆転の原則がイマイチ分かりにくいんですが
上位は下位に依存してはならないって説明は何をもって上位と下位になるんですか?
依存の意味はインスタンス化したらもう依存したことになるって事でいいんですよね?
では上位と下位の意味は具体的にどういう基準で区分されるのですか?
2022/07/05(火) 08:09:11.15ID:ZZ3vHKnwd
>>177
処理の呼び出し階層
決済モジュールが中で銀行引落モジュールとカード決済モジュールを呼んでいるなら、決済モジュールが上位で他は相対的に下位
2022/07/05(火) 11:14:44.01ID:Iq0vQpEV0
>>177
いい質問
抽象度の高いものが上位、抽象度の低いものが下位
別の言い方をすればアプリケーションのコアに近いものが上位、コアから遠いものが下位
↓この図にある円の中心に近い方が上位、周辺に近いほうが下位
https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html

依存は適切なソース分割が行われてる前提で言えば
usingディレクティブでインポートしてれば依存してることになる
180デフォルトの名無しさん (ワッチョイ 46e9-Pt+j)
垢版 |
2022/07/05(火) 13:13:39.89ID:uajPnlyf0
フォームアプリのListViewで水平スクロールをボタンに連携して動かすことって
出来るでしょうか?
HScrollVarの値を設定できれば実現できるのでしょうが、そういう情報が見つからず。
よろしくお願いします。
2022/07/05(火) 13:22:03.56ID:JMpS1h6ad
できらぁ!
182デフォルトの名無しさん (ワッチョイ 46e9-Pt+j)
垢版 |
2022/07/05(火) 18:34:58.72ID:ZFaGw7VU0
どのようにやれば出来るのか、取っ掛かりを頂きたいです!
2022/07/05(火) 18:39:12.96ID:Ar7iVMhG0
DataGridView.HorizontalScrollingOffset はreadonly
2022/07/05(火) 20:00:12.64ID:37QL7ImaM
Listviewだからアライメントをleftかな
2022/07/05(火) 22:06:19.52ID:QtzVIzSeM
忘れたけどListviewはスクロールいじれないからスクロールオフにして
ドックして自動でスクロールバーが出る状態にしてそれを操作したような気がする
2022/07/05(火) 22:14:55.12ID:QtzVIzSeM
それともドックさせないんだったかな
思い出せない
2022/07/05(火) 22:36:02.80ID:ZxZIsqP00
よくわからんものはスクロールバー付きのパネルの子として移動させる方が簡単だな
188デフォルトの名無しさん (ワッチョイ 5301-PAFZ)
垢版 |
2022/07/05(火) 23:12:26.77ID:WZVvg+4D0
ListView、水平スクロール、ボタンに連携
俺頭悪いから何させたいのかわからない
2022/07/06(水) 06:01:09.15ID:VxYrHSBA0
"xxx.zip .exe" みたいなファイルみたいに
水平スクロールを大量に行うと右端のあたりにボタンがあって
そこで本来あるべき機能が動き出すようなプログラムを作りたい
2022/07/06(水) 07:31:13.08ID:WpD2OlXKM
>>189
ダブルクリックでは本来あるべき機能は動かないんだ?
2022/07/06(水) 08:01:33.86ID:uv1GiNSha
LVM_SCROLLをSendMessageすればいいみたいな事が書いてある
2022/07/06(水) 08:45:43.56ID:y1Ju9pb60
凝ったことやりたかったらFormsを捨てることから検討したほうが良いのでは?
アレは単純なUIを手早く作る用途に適しているけど、複雑なものを始めるとどうにもならなくなる
193デフォルトの名無しさん (ワッチョイ 46e9-Pt+j)
垢版 |
2022/07/06(水) 09:06:38.00ID:3wWvjztO0
>ListView、水平スクロール、ボタンに連携
>俺頭悪いから何させたいのかわからない

高解像度のPCだとListViewのスクロールバーが小さいので、スクロールバーは捨てて
ボタンを1回押すとちょうちょいスクロールするものを作りたかったです。
プロパティでスクロールを動かす量を設定出来たら実現できるかなと思い。

ListViewのスクロールを捨てて、デカくしたスクロールバーコントローラで
パネル内のListViewのスクロールも試してみたいと思います。
2022/07/06(水) 09:38:47.94ID:0uANHcdZM
横スクロールできるマウス買うのをオススメ
195デフォルトの名無しさん (アウアウウー Sacf-kc9T)
垢版 |
2022/07/06(水) 11:04:46.38ID:CbuaQ7gOa
>>193
ListViewの部分だけWPF使ったら?
2022/07/06(水) 13:03:45.15ID:4CR35PoR0
WinFormsでカスタムコントロールって手間かかりすぎて敬遠されるんよ
高解像度用にフォント大きくしたり、ボタンにアイコン画像つけたり、とかも
出来なくはないけどさ、そんなくだらない苦労背負うよりWPFで解決した方が早いっていう
2022/07/06(水) 15:11:19.50ID:mycuJuFy0
高解像度のPCがどうたらって
WinFormsのDPIスケーリング対応機能を有効にするんじゃ駄目なのかな
2022/07/07(木) 01:17:45.97ID:dLA6OOclM
タブレットだと高DPIだとWPFだろうがwinformだろうが表示される要素がそこそこ大きくなって
操作しにくい
ボタンなどが縦に10個並べてあったとしてタブレットで表示すると下のほうが押せない
2022/07/07(木) 01:19:41.15ID:dLA6OOclM
GUI設計者が状況に応じて複数のレイアウトを用意するしかないけど
それじゃあGUIフレームワークの自動レイアウトの仕組みがあまり意味がない
2022/07/07(木) 01:46:44.86ID:5sXFliwx0
コンパイル時に文字列変数へアプリのバージョンを埋め込む方法を教えてください

FileVersionInfo ver = FileVersionInfo.GetVersionInfo( System.Reflection.Assembly.GetExecutingAssembly().Location );
だとWindows上で動かすと取得できますが、Linux上だと例外になります。

代替案として、コンパイル時に外部ファイルから読み込んでしまおうと考えたのですが方法が分かりません
asp.net core6のWebアプリなので、プロジェクトファイル(.csproj)のPropertyGroupのFileVersionから取得したいです
2022/07/07(木) 07:09:20.40ID:7GcCJzBFM
コンパイル時?にできんだっけ?
2022/07/07(木) 08:45:46.37ID:gjoYu6DS0
Linuxってファイルにバージョンみたいなメタデータ持たせてんだっけ
AssemblyオブジェクトからGetCustomAttribute<AssemblyFileVersionAttribute>()すればいいんじゃない
GetExecutingAssembly()が失敗するならtypeof(適当なクラス).Assemblyで
2022/07/07(木) 10:43:10.21ID:HZWhR94l0
>>199
コンテンツが表示し切れなかったらスクロールするようにしとけば
204デフォルトの名無しさん (ワッチョイ 035f-A/OY)
垢版 |
2022/07/08(金) 01:18:26.52ID:2uhV5uBf0
grepとかした時に、static変数と、staticメソッドの見分けが簡単につかないのは言語的に欠陥だと思ってるんだけど、皆さんどう思います?
2022/07/08(金) 08:34:52.99ID:skMpW7pT0
Visual Studio内で完結するからgrep要らないだろ
Visual Studioなきゃ何もできない言語って意味では欠陥だらけだが
206デフォルトの名無しさん (スップ Sdaa-UfCW)
垢版 |
2022/07/08(金) 10:06:43.45ID:0Bd0SGWId
grep -E 'static[^=]+\('
2022/07/08(金) 11:15:41.90ID:N2+ntTX1M
static 変数

private static int _count = 0;

static メソッド

internal static void Call()
2022/07/08(金) 11:16:19.06ID:N2+ntTX1M
C#だとこのように簡単に見分けがつくけど一体どの言語の話をしてるんだろうか?
2022/07/08(金) 12:37:30.28ID:hiK9rTst0
世界線が違うのかねえ
2022/07/08(金) 12:42:53.65ID:hiK9rTst0
変数は名詞でメソッドは動詞にするのが一般的なのでreadみたいな一部の単語を除けば言語によらず問題にならんだろう
リーダブルコードとか読んできてよ
初心者なら
2022/07/08(金) 12:48:48.83ID:OZjMTx6FM
煽って教えて欲しかったパターンやろ
212デフォルトの名無しさん (ワッチョイ 035f-A/OY)
垢版 |
2022/07/08(金) 14:31:59.45ID:2uhV5uBf0
internal とか void とか判別しやすい例出して、判別できるじゃんと言われてもなぁ
2022/07/08(金) 14:34:05.05ID:G/CdBPp1M
>>212
ガチ馬鹿なのかな?これでも見分けつかんか?

static 変数

static int _count = 0;

static メソッド

static void Call()
2022/07/08(金) 14:34:31.26ID:G/CdBPp1M
間違えた

static 変数

static int _count = 0;

static メソッド

static int Call()
2022/07/08(金) 14:35:03.78ID:3SGLIVmR0
>>212
どこ見てるんだよw
()の有無だろ
2022/07/08(金) 14:43:00.23ID:G/CdBPp1M
rustを使うと馬鹿になるんだよな
2022/07/08(金) 15:11:15.93ID:ejQ2E0qh0
頭の欠陥の方だったか
218デフォルトの名無しさん (ワッチョイ 9ebb-rOZM)
垢版 |
2022/07/08(金) 16:42:05.44ID:AegC83dn0
新興言語では、急激にOOPとの結びつきが弱まっていて、代わりに特別な指向を持っていてさ
そっちを学習した後にOOPベースの言語に戻ってくると、ほんと感覚が狂う
2022/07/08(金) 16:43:39.21ID:PiqGkGWC0
OOPS
2022/07/08(金) 17:45:25.22ID:G/CdBPp1M
>>218
static変数か関数か区別できないって相当おかしいけど
2022/07/08(金) 19:59:03.56ID:lD1r+WGYM
>>212
話を続けたいなら、逆にどの言語のgrep-abilityが理想的だと感じるか教えてくれんか
何を求めてるかはっきりしないから、括弧の有無で分かるだろタワケ以上の回答は得られないように思う
222デフォルトの名無しさん (ワッチョイ 9ebb-rOZM)
垢版 |
2022/07/08(金) 22:39:50.35ID:AegC83dn0
>>220
そういや、大文字か小文字かってのもちょっと狂うね
まあそんな表面的な違いは大したことはないんだけど
2022/07/10(日) 08:41:58.66ID:Ofnz2Mf40
vb.netとc#はセットでコードを載せてるwebサイト多いから同じ言語だな
2022/07/10(日) 09:17:42.49ID:2lWNRyj/0
>>223
まだ言うか
2022/07/10(日) 09:41:35.46ID:dRGk1maa0
文の書き方に違いがあるだけで、使ってる語句は同じだ。
2022/07/10(日) 10:04:57.88ID:X/cjUhFp0
同じに見えるのは病気ですよ
2022/07/10(日) 18:53:49.82ID:K6zNp1si0
まーたこいつか
SNSにでも垂れ流してろ
2022/07/10(日) 22:22:55.10ID:wMqDENwq0
c#はc++を発展させた言語であるかのように欺いたvbである。
2022/07/10(日) 22:27:43.20ID:XBuHMFXV0
C# も VB.NET も .NET を人向けにプログラム言語にしたもの
2022/07/10(日) 23:21:25.85ID:za66V9r/0
同じマンまだおったんか
231デフォルトの名無しさん (ワッチョイ cbbb-TLTf)
垢版 |
2022/07/11(月) 00:28:27.54ID:CCGmUSBS0
いずれC#も廃れるだろうが、みんなVBおじさんみたいにはならんようにしような
2022/07/11(月) 01:27:39.35ID:HIY5g3Yw0
ここは人格攻撃をする場と思ってんのか
2022/07/11(月) 05:54:55.27ID:L4tB3bvp0
VBの事を騙るスレでは無いな
2022/07/11(月) 06:46:54.81ID:GGvKul+ur
実際、c#って人気ないからな
人気はあるのかもしれないが使われていない
大規模システムはほぼJavaだし
簡単なWinFormくらいだろう
有名なシステムでこれといってc#が使われているということを聞いたことがない
2022/07/11(月) 07:48:56.03ID:iksZ9aQE0
いきなり2行で矛盾やめろw
2022/07/11(月) 10:01:05.18ID:lOE9m3Ds0
wwww
まぁ、Unityが無ければそこまで覚えたいと思えるものではないかもな
今だとWindowsアプリ作ったりする人も減ってるだろうし
サーバーサイドでの採用率も低そうだし
237デフォルトの名無しさん (アウアウウー Sa09-2HoA)
垢版 |
2022/07/11(月) 10:35:46.98ID:1W23UOpta
それなりに使われてるが
どうせ下請け孫請けなので
守秘義務で外に出て来ないだけ
2022/07/11(月) 11:55:44.49ID:5PTk/FF60
C#で作成したライブラリを他者に使われないようにする方法はありますか?
難読化しても呼び出すクラスやメソッドが分かれば、利用する事ができてしまうものでしょうか?
2022/07/11(月) 12:12:35.97ID:Mu0Fq/b9M
難読化ってどこまでやってくれんだろうね
引数の数もメソッド名もぐちゃぐちゃにするなら、不可能では無いにせよ現実的に難しいと思うけど
2022/07/11(月) 12:28:05.13ID:Mu0Fq/b9M
クラス名や引数そのままなら、普通に推測は出来てしまうと思う
どうしてもってなら、アクティベーションみたいなネットワーク認証しないと使えない仕組み入れるしかない
2022/07/11(月) 12:30:30.12ID:+1/8CWP60
>>238
難読化でライブラリの中のコードが見れないように出来ても、公開しているものを隠すのは無理じゃないか
仮に隠せたら、自分でも利用できないってことに
2022/07/11(月) 12:57:01.67ID:dmn56bqZ0
>>239
自分のソフトを自分で逆コンパイルしてみればわかるよ
2022/07/11(月) 15:59:29.22ID:o+Vp/fL50
>>238
具体的に環境(.NET Core、.NET Framework、Unity…)や制限したい部分にも依るかねぇ?
外部からの参照方法によってはクラスやメソッド名まで変えられはしないだろうし
単にクラスライブラリとして露出させたくなければ共有プロジェクトにする方法も有るけど

Frameworkの単体EXEへ出来ればMatcode comPRESSerでも簡易的にデコンパイル阻止とか
netshrinkとかはDLLもバインドできて…難読化だけよりこういった包括的パッカー向き?
いずれにしても解析を完全阻止するのは不可能であるから、どこら辺を及第点とするか
2022/07/11(月) 17:53:50.74ID:d1RSnGBRM
もう見られたくない処理だけc++で書いてモジュールキックとかでいいんじゃないかな?
245デフォルトの名無しさん (オッペケ Sra1-2twL)
垢版 |
2022/07/11(月) 18:08:22.09ID:Gc8t7u3Xr
JavaオワコンでC#がそろそろ来る
2022/07/11(月) 19:02:02.38ID:5PTk/FF60
>>241
そですよね
>>243のような方法か.NET7のネイティブコンパイラに期待するか、
>>240, 244のように.NET以外で何らかの認証をするくらいしかないようですね
2022/07/12(火) 07:42:04.63ID:d+D22Oihr
>>245
もう10年以上そう言われてるが一向にJavaがオワコンにならずc#がオワコンしてる
2022/07/12(火) 08:10:19.93ID:cwVe/GJo0
https://redmonk.com/sogrady/files/2022/03/lang-rank-0122-wm.png
未だにJava3位なんだな
今どこで使われてんの
2022/07/12(火) 08:12:48.62ID:xes6G2QHp
JavaパイセンはもうCOBOLの域に入ってるやろ
2022/07/12(火) 08:13:01.75ID:I1ttMvVed
サーバーサイド
C#も今ではほとんどがサーバーサイド
2022/07/12(火) 08:22:48.21ID:O8wzjFzNa
>>250
サーバーサイドで使われているか?
2022/07/12(火) 08:28:10.27ID:KuQV4+SIa
10年前はともかくOracleの有料化のインパクトはでかかったからな
新規案件は壊滅したわ
2022/07/12(火) 09:46:46.14ID:w0UtJt4u0
Javaは単価安いし
254デフォルトの名無しさん (アウアウウー Sa09-2HoA)
垢版 |
2022/07/12(火) 10:26:31.62ID:Sm3tO535a
トラブル繰り返してる某みずほ金融なんかは Java ? COBOL ?
2022/07/12(火) 10:52:02.28ID:bC3C9A550
金融とかの規模で言語統一なんて無理やろ
メインフレームは減ったらしいけど、サーバーなんかは数百以上の規模であるんやないか?
2022/07/12(火) 11:05:26.87ID:7D6kUfzj0
同一規格のサーバーで数千台展開したあとに不具合見つかってどうしようもなくなった某国営企業とかあったから
あまり統一しまくってもいいことないよ
2022/07/12(火) 11:58:30.45ID:O8wzjFzNa
JavaはCOBOLの置き換え案件で多いな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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