ふらっと C#,C♯,C#(初心者用) Part135
■ このスレッドは過去ログ倉庫に格納されています
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part134
http://mevius.5ch.net/test/read.cgi/tech/1511951038/
■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured Listで中にclassをaddしていって
中のclassが解放されて歯抜けになって状態でaddした場合
nullの配列にaddされるか
歯抜けになったのをソートして埋めることって出来ない? 自分で明示的にnull代入しない限りListが歯抜けになったりしないだろ Listで型をclassにしてaddしていって
格納したclassがいくつか解放されて歯抜けになった状態でaddしたときに
歯抜けになった配列を埋めるようにaddされるか
歯抜けになったのをソートして埋めることって出来ない? >>766
いくつかaddして
listとは関係なく外部でclassを解放した場合
歯抜けになるでしょ その外部でclassを解放するって具体的に何のクラスのどのメソッドを呼んでいるんだい >>768
解放したいんじゃなくて
解放されて歯抜けになったとこにaddするか
ソートして歯抜けを埋めたいんだって dipose呼んだらゾンビになるだけでそいつはそいつだぞ まあ、いいや
超常現象でnullになるとしよう
Addに自動で隙間を埋めるような介護機能はない
IndexOfでnullの場所を探すのみ >>764
何を言ってるのかよく分からないけど、
Program.csにProgramクラスとTestクラスを作るのと、Program.csにProgramクラスTest.csにTestクラスを作るのは同じ
どっちでもいいけど普通は後者かな
ただ、以下のようなインナークラスにはするなってこと
static class Program{
...
public static class Test{}
} >>778
よくわかってなくてすみません
ただ、まさにインナークラスになる記述です
具体的に避けるべき理由を教えて頂けませんか? >>769
classがオブジェクト参照を意図するなら、Listが持っている時点でインスタンスは解放されない
Dispose()はアンマネージリソースといった“メンバーの解放”でインスタンス自体を解放はできない
GCは強参照されていないインスタンスしか解放しないので、明示的に代入しない限りnullに成りようがない
ひょっとしてやりたいのはこういう事か?(※機械翻訳のようで日本語が不自由
https://docs.microsoft.com/ja-jp/dotnet/standard/garbage-collection/weak-references
IDisposableに処分済みインターフェイスは無く、ObjectDisposedExceptionを投げるクラスは独自の内部フラグ >>779
関係ないクラスを一緒くたに管理しないほうがいいってこと
マシン設定ならマシン設定
データベース設定ならデータベース設定
権限管理なら権限管理
アイコン管理ならアイコン管理
プログラムは1つ1つ関心ごとに分けて後で組み合わせるのが基本
設定項目も一緒くたにしないで個別に設定クラスを作る >>779
アクセス名が長くなるから外に出せば見栄えが良くなる。
public staticだから動作には関係ない
ここで何でも聞いて気にするより動かしてみて確認したほうがいい >>779
Programのデフォルトの公開範囲がprivateだから
って思ったんだけどクラスって省略されるとinternalなんだね
じゃあ別にやってもいいかな
ただ、各フォームから起動元であるprogramクラスにアクセスするのは違和感があるからインナークラスは推奨しない
よく言われるグローバル変数にせず、フォームの起動時に引数で渡せばいいと同じレベルの話だから余り気にしなくていいかも >普通はVSのフォームデザインでプロパティからApplicationSettingにてPropertyBindingを行う
これはどういう意味や?
バインディングってのはデータソースがコロコロ変わる時に便利なだけだろ。何でグローバル変数みたいな
変わらんものに「普通は、、、、使う」なんて言いきれるんだ。
意味わからん。 グローバル変数(static変数)なんて難しすぎる機能は初心者には扱いきれないでしょう
普通にコンストラクタやメソッドに必要なものを渡していけば確実、安全、簡単だよ
var loginForm = new LoginForm();
loginForm.ShowDialog();
var loginUser = loginForm.LoginUser;
var loginService = new LoginService();
loginService.Login(loginUser);
var systemInfo = SystemInfo.Read();
var databaseModule = new DatabaseModule(loginUser, systemInfo);
var authModule = new AuthModule(databaseModule, loginUser, systemInfo);
var domainService = new DomainService(databaseModule, authModule);
var iconManager = new IconManager("url://to/icon/resource/base");
var formFactory = new FormFactory(databaseModule, authModule, domainService, iconManager, loginUser, systemInfo);
Application.Run(formFactory.CreateMainForm());
loginService.Logout(loginUser); 設定値と処理を密にすると
設定値集Aと設定値集Bとか異なる設定で動かさなきゃいけないときにウザいよ
それを消そうとするとグローバル変数は消えるけど
仕様でそういったもんが別にいいなら問題は起きない
環境変数みたいにインストール時に固定なんだよ的な >グローバル変数(static変数)なんて難しすぎる機能は初心者には扱いきれないでしょう
何を根拠に難し過ぎるというのか意味不明だ。
複雑だからか? どう複雑なんだ? 複雑なわけない。w
他に難しい理由があるのか? 誤動作するからか? するわけない。w
ちゃんと理由を上げて説明してみろよ。 >>758-760、>>762
ありがとうございます
参考になりました。頂いた内容で再検討してみます 入力可能なコンボボックスの値を取得したい。
ドロップダウンで選択した値を取得する事は出来た。
手入力した値を取得するのはどうすればいいのでしょうか?
https://i.imgur.com/Xh6vU1X.jpg ググったら
selecteditem.tostring()でやってるのが多いけどそれだとどうなの? >>791
こうですか?
if (comboBox.SelectedItem != null)
//cb = ((ComboBoxItem)comboBox.SelectedItem).Content.ToString();
cb = comboBox.SelectedItem.ToString();
else
//comboBox.SelectedIndex = -1;
cb = comboBox.Text
}
値の前にこんな文字も取得してしまいす
System.Windows.Controls.ComboBoxItem:
if〜で選択した値は取得できてます。
else〜で手入力した値を取得したいのですがうまくいきません。 >>790
何が聞きたいのかもっと明確にしないと誰も答えようがないと思うw
説明が下手なら(たぶんそうだと思うがw)人に冗長だと思われることをいとわず
くどくど馬鹿丁寧に書いて 編集可能コンボボックスを編集してSelectionChangedイベント発生するか? >>792
cb = comboBox.Text
これだけで良くない?
if elseで分岐させる意味よく分からない >>794
しないね。
>>790
KeyUpイベントでComboBoxのTextプロパティを読めば良い。 killfocus的なイベントで取得しねーとあれっしょ? >>795
そうすると、値を手入力したときに、選択した項目の値がおかしくなるんです >>797
そこら辺はケースバイケースかな。
>>798
WPFみたいだから、そのイベントは無いぞ。 >>798
これは駄目でした
private void comboBox_TextChanged(object sender, TextChangedEventArgs e)
{
String cb = comboBox.Text;
} そもそもコンボボックスでリストにない値を使うやり方がおかしいんですかね? <ComboBox x:Name="cb" IsEditable="True" TextBoxBase.TextChanged="cb_TextChanged" />
private void cb_TextChanged(object sender, TextChangedEventArgs e)
{
var text = cb.Text;
} >>805
おぉ、そんな使い方が。
>>798
すまない。>>800は間違いだった。 >>805
出来ました。ありがとうございますm(_ _)m >>807
スマホで撮った画像を上げるのはよくない
コードを貼れ
画像を貼るにしてもwindows標準のsnipping toolで必要なところだけ切り取ってアップしろ >>808
すみません
PCでここを開けなかったもので…
画像サイズもデカすぎました
次から気をつけます そんなしょうもないことに上から目線で偉そうにいう馬鹿に謝る必要ないのにw 一歩引いた視点からスレを冷静に観察できる俺カッケー StreamWriterでファイルの末尾へ書き込む場合、
ファイルのサイズは書き込み速度に関係しますか? >>818
回答でいいんですよね?
そのようです。ありがとうございます なんでだろうね?
関係しそうな気がするのに不思議だよね 逆にどんなファイルシステムなら影響が出るのかそっちの方が気になるよw ただのラッパーだから分からないが正解。Streamに依存するが正解。DATならまあ遅くなるわな。 そうかな
CMTだろうが穿孔テープだろうが関係ないと思うけどw 関係ないよw
メディアの問題というよりファイルシステムの問題
シーケンシャルにしかアクセスできないからシークが遅いとか、そもそも追記ができないとかいう話なら分かるが、
追記可能なのに書込み速度がファイルのサイズに影響するファイルシステムってちょっと思いつかん >>825
記憶媒体がどういう仕組みで記憶してるのかよくわからないから
メモリみたいなの想像してみた
追記に足りない領域しか空いてなかったら再確保するんじゃね?みたいな 業務アプリばっかりやってきて最近のトレンドに全くついていけてない老害に教えてやってほしいのですが、
●やりたいこと
WPFアプリ、SQLite(最新)を使用、EntityFrameworkで実装したい
DBはそれほど複雑でなく、せいぜい2つのテーブルをjoinする程度、あとは、各テーブルをCRUDする感じでサンプルに毛が生えたようなレベルです。
.NETのバージョンはv4.6.1とした場合、
どのパッケージを使用したらよいだろうか?が知りたいです。
参考にしたいな、と思った記事は、
https://qiita.com/massu/items/b2546a0d876e207de882#%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90
SQLiteで簡単にEFできるかな?と思ってコードを眺めていました。
だが、パッケージ名で.NET Coreを使用するように見えてしまい、
WPFで使っていいの?など何が何やら、、、
本人のバックグラウンドとしては、v3.5程度までの業務コーディング知識は
あるつもりなのですが、なかなか最近の技術、名称についていけておらず。。
最近のトレンドに乗りつつ、知識をつけつつ開発したいと思っています。
ちなみにこのアプリは業務使用ではないのです >>829
まずはこの辺の誤解を
・WPFは最近のトレンドなどではなく、とっくの昔に死んだ技術である
・EFはサーバー用のオーバーヘッドが極めて大きいフレームワークであり、デスクトップアプリで使うものではない 一番大きなギャップは、今の.NET界は完全にWebに傾倒していて、コミュニティの話題や新しい技術はほぼ全てWebであるということだな
デスクトップアプリなんか完全に時間止まってるから.NET 3.5の知識だけで全く問題ないよ >>831
>EFはサーバー用のオーバーヘッドが極めて大きいフレームワークであり、デスクトップアプリで使うものではない
ソース >>831
「死んだ」の定義を
トレンドでないというのはその通りだが >>825
抽象度の違う話だけどフラグメント化の状態によってはファイルサイズが大きくなると書き込み速度遅くなるよね? WPFが生まれた時からずっと疑問なんだが
これって覚えたほうがいい技術なのか?
すぐ主流になるだろうからそれから乗り換えようと思ってもう何年もたつんだが まぁWinFormsよりはマシじゃねえかなという感じ MSはhtmlとjavascriptでデスクトップアプリを作るPWAに手を出し始めた
C#自体がどうなるか不透明にになってきたね xmlでシリアライズするときに、配列のタグに番号を付与していくにはどうしたらいいのでしょうか >>844
なんか勘違いしてるみたいだが、PWAはWebアプリだぞ
今時ガワで何でもやるアプリなんてほとんど無くて、重要なのはWeb越しにある裏側の仕組みだ
つまり、PWAサポートするからバックエンドをVSやAzureで作ってね、ということ
そして、MSはC#を最重要なWebバックエンド開発言語として位置付けている
今更デスクトップアプリなどという時代遅れな技術を使いたくない、Web技術で全部作らせろ、というニーズは.NET開発者からも多いんだぞ?
今時C#=Winデスクトップアプリ向け、なんて言ってるのは10年遅れ >>847
C#の強みは、デスクトップとwebが同じテクノロジーで構築できることだろうし
ソレが崩れたらバックエンドの代わりはいくらでもあると思うんだわ
javaでもphpでもrubyでも >>848
今時Webできない開発者なんかいない(そうでない連中はどうせ新しい物買わないし先細りだし放っといてもMSから逃げられないから餌をやる必要がない)
MSから見ればそこに拘る意味がなくなってるんだよ
今の.NETプラットフォームはAzure含めて純粋にWebプラットフォームとしての使いやすさで勝負していて、
十分に競争力のあるものになってるし実際大成功してるよ 見様見真似で勉強始めたばかりの初心者です
以下の記述でerror CS0234が出まして、ここから学習が進んでません
class test001:System.Windows.Forms.Form
{
static void Main()
{
System.Windows.Forms.Application.Run(new test001());
}
}
スクショttps://dotup.org/uploda/dotup.org1474023.jpg.html
各単語の意味もわかってませんが、
空のウィンドウが表示されるだけのソースのつもりで書いてます
1.基本的にこの記述は間違っているのか
2.error CS0234の対処法ググるとVisual Basicの設定方法がヒットするんですが、
メモ帳とコマンドプロンプトで制作してる者としてはどう対処すべきか
(取り急ぎ開発環境導入しますが、メモ帳だけでやってる方もいるらしいので)
以上2点ご教示願います >>850
どんな環境で何を見て始めたのか知らないけども、
VSならプロジェクト作成から「Windows フォーム アプリケーション」を選んで実行すれば、
空のウィンドウが表示される
初心者ならコマンドプロンプトで作らなくていいんじゃね? >>850
初心者がIDE入れないでやるのは自殺行為
自称上級者でもメモ帳ではまあまともにアプリなんて作れない
IDE入れる
本を買って来て手順を踏む
5年たったらメモ帳でアプリ製作に挑戦 c#はどの場面でもメインにはなれないけど隙間隙間でやっていくだろう >>850
おそらくSystem.Windows.Forms.dllへの参照が埋め込まれていないんじゃないかと
うちの環境だとIDE入ってるせいかSystem.Windows.Forms.dllへの参照は勝手に入るが
コンパイルエラーコードはこの辺りに纏まっている
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/compiler-messages/CS0234
といってもVSはVSでエラーコードに関してヘルプをBingで検索しだす奇天烈仕様 azureの知識とかどうやってつければええのですん? 回答ありがとうございます
実際の対策としてVS導入はするつもりですが、
知識欲として、参照が埋め込まれていない状態をIDE介さずに解消するのは難しいのでしょうか? >>857
コンパイラスイッチで参照追加すればいいよ >>848
> javaでもphpでもrubyでも
よりによってなんでそんなアホな選択肢なんだよ w > 今時Webできない開発者なんかいない
Webやってるのって少数派じゃねーの。使い捨て技術者のイメージ。 >>857
ビルドも通らない人間が気にするこっちゃないよ >>861
そんなことはないでしょ。
でも、ドリーマーが多いのは確かだと思う。
なにせ20年ずっと「UIはHTMLの時代になる」って言い続けてるんだからw >>857
csc test.cs -r:System.Windows.Forms.Dll
でもできない? ■ このスレッドは過去ログ倉庫に格納されています