X



ふらっと C#,C♯,C#(初心者用) Part152
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん (ワッチョイ 3f2c-RUy2)
垢版 |
2021/08/25(水) 19:44:16.81ID:tgvUkE6r0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part151
https://mevius.5ch.net/test/read.cgi/tech/1621129559/
■関連スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
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/
・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
0854デフォルトの名無しさん (ワッチョイ 5701-3PcT)
垢版 |
2021/12/02(木) 07:18:07.12ID:HY05Xx580
ExcelのVBAと連携する小さいシステムなので伝統的なカレントディレクトリ使ってるんです
Excelと実行ファイルを同じフォルダに入れれば解決なのでしょうが実行ファイルのライブラリが多いのでExcelが埋もれて見難いなとそれはそれで困り
0856デフォルトの名無しさん (ワッチョイ d75f-BO5v)
垢版 |
2021/12/02(木) 11:49:27.62ID:7dnZygEt0
namespace System.Collections.Generic
{

public class List<T> : ICollection<T>,…の中にある、
public void Add(T item);の具体的な処理(リストの最後に加える)はどこに書いてあるのでしょうか?
0861デフォルトの名無しさん (ワッチョイ 9fe4-jwak)
垢版 |
2021/12/02(木) 18:17:26.30ID:7pZIqj+v0
>>845
そもそも論としてWindowsではカレントディレクトリの扱いが環境として定義
されるようになっているので、プログラミングしてアプリを作るときにカレント
ディレクトリっていう使い方をするならば自分で必要な設定を行えば良いんだよ

まぁお約束(嫌いな人ゴメンねw)でdobonだけど

https://dobon.net/vb/dotnet/file/currentdirectory.html
0864デフォルトの名無しさん (ワッチョイ d75f-BO5v)
垢版 |
2021/12/02(木) 21:56:32.95ID:7dnZygEt0
>>857
ありがとうございます。問題が解決しました。
次に湧いてくる疑問なのですが、

Visual StudioでList<T>を右クリックして、「定義へ移動」をすると。下のように書かれています。

//
// 概要:
// Adds an object to the end of the System.Collections.Generic.List`1.
//
// パラメーター:
// item:
// The object to be added to the end of the System.Collections.Generic.List`1. The
// value can be null for reference types.
public void Add(T item);

初心者としてはreferencesource.comにあるように↓こう書かれていたらわかるのですが

public void Add(T item) {
if (_size == _items.Length) EnsureCapacity(_size + 1);
_items[_size++] = item;
_version++;
}

なぜこれで動くのでしょうか? そしてどうして下のように処理を書いてないのでしょうか?
0865デフォルトの名無しさん (ワッチョイ 822c-xgq1)
垢版 |
2021/12/03(金) 00:14:41.65ID:QhpimBIa0
> なぜこれで動くのでしょうか?
mscorlib.dllの中にコンパイル済みのが入ってるから
> そしてどうして下のように処理を書いてないのでしょうか?
コンパイル済みのしか入ってなくてソースがないから
0867デフォルトの名無しさん (ワッチョイ a45f-tift)
垢版 |
2021/12/03(金) 20:46:41.26ID:9rfUUeSM0
>>865
ありがとうございました。スッキリしました。
なるほど、こんな感じで動いているのですね。

>>866
ILSpyを使ってみました。これは便利そうですね。
すごく勉強になりました、ありがとうございます。
0878デフォルトの名無しさん (ワッチョイ ce89-PP5C)
垢版 |
2021/12/05(日) 19:03:31.29ID:a+muEo/d0
ASP.net MVC 3.1を触り始めたんだが、これ、どんな些細な変更もいちいち発行しないと見れないのかな?
いままでのように「IIS Expressをプロジェクトのディレクトリ指定して起動しておいて、ビューは変更した都度リロード、ロジック変えたらビルドして確認」なんて気楽な開発が出来なくなってかなり面倒……
0881878 (ワッチョイ ce89-PP5C)
垢版 |
2021/12/06(月) 10:28:43.40ID:88ozVNfm0
>>879-880
ああ、なるほど。ASP.net MVC 3.1(というか、VisualStudio2019や2022)では、【デバッグしながら】ソースをいじって、それをすぐにブラウザで見れるんだ。
chtmlは今までも出来たけど、コードビハインド(と今は呼ばないかもしれないが)の変更も可能になってて、それを反映する「コード変更を適用」なんてボタンもVSに追加されてるんですな…。
これなら確かにわざわざIIS Expressを別に起動する手間は必要ありませんね。
例外が出た時にコマンドプロンプトからも確認できなくなったのがちょっと不便になったが、これも仕事で書くまともなコードならNLogなりを入れている筈だし。

アドバイスに感謝。いやはや、便利になったモノですなぁ…
0882デフォルトの名無しさん (ワッチョイ 56bd-QDcv)
垢版 |
2021/12/06(月) 20:25:20.35ID:kcw1evd50
文字と数値が入り混じるリストのソート掛けが分かりません。

[0]丸/B/30/40/B/60/0
[1]丸/B/70/20/B/20/0
[2]丸/B/30/5/B/60/0
[3]角/B/70/20/B/20/40
[4]丸/B/30/40/B/60/0
[5]角/B/20/20/B/20/100

1番左の丸、角等の文字でまとめ、
[0]の40の位置の数値を昇順、
[0]の30位置の数値の昇順に並び替えたいです。
丸角の順番はまとまってれば良くて、数値は小数点ありです。

どなたかコードを、教えて頂きたいです。
0883デフォルトの名無しさん (アウアウウー Sa83-PP5C)
垢版 |
2021/12/06(月) 20:41:57.32ID:Qbq2EdCDa
>>882
そのリストの要素(例えば「丸/B/30/40/B/60/0」)
は文字列なんだよね?

だったら要はスラッシュで区切られた文字列の中から
n番目の要素を取り出すメソッドが書ければ目的は達成できるのと違うの?
0886デフォルトの名無しさん (ワッチョイ 9b02-yt/O)
垢版 |
2021/12/07(火) 20:03:11.57ID:hXBXLlEy0
new object[][] { new object[] { "丸", "B", 30, 40, "B", 60, 0 } }
とかだったりね。

まあ 894 の言う通りだと思う。
data.OrderBy( a => (string)a[0] ).OrderBy( a => (int)a[3] ).OrderBy( a => (int)a[2] ) とかでも出来るかもしれないけど。
0888デフォルトの名無しさん (アウアウウー Sa83-PP5C)
垢版 |
2021/12/07(火) 21:47:55.35ID:cdrKb2eoa
この程度の話だったらどんな設計でも問題ないと思うけど、
>>882の人はそういう設計の問題で躓いているんじゃないでしょ。

恐らくいわゆる「分割統治」ができない人なんだと思う。
普通のプログラマなら当たり前のように自然に

デリミタで区切られた文字列の3番目の要素でソートしたい ⇒
(1) 3番目の要素を抜き出す
(2) 文字列を実数に変換
(3) 変換し数値を使ってソート

という風に大きな問題を小さな問題に分割して考えるけど、できない人にはこれができない
0892デフォルトの名無しさん (アウアウウー Sab5-JhWO)
垢版 |
2021/12/08(水) 00:07:29.07ID:JmKuL7Fea
新しくbyte[]配列を定義してコピーせずに、byte[]を文字列に直すのはどうしたらいいのでしょう?

byte[] data = new byte[] { 0x30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };  //末尾にnullがたくさんあるデータ
string text = Encoding.ASCII.GetString(data);
//string text = Encoding.ASCII.GetString((byte*)data,2); //こうしたいけどキャストできずエラー
Console.WriteLine(text); //「0???????????」が出力される
0893デフォルトの名無しさん (スップ Sd02-E64m)
垢版 |
2021/12/08(水) 00:19:57.85ID:8icXIUsNd
>>892
そんなことはできない
そのポインタを引数に取るGetStringのオーバーロードも結局コピーする
Stringのコンストラクタにもポインタを引数に取るのがあるけどそれもコピーする
0895デフォルトの名無しさん (スップ Sd02-E64m)
垢版 |
2021/12/08(水) 00:23:08.99ID:8icXIUsNd
ああ文字列化のときにコピーが走るのはよくて、前処理としてbyte配列からbyte配列にコピーするのは嫌ってことか?
GetStringに範囲を指定できるオーバーロードがあるだろ
0900デフォルトの名無しさん (アウアウウー Sa83-PP5C)
垢版 |
2021/12/08(水) 00:44:28.31ID:b+i+HzV1a
もう解決済みみたいだしもっといい方法がたぶんあると思うけど
いちいち手動で長さを指定せずにC文字列を文字列に変換したいってことならこれで出来た
var data = new byte[] { 0x30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
var sb = new StringBuilder();
sb.Append(Encoding.ASCII.GetChars(data));
var text = sb.ToString();
0902デフォルトの名無しさん (ワッチョイ 2f24-3BeG)
垢版 |
2021/12/08(水) 09:34:35.47ID:lj53vMC40
あんまり行儀は良くないけど1行で出来るしbyte[]じゃなくてSpanで受け取るときって往々にして変換先もReadOnlySpan<char>で済ませたいときだから標準で必要だとは思わないな
Span<char> stack = stackalloc char[u8.Length];
string str = stack.Slice(0, Encoding.UTF8.GetChars(u8, stack)).ToString();
0904デフォルトの名無しさん (ワッチョイ 0a8e-9fbA)
垢版 |
2021/12/09(木) 18:12:01.88ID:T9HnMcRs0
>>903
その質問をここでするくらいの人にはどちらにしろ無理だな
0906デフォルトの名無しさん (アウアウウー Saab-wFmK)
垢版 |
2021/12/09(木) 19:40:17.12ID:RDoYY/RSa
久しぶりにc#書くんだけど今VSって2022が最新と思っていいのかな?2019のほうがいい?
0908デフォルトの名無しさん (ワッチョイ 6e01-PP5C)
垢版 |
2021/12/09(木) 21:11:55.71ID://kyAdWZ0
NFTアートとNFTゲームとGameFiとブロックチェーンゲームに
提供する側・作る側として参入しよう。
(むりなら参加する側でもいい)
DAOとPlay-to-Earn(遊んで稼ぐ)が世界の未来になる
特にNFTアートとNFTゲームとGameFiは今なら先行者利益取れるぞ
NFTアートとNFTゲームとGameFiはこれから1000倍規模の市場になる
0915デフォルトの名無しさん (アウアウウー Sa6b-di0a)
垢版 |
2021/12/10(金) 16:53:42.58ID:uofk+Uw9a
>>914
まあそれは最初からそうなんだけどね

Windows XPが出た時に.NET Passportっていう認証サービスも
確か一緒に登場したんだけど、たぶんそれと同じ.NETだよね。

ちなみにこの.NET Passport、XP SP2の頃には早々消滅してた記憶があるw
0920デフォルトの名無しさん (アウアウウー Sa6b-di0a)
垢版 |
2021/12/10(金) 19:32:59.39ID:uofk+Uw9a
>>917
だからブランド名の話ね

というか、正直当時も今もあんまり感心ないんで勘違いしてるかもしれんが、
..NET Passportって今のGoogleやツイッターやYahooのIDみたいに
サードパーティーにも認証サービスを提供することを想定してたはずだよね確か。

今のMSアカウントはMSローカルのIDとしてしか使われてない気が
0925デフォルトの名無しさん (ラクッペペ MM8f-qDP+)
垢版 |
2021/12/11(土) 02:21:32.22ID:lM+tc9bnM
.NET Standardは他の様なフレームワークそのものではなくてフレームワーク構成のプロファイルなので位置づけが違う
.NET Frameworkと.NET Coreが共存していた過渡期の仕様なので.NET 5で統合された後はその役目を終えた
0927デフォルトの名無しさん (ラクッペペ MM8f-qDP+)
垢版 |
2021/12/11(土) 02:42:15.96ID:rKF6rMeBM
.NET Framework(Windows用)と.NET Core(Linuxメインのマルチプラットフォーム用)
の統合で作られたのが.NET 5
(CoreベースにFrameworkを吸収した形式)
更にXamarin(モバイル用)を統合して. NET 6というのが大筋の流れ
ただし現状はフレームワーク本体の統合に対してUIフレームワークの進捗が遅れているのでモバイル用はまだ完全に統合できていない
0928デフォルトの名無しさん (ワッチョイ 47e6-JWjg)
垢版 |
2021/12/11(土) 08:21:58.67ID:GfYv21Eg0
Standardで書けばFrameworkでもCoreでも動くのが売りじゃなかったっけ?

破棄されたということは.NET6では動かなくなったの?
0929デフォルトの名無しさん (ラクッペペ MM8f-qDP+)
垢版 |
2021/12/11(土) 08:55:50.76ID:QCKRPgtgM
4年前の記事
https://atmarkit.itmedia.co.jp/ait/articles/1707/28/news033.html

要するに3種類のフレームワークのクラスライブラリを相互利用できる様にPCL(プロファイル)を置き換えるものとして計画されていた

その後クラスライブラリを含むフレームワークそのものを統合する方向に方針転換したので今となってはもはや何の意味もない
0931デフォルトの名無しさん (ワッチョイ 7fcf-zDwW)
垢版 |
2021/12/11(土) 09:47:01.41ID:E/VsNyVn0
.NET 5が出たからといって世の中からFrameworkやCoreがすぐに消え去るわけじゃないし、
少なくとも4.8のサポートが切れる2030年までは.NET Standardの意味はあるんじゃないの。
0932デフォルトの名無しさん (ラクッペペ MM8f-qDP+)
垢版 |
2021/12/11(土) 10:01:45.69ID:5LGmTTMuM
開発中止されたものを無理に利用しても益はないよ
レガシー系を使うなら素直に元のライブラリ使った方が楽
おそらく手作業であちこち設定弄らないとまともに使えないと思う
0934デフォルトの名無しさん (ワッチョイ 8749-zDwW)
垢版 |
2021/12/11(土) 11:13:46.06ID:e3Orr6P80
こちらの足元を整える必要があると認識できた

あまり込み入ったことをしすぎたり、
マイナーなライブラリを使ってると、移行もつらくなる

ヘビーな業務アプリとかはなるべく言語の素に近い実装がいいと気付けた
少なくともMS付近のテクノロジーでは
0936デフォルトの名無しさん (スップ Sd7f-mLf8)
垢版 |
2021/12/11(土) 12:18:05.68ID:Ic21T4cQd
>>935
UI等に依存しない純粋なStandardのライブラリとしてロジックを切り出せる程度の能力のあるチームならとっくに本体を移行してるだろうし、
そもそも今時まだWebに行けなくてデスクトップアプリやってる時点でアレ
0938デフォルトの名無しさん (ワッチョイ a701-InJs)
垢版 |
2021/12/11(土) 12:34:25.02ID:s4WaAbfG0
普通に市販コンポーネントの対応状況だとかVSの機能で未実装とかさまざまに.netでのデスクトップアプリ作成を妨げる要因はあるでしょ
しかもどんなアプリにおいてもデスクトップよりWebの方が適しているなんてのも乱暴すぎて幼稚
0939デフォルトの名無しさん (ワッチョイ 7f8e-sCeO)
垢版 |
2021/12/11(土) 12:49:33.02ID:w9jtQY7u0
>>936
ブラウザやVisualStudio完全否定かよ
0944デフォルトの名無しさん (アウアウウー Sa6b-di0a)
垢版 |
2021/12/11(土) 14:06:47.47ID:s1sgTwO/a
>>939
web系技術の信奉者は現実をありのままに直視できないドリーマーが多いw
これは最近始まった話じゃなくてWindows 98の頃からそうw

Java界隈も昔はそうだったけど流石に10年ぐらい前に消えた。
Web界隈は相変わらず。

彼ら、もう15年ぐらい前からずっと「すべてはブラウザ上で実行されるようになって
デスクトップアプリは駆逐される」と言い続けているw
もう立派なカルトだねw
0946デフォルトの名無しさん (ワッチョイ 47e6-JWjg)
垢版 |
2021/12/11(土) 14:11:12.85ID:GfYv21Eg0
>>944
15年前のWEBアプリって駆逐されてね?
レス数が950を超えています。1000を超えると書き込みができなくなります。

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