0からの、超初心者C#相談室
何にも知らない0からの出発、超初心者のためのC#相談室 コンソールアプリから初めて、 コマンドラインのよる処理分岐 リダイレクトとかからかなぁ ふらっとがあるし、参考になるようなテンプレも無いクソスレ立てて何がしたいの? Visual Studioインストールするだけで不要だよこのスレ C#で何つくるの? 目的がないと覚える気力がでない。 つい先月にunityではじめてC#スクリプトに触れた初心者なんですが Unityのアセットがよくわかってなくて、 とっかかりすらわからないので C#でのデータベース利用(XAMPPのMySQL等)と Unityゲーム内のカメラ画像を取り込むような C#での機械学習(APIかライブラリ)を利用する為のご指南下さい。 VRオープンワールド内でのモンスターAIの作り方みたいなものの説明サイト等あればよろしくお願いします。 Application.Run(new Form2()) これはオブジェクトをApplicationクラスに渡してるのでしょうか? Form f=new Form(); Application.Run(f)と同じなのでしょうか Ruby では、オブジェクトを一旦、変数に代入してから関数に渡しても、 直接渡しても同じ def f( str ) puts str end text = "a" f( text ) #=> a f( "a" ) #=> a >>9 すいませんRuby読めないです Application.Run(new Form())は変数が無いですが何を渡してるのでしょうか 入門書にも書いてないので困ってます Form2なのかFormなのかどっちやねん 書き間違いならどっちもいっしょや Ruby は可読性が高いから、誰でも読める。 def で、f という関数の内容を定義してるだけ def f( str ) 関数の処理 end その下で、f を呼び出すときに、引数に直接、"a" を渡すか、 text = "a" と一旦、text という変数に代入してから、引数に渡すかだけの違いだけでしょ? どちらも同じ これは、"a" という文字列リテラルだけど、オブジェクトでも同じ。 引数に直接、new A( ) とオブジェクト(インスタンス)を作って渡すか、 text = new A( ) と一旦、text という変数に代入してから、引数に渡すのも同じ >>8 同じだけど オブジェクトの寿命が違うんじゃないかな f に代入した方が長生きすると思う >>11 ,13 どちらで書いても意味は同じなのですね・・・ ありがとうございます。 unity始めてたどりつきました。DateTimeだけじゃ無いんですが、parseとかで例外が出るじゃ無いですか?あらゆる例外に対処して、とりあえず例外でプロセスが落ちることを無くしたいのですが、どう言う定石で詰めていくんですか? catchして握りつぶせば落ちなくなるが 代わりに暴走するリスクがある >>15 ドキュメントを読んで各メソッドが何の例外を投げうるかを確認して、適宜必要な箇所にcatchを書いていく D = function(n) { a = n while (n > 1) { n = ifelse(n %% 2 == 0, n / 2, 3 * n + 1) a = c(a, n) } a&plot(D(n),type="l") &function(n)length(D(n)) Rです、コラつ問題で任意の数値を代入すると1までの計算結果、そのグラフとグラフ内の最大値にマーク、計算回数を返すプログラムを作りたいのですがうまく繋げられません。最大値にマークもできません。 >>16 >>17 ありがとうございました。基本に忠実にと言うことですね。Javaのように catch(Exception) とか throws Exception のような凶悪なものが無くホッとしていると言うか、ちょっとだけ残念な気もしてます。重ね重ねありがとうございました。 すみません C# でUSBの抜き差し及び、デバイスリストを得るサンプルありますか? (関数だけでもOKです) 環境は VS2019 Win10(2004) WPF で使っています。 >>22 情報ありがとうございます あるんですね いくつか見つけたのですが win32?かなにかを使うらしく 僕の環境では動かなかったので なにかわかったら教えてください >>23 WM_DEVICECHANGE に反応してチェックするようにしてみたけど、 イマイチ思ったようにメッセージが来なかったんで、結局ポーリングしてた。 今でも基本はポーリングしてる。 if(a=0) と書くと代入されたり、0かどうかテストされたりという意味か? >>27 MATLABとOctaveとか……違うか インターネットが始まった当初なら グローバル化とか情報共有とか甘い言葉が通用したけど 今時、情報は金だからな 「何も分からないからタダで教えて!」って口開けてるだけじゃ 虫が良すぎだよな 違うな 情報の内容に応じるんじゃなくて 情報欲しがってる奴が「どれくらい欲しいか?」に応じてるんだよ 株や為替や骨董品と同じ 自分で調べるのが面倒で金払ってでもまとめた情報欲しがる奴がいれば Hello!でも金になる for (; ; ) { var str = "Hello, world! "; Console.Write(str); } string str; for (; ; ) { str = "Hello, world! "; Console.Write(str); } 私は下のほうが良いと思うんですが 入門書などみると上のように書いてあります、どっちが良いんでしょうか? 中間言語はどちらも全く同じみたいなんですが >>34 変数のスコープが違う コンパイラの最適化でILは同じになるかもしれないけど ループの中でしか必要ないならそのケースは前者のほうがいい ありがとうございます 変数のスコープのことまでは思い至りませんでした 上側は変数を繰り返し宣言してるようで嫌だったんですが jsonの逆シリアル化について教えてください 以下のコードでローカルのjsonファイルを読み込み、逆シリアル化をしてオブジェクトを得たいと考えています @var readJsonFile = File.ReadAllText(filePath); Avar jsonDeserialize =JsonSerializer.Deserialize<List<Food>>(readJsonFile); public class Food{ public string Name{get;set;} public int Price{get;set;} } しかしAの部分が上手く行きません。 変数readJsonFileには所定のjsonファイルの内容を取得出来ているのですが、jsonDeserializeには値が入ってきません。 具体的にはデバッグで変数の中身を確認すると、jsonファイルに記述している項目数だけ要素は取得していますが、Name:null、Price:0の様にファイルに記載しているName等のデータがありません。 エラーなどもなく、何が原因なのか突き止めることが出来ません…。 初歩的な質問で申し訳ありませんがアドバイス頂きたいです。 長文失礼しました。 >>39 です 書き込むスレを間違えました すみません C#でもWIN32APIが使えるみたいなのですが(関数名が若干変わってる?) そういうのって何処で調べられますか? WriteProcessMemory→WriteMemory とか関数名が若干変わってるみたいですが >>44 自分でラッパー作る場合にはdllimportして直接win32apiたたくのでメソッド名が 変わることはないよ win32apiのラッパーライブラリとかだと名前変えていることもあるかもしれないけど、 そういう場合にはライブラリのリファレンスを見るしかないよ 別のスレでお前がやろうとしてることは古い WinFormsやれって言われたのでそれをやりたいと思ってるのですが WPFとかASP.NETとか色々あってWinFormsって具体的に何か分からなくて困ってます これだよって本があれば教えていただけると助かります やさしいC#に載ってる↓みたいなコードはWinFormsとは別なんでしょうか public void Main(){ Application.Run(new Sample()); public Sample(){...............} https://ideone.com/eUwGbP こういうのをやるのはもう古いのでしょうか? 右も左も分からないからよく分からんです… 「winforms」「winforms wpf 違い」などで検索! 知らない単語は、何でも検索すれば良い 今朝プログラム始めたばかりのクソど素人なんだが、YouTubeの動画の通りの内容入れてるのに動かない…… Unityで使うプログラム作ってて、数字入れても色が変わらんぞ https://i.imgur.com/clzs7z6.jpg https://i.imgur.com/J8BeA7q.jpg >>50 どの動画? 変数名speedって書いてあるけど色を変えるためにいじるの本当にそこで合ってるか? >>51 https://youtu.be/muOOLwfbjfs これ でも一応?解決はした 色は変わってないけど処理は正常に動いてる ニコニコ動画の弾幕ツールを作りたいのですが何か参考になる動画や資料等ないでしょうか? 別のスレで聞いたら使えそうなクラスとか駆使して作れば良いって言われたけどプログラミング自体入門者なんで検討も付かないです 外人のC#動画漁ってますが中々目的のものが見つからないです スクリプト言語とかも学ばないと出来んのでしょうか? https://sites.google.com/site/arktoybox/app https://sites.google.com/site/nantonaku999/home/fairu-cang-ku2/fairu-cang-ku-2 >>55 弾幕ツール ソースで検索しても出ないので教えてほしいです 海外とかこういう似たようなツールたくさんありそうですが なんて検索すれば出てくるか分かりません 弾幕 ソース c# ぐらいのキーワードで出てくるけど C#とDXライブラリで弾幕STGを作ってみよう! Part1 準備編+C言語の復習編 とか。中身を見ていないけど 上と下の書き方って意味同じなんでしょうか? 読んでる参考書は下の書き方なんですが古い? public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } } ///////////////////////////////////////////....... class Sample : Form { public static void Main() { Application.Run(new Sample()); } public Sample() { this.Click+=... } } マウスをクリックしたところから離したところまで円を描くだけのプログラムなんですが endposからstartposを引くとなぜ幅になるのか分からないので教えてほしいです https://ideone.com/3a6auq 四角形の内接楕円を書くAPIを 使っているから マウス移動の矩形を計算している >>64 レスありがとうございます マウスの移動した距離から開始地点を引くと何故図形の高さと幅になるのかイメージ付かないです 開始点と終了点の距離はどうやったら求まる? 更に都市距離だとどうなるか?って話 画面(の一部)を繰り返し描き換えるときに Graphicsを何度も再取得、破棄するのは非効率なので フィールド変数に保存しておいて再利用するようにしていますが 本来はどのように処理するのが正しいでしょうか? ビットマップを保存してpicture.imageに代入 >>68 実際にコード示して説明してもらわないと「非効率」がどういうことなのか「本来」がどんな条件のことなのかわからない。 とりあえず頻繁に設定を変えるものをフィールド変数にして使いまわすのは不具合の原因になりやすい >>69 おまえは何を言っているんだ Graphics g; void begin(){ g = Graphics.FromImage(this.picturebox1.Image); } void hoge(){ g.drawline(...) } void piyo(){ g.rectangle(...) } ...... ・ディスプレイは他のアプリで共有され使用される。 ・グラフィックオブジェクトは有限。 よって描画したらすぐ開放が基本動作。 bitmapからもGraphicsは作れるので 描画用のPictureと同じサイズの bitmap作って書きためておくのは定石 c#プログラマはコンピュータオタクの陰キャ世間の評価。 これ事実だけど。 金髪、イレズミ、冬でも半袖、電車では必ず優先席にすわり、タバコを吸う。 これぐらいの服装規定等を設けて、c#プログラマのイメージアップをはかるべき。 Visual Studio Community 2022 WinForms .NET6で カスタムコントロールを追加して[デザイン]画面を開くと Object reference not set to an instance of an object. エラーが出るのですが .NET6はカスタムコントロールを未サポートということなのか何なのか少し困っています 小数点以下の桁数を取得したい 整数になるまで繰返し10を掛けていく方法を考えたけど、丸め誤差が出て上手くいかない 文字列へ変換して文字数を数える方法だと、なにか負けた気がするし、指数表示のときに正常に動作しない 中学生か。高校になるとlog習うからそれまで寝て待て。 public void doXXX<T> (T t) where T : Control, ISomeInterface { //なんか、やる foreach(var c in t.Controls) { if(c is ISomeInterface c2) { doXXX(c2);//ここでコンパイルエラー } } } みたいな感じのメソッド作りたいんですけど、どうすればこのwhere制約突破できますか? dynamicにキャストすれば出来ますが、もっとスマートな方法ないですか? ぼんやりとした質問ですが、 Form1にWebView2が合ったとして、Form2でお気に入りを作って、Form2からForm1の WebView2にナビゲートしたいんです。 やってみたんですが、Form1にあるはずのWebViewがForm2から出てこないんです。 調べてみたらキャスト?とかいうのが必要らしくて、キャストはちんぷんかんぷんです。 コード書いておくので誰かお助けを~ 後Form1のWebview2にアクセスしようとしたら保護がかかってしまいました。 ランタイムを噛ませたりとかよく分かりません。 こんな超初心者の俺ですが、助けてください。 private async Task InitializeAsync() { await webView21.EnsureCoreWebView2Async(null); } private async void Form1_Load(object sender, EventArgs e) { await InitializeAsync(); webView21.CoreWebView2.Navigate("https://web.biz-prog.net/" ;); } private void button1_Click_1(object sender, EventArgs e) { Form2 f2 = new Form2(this); // 自フォームへの参照を渡す f2.Show(); // サブ・フォームを表示 } ここからForm2 public partial class Form2 : Form { Form1 f1; private object webView21; public Form2(Form1 f) { f1 = f; InitializeComponent(); } 試して見たんですが、オートコンプリートに((Form1)).webview2が出てきません NullReferenceExceptionには ArgumentNullException.ThrowIfNullみたいなやつはないの? >webView21 わらた こんなのまで21にすんのか おいマども、C#程度、教えてやれよw 彼らは君らの競合には決してならんからw >>46 ラッパ作るときは ドゥルルンポートせず、静的に作るだろ。C#でンポートするのをラッパとはいわん。 >>79 log だけ知ってても仕方ないぞ。 公式は 10進桁数 D= B(2進桁数) log102 の繰り上げ整数値 だが、log102 は浮動小数では完全表現できないので、 その時点で誤差を含んでるといえるが、ただし、公式は「繰り上げ整数値」だ。 つまり、結果が 999999999... 10000000....1 のような値にならない限りは、実用上問題なく、 log102 をかけて、偶然、9999999.... 10000....1 のような結果になることもまずないであろうから、誤差があっても問題がないということだ。 本題の 小数桁取得であるが、色々あるんだろうが、 IEE765 の浮動小数アルゴリズムの、逆をたどって、それを参考にすればよいではないか。 頭の体操になるな。頭の弱い漏れは少し時間かかるな。というかこんなもの作らなくても、数学演算系の関数は、 だいたいこういうのを加味した処理だろうけど。 >>78 やっぱり処理系によっては不可能だな。「〇桁までの入力」という仕様制限をかければ可能だが。 それよりも、C# には Decimal 型ってあるみたい。知らんかった。これは便利だな。構造体らしい。 仮数部が 12バイトらしい。 read.cgi ver 07.4.7 2024/03/31 Walang Kapalit ★ | Donguri System Team 5ちゃんねる