ふらっと C#,C♯,C#(初心者用) Part159
■ このスレッドは過去ログ倉庫に格納されています
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を3行冒頭に書くこと(1行分は消えて表示されない為、もう1行は予備)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください。見かけたらNGしましょう。相手してしまったらあなたも荒らしです
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part158
https://mevius.5ch.net/test/read.cgi/tech/1679783460/
■関連スレ
C#, C♯, C#相談室 Part97
https://mevius.5ch.net/test/read.cgi/tech/1671585518/
■コードを貼る場合は↓を使いましょう。
https://ideone.com/
https://dotnetfiddle.net/
初心者はまずVisual Studioを使いましょう。なおVisual Studioの使い方などに関しては各バージョンで違うので専用スレでお願いします
http://www.visualstudio.com/downloads/
■情報源
https://learn.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://learn.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
++C++; // 未確認飛行 C
https://ufcpp.net/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured char型って1バイトって書いてあるところもあるし2バイトってのもある
どっちが正しいんですか? >>1スレたて乙
>>3
前スレから使ってください
https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/builtin-types/char
>char 型のキーワードは、Unicode UTF-16 文字を表す .NET System.Char 構造体型のエイリアスです。
charは「一文字」 charの定義はプログラム言語によるけどここはC#スレなので
2バイト、UTF-16の符号単位1つ分
が正しい
「1文字」は定義そのものが面倒なのでそれで説明するのはまずい
C#が世に出た時点ですでにサロゲートペアがあったしね string abc = "文字列";
foreach(char c in abc)
{/*処理*/}
確かに使ってないな〜って思ったら、こういう処理でcharは時々使ってるわ。 KeyPressEventArgsのKeyCharはcharだし
意外と使ってる varで書いていて無意識につかってるってのはあるだろうなぁ さすがに decimal・long 封印されたら地獄。 C#のintに相当するIntegerが16bitのVBAではほとんどLongを使っていたが、
C#だとintが32bitなのでほぼintで済ませてる。
VBAはExcelが32bit版だとC#のLongに相当するLongLongが使えないんだなー。 任意精度の倍精度実数型が無いのは
やっぱり自作しろということなのでしょうか? .net6.0 windows11 でUIAutomationを使おうと思っていますが
using System.Windows.Automation;
でエラーが出ます
Automationが名前空間System.Windowsに存在しないというメッセージが出ています
ソリューションエクスプローラーの依存関係を右クリック→
COM参照の追加→UIAutomationClientにチェックを入れています
ほかに何かしないといけないことはありますか?
それともこの環境だとUIAutomationは使えないのでしょうか 「COM参照の追加」でUIAutomationという文字が含まれるものはあと2つありますが
これらにチェックをいれてもやはりダメでした そもそもSystem.Windows.AutomationはCOM参照の方じゃないよ
そして.NET 6だと多分参照を追加しなくても使える
ただし.csprojのTargetFrameworkがnet6.0-windowsみたいなwindows指定じゃないと使えない >>22
<TargetFramework>net6.0-windows</TargetFramework>
となってます
でも使えないのはなぜでしょうか? using System.Windows.Automation;
と書いた段階で、Automationのところに赤色の波線が出ている状態です
ビルドした段階で初めてでるようなエラーではありません Automationは名前空間じゃなくてクラスだから
using書くなら「using System.Windows;」だぞ もしくは↓
using 適当な別名 = System.Windows.Automation; これを.csprojに追加してみたらどうかな
<ItemGroup>
<FrameworkReference Include="Microsoft.WindowsDesktop.App" />
</ItemGroup> >>25
>>26
だめでした
状況は何も変わっていません
>>27
すごい!使えるようになりました
Projectタグのすぐ内側に入れてみました
まだ動作確認してませんが、見た目大丈夫な感じです
なぜこれで動くのかはまったく分からないので調べてみようかと思います
みなさんありがとうございました こういうのがあるからc#は不人気なんだよな
意味不明の呪文が多すぎる C/C++ Win32APIでリンクライブラリとか指定するのと同じことだろうに何言ってんだw VSは何をベースにするかの選択が後付けされていくからな
公式の選択肢の検証が不十分なんだろう あー、そうか
デフォだと参照されてるフレームワークはMicrosoft.Windows.Desktop.App.WindowsFormsで
Microsoft.Windows.Desktop.Appを個別に入れる必要があったのか DataGridView自身のサイズを
中のマスの数に合わせて余白なく変更される機能ってないの? VisualStudioを使ってコメント文のショートカットは
他のVSCodeで使われてるCtrl + /にしてつかってるよね、みんなは?
デフォルトの二段階のやつは面倒。 コメント文のショートカットなんて初めて聞いたので、使ってないが回答です >>37
いやtoggle方式になっててCtrl+/だけでアンコメントできる >>36,39
情報弱者か頭がハゲてるのでは?
カーソルが対象の行のどこに存在していてもショートカット1つでコメント/アンコメントが切り換えられるのはすごく便利。 >>41
それ、コメントアウトされた行を含む複数行を、まとめてコメントアウトできるの? >>43
それ、コメントアウトされた行を含む複数行を、まとめてコメントアウトできるよ。 >>44
じゃあ、その行はトグル操作になってないよね
同じコマンドでトグルしたりしなかったりとか俺は嫌だな
つかそもそもの話はキータッチの数であって、トグル動作かどうかじゃなかった気はするがな >>35
変えてないからいつもvscodeのctrl /と間違う コメントショートカット君は何そんなに鬱憤溜めてるの VSCodeスレでも無ければVSスレでもないんだよなぁ リストのreverseってtolist()できたほうがいいですよね
reverseした後代入したりするとき面倒です。
なんでvoidなんですかね Reverse後に代入ってのがどうしたいのかわからないけど
Reverseはリストクラス自体のメソッドでそのインスタンスを直接操作するけど
OrderByやOrderByDescendingは拡張メソッドでコピーを操作するからコピーが返却されるってだけだよ? Reverseも拡張メソッドにしてコピーを操作したらよくないですかね? Reverse使うことになったことが無いけど
ソース自体かコピーかどっちがいいかは人によるだろう 反転したくてしてんだから反転前のは要らんだろ
つまり今のままでいい List<T>のReverseじゃなくてEnumerableのReverseを使えば?
list.AsEnumerable().Reverse().ToList() アプリ画面だけでウインドウフォームかwpfか判断する方法ってありますか? WPFだとフォームのBackColorが、デフォではControlではなかったような記憶 VS2022でC#コンソールアプリのテンプレートを開くと
Console.WriteLine("Hello, World!");
の一行だけでした。
確か昔(VS2017とか)なら
class Program
{
static void Main(string[] args)
}
みたいなテンプレートだったと思うんですが、変わったんですか? .NET Frameworkの方のテンプレートなら見慣れた構造になってると思うよ >>62
>>63
そうなんですね。
数年ぶりにプログラムをやりはじめたら、
大きく変わっていて右往左往しました。 数年ならそれ以外大幅には変わってないとは思うけどね
色々便利にはなってるけど他の言語も同じ .NET Frameworkから.NET5以降になったら随分変わってると思うよ そらまあ.NETで言えばね。。
数年なら多く見てもせいぜいC#7とか8の頃くらいからやろし。。
まあc#6とか5以前ともなると結構変わった感あるかもね スクラッチみたいなヴィジュアルスクリプティングって余計難しくならないですか? プログラミンってどれだけ整理してかけるか、みたいな能力が大事ですか?
こんがらがる >>70
スレ違い
小学生レベルなのでここ見て勉強してね
https://www.nhk.or.jp/school/sougou/texico/
C#での質問があったらここに書き込んでください >>70
場違いな質問をしていることに気付かない頭の悪さをまずは何とかしろ 自作ツールの起動中のみ、エクスプローラでファイルを右クリックした際のコンテキストメニューに項目を追加したいのですが、参考ソースはありませんでしょうか?
ググったらフォルダーとドライブの該当ソースはあったのですが、ファイル向けがありませんでした。レジストリーーいじるソースなので、知識不足で… 起動時にレジストリ書き込んで終了時に削除するってやれば一応できるんだろうか… できなくはないだろうけど、なんかの拍子にレジストリぶっ壊しそう… ミューテックスで起動しているかチェックしたらどう?
消すのは難しくても無効には出来る そんなに動的ではなくていいので、初回起動時に登録、アンインストール時に削除します。そこが知りたい訳では御座いません そういうときにはChatGPT
運が良ければ解決するかもしれん ツール起動中のみって要件があるのに初回起動時に登録、アンインストール時に削除ってのがわからん
起動中のみって要件外せば幸せになれるのに stackoverflowには絶対にあると思う
あとは7zipのソースでも読んだらいいんじゃね >>82
ありがとう!探してみます!
>>81
そこは重要では無く、質問は、C#のプログラムから下記を行いたいだけの質問です。
>エクスプローラでファイルを右クリックした際のコンテキストメニューに項目を追加したいのですが、参考ソースはありませんでしょうか?
ググったらフォルダーとドライブの該当ソースはあったのですが、ファイル向けがありませんでした。レジストリーをいじるソースなので、知識不足で… >>83
事前に項目を定義した上で LegacyDisable や Extended を着脱(orリネーム)しよう
全ファイル(フォルダ含む)を対象としたいなら * 以下のshell、任意の拡張子/カテゴリ向けなら SystemFileAssociations 下にある各拡張子/カテゴリを示すキー以下の shell に定義すればOK 二次元配列の取り出し方なんですが、c#の場合はどう展開するんでしょうか?
int[,] map = {
{ 0,0,0,0,0},
{ 0,1,1,0,0},
{ 0,0,0,0,0},
};
for(int i=0;i < array.Length;i++){
for(int j=0;j < array[i].ToString.Length;j++)
{
print(array[i,j]);
}
}
これだとジャグ配列用の書き方になるみたいです。
数値を1つずつプリントしたいです。 i < array.GetLength(0)
j < array.GetLength(1) ありがとう
取り出し方が違うんですね
ありがとう(*´ω`*) 配列の構造をそのまま出力するような関数はc#にはあるでしょうか?
forで要素1つずつ出力する方法はあると思います
配列をそのままprintするとsystem.int32などと出ます そもそもそのまま出力っつってもどういう風に表示したいんだって
なんか区切り文字でも挟んで列挙表示したいならstring.Joinすればいいし プロパティの書き方ですけど
set { if (SetProperty(ref abc, value)) OnAbcChanged(); }
みたいなのを
set => SetProperty(ref abc, value) && OnAbcChanged();
みたいに書くことは出来ませんでしょうか? こういう拡張メソッド書けなくはないが個人的には嬉しくもないな
public static void Then(this bool result, Action thenAction) { if (result) { thenAction(); } } >>92
すいません
int[,] ar = {
{0,0},{0,0}
}
このような配列だった場合、arをprintするとsystem.int32などとなります。
二重ループで取り出すと、0,0,0,0といった表示になります。
ただ、二次元配列の構造込みで表示されてほしいんです。
以下のようにです。
{0,0},{0,0} C#のデータ構造の表記で出力したいって事ね
リフレクションでできるのかな? リフレクションとかでできるのかなぁ?
ちょっとfor回して整形する手法しか思いつかないな…… 次元数はRankで取れるけど
展開するのは大変だろうなぁ 普通に json 形式にエンコード-デコードじゃダメなの? ジャグ配列じゃない多次元配列はJSONで直接表現できないからサポートしてるシリアライザも無いんじゃね ■ このスレッドは過去ログ倉庫に格納されています