ふらっと C#,C♯,C#(初心者用) Part152
■ このスレッドは過去ログ倉庫に格納されています
!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 >>103
httpsはメール転送プロトコルじゃないやん >>101
そういえばそうね
自分でも気付いたけどIEnumerableならkey重複もいけるのか、というかそれが一番大きな違いか IEnumerable<int?>からint?へのキャストはどのように行うのでしょうか?
キャストの方法を調べても見つけられず、とても初歩的な質問で申しわけありませんが教えてください Razor Pagesのチュートリアルをやってるんだけどさあ
Sqliteを使った時って、app.dbとかいうファイルが作られるけど、これどうやって中身を見れるの???
$ sqlite3 app.db
みたいにしたら、暗号化されてるかもしくはデータベースではないって言われてしまう
暗号化されてるとしても暗号化キーなんて知らんぞ・・・・ >>107
IEnumerable<int?>は複数のint?を持っているものなのにそれを一個のint?にキャスとしたいという状況が理解できないんだが >>109
説明が足らずすいません
int? test = numbers.Select(x => x.orderNum)
このように複数の要素からひとつだけ抜き出して、それをint?にしたいと考えています >>110
int? test = numbers.Select(x => x.orderNum).FirstOrDefault(); >>108
GUIのフリーソフトでSQLite対応のやつあったと思うけど名前は忘れた >>110
勝手にorderNum番目の要素が欲しいと仮定して
int ? test = numbers.Skip( orderNum ).FirstOrDefault(); >>110
Selectって名前から連想して複数の要素の中から一つを選択するメソッドだと
思ったのかもしれないけどそうじゃない(そうだとしてもそのコードは奇妙に見えるけどw)
Selectは数学で言えば集合の要素に変換関数を適用して写像(別の集合)を作るメソッド。
LINQのチートシートみたい記事ないかなと思って今検索してみたら
書いてくれてる人がいっぱいいるみたいなので、そういうの読んで自分が求めているのは
どれなのかよく考えた方がいいと思う WhereとSelectはSQLに寄せた結果何だろうけど紛らわしいから
JavaScriptみたいにFilterとMapにして欲しかった >>110
IEnumerable<int?>はint?の複数形なのは理解してる?
つまり複数形を単数にキャストしたいと言われても複数あるうちのどれ?ってなる
んで具体的なコードまで書いてもらいたいならnumbersの型まで書いいたほうが良い
orderNumがメンバ要素なのかインデックス変数なのかでみんな混乱してる
メンバってことで先頭が欲しいなら>>112でもいいしnumbers.FirstOrDefault()?.orderNum;の方がスマートかもしれない Selectを最初に当たった要素抜き出しと勘違いしてるのか 遅くなってすいません。
皆さんがおっしゃる通り、Selectの挙動が理解出来ていないまま使っていました。
EFでデータベースとやり取りをしており、numbersはテーブルを表し、
orderNumはその中のひとつのカラムです。
情報も不足していてすいません。
このテーブルにはひとつのレコードしかなく(numbers[0]の意味) Selectすれば要素を取得出来るだろうと考えていました。 >>93
コントロールコネクションとデータコネクション処理の区分けしていない、どんな
順番で実行しているかも分からないのでどこがおかしいとか言うのは無理かな
プロトコルの実装はシーケンスが見えないとアドバイスのしようがないよ
1.は単純にいえば確保したバッファのサイズを越えて読み込もうとしているか、
グルグルReciveでバッファの割り当て忘れているかだと思うけど
2.で1.を削るっていうのが何の処理を削ったのかよく分からないけど、PASVで
「226」は返ってこないはずなので、サーバがおかしいのでなければコントロール
コネクションの制御が間違っていて他のコマンドのレスポンスを見ているか、
以前のコマンドのレスポンスを見ているのではないかな >>119
ならnumbers[0].orderNumでいいんじゃないのか https://www.c-sharpcorner.com/article/using-oxyplot-with-xamarin-forms/
上記サイトを参考にグラフを表示させたんだが、背景が黒になってしまうので白にしたい。
どうすればいいでしょうか?
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="testxamarin2.Pages.Gurafu2"
xmlns:oxy="clr-namespace:OxyPlot.Xamarin.Forms;assembly=OxyPlot.Xamarin.Forms" xmlns:local="clr-namespace:testxamarin2.Pages">
<ContentPage.BindingContext>
<local:OxyExData />
</ContentPage.BindingContext>
<oxy:PlotView Model="{Binding PieModel}" />
</ContentPage> ひょっとしてダークモード使ってるなんてことはない? 正解はXamarinスレへじゃないかw
Microsoft Xamarin part8 [.NET MAUI]
https://mevius.5ch.net/test/read.cgi/tech/1627778316/ データ集計用にSystem.Windows.Forms.DataVisualization.Charting.Chartを使ってグラフを描画して画像保存をやっています。
特定のX軸のグラフのプロット座標をスクリーン座標かクライアント座標として得たいのですが、何か方法はあるでしょうか。
目的はグラフのY軸のピーク値とかのプロット地点の横に注釈を入れることです。
ChartオブジェクトのPostPaintイベントを追加してSystem.Drawing等でChartコントロール上に描画はできることは確認できていますが、
描画するにもグラフの各座標が判らなくて困ってます。 ValueToPixelPositionでできました。
Chartは情報が中々得難いですね。
Excelのグラフのがよかったかな。 >>128
今それを書こうと思ってた
まあチャートなんか使ったことないんだけどねw
佐藤さんて人がchmを作ってくれてるよ。
それを見たら1分でそれにたどり着いた
http://www.kanazawa-net.ne.jp/~pmansato/ >>129
貴重な情報源ですね。ありがとうございます。 Visual Studio 2019でC#の単体テストのプロジェクトを新規作成する場合、
MSTest
NUnit
xUnit
と三つあるのですが、どれがお勧めですか?
最も一般的なのを教えてほしいです。
ちなみに、OSはWindows 10で、.NET Coreを使い、
GUIを用いないデスクトップ・アプリケーションのテストをしたいです。 >>132
では、xUnitにしてみます。
ありがとうございました。 単体テストで使うAssert()などのコードは、
バージョン管理ツールで保存するときは一緒に保存しますか?
単体テストで使うコードは本番環境にも入れたままにするのですか? if(debugger.isattached)debugger.break();
みたいにやればデバッガとつながってるときだけ止まるので入れておいても害はない >>134
バージョン管理するのは当然
単体テストはプロジェクトを分けるだろうから、本番環境にデプロイされることはない >>135-136
ありがとうございます。
デバッガーに繋がっているときだけ止めれるので入れておいても害はないけど、
プロジェクトを分ける場合は本番環境には入れないんですね。 先生 インスタンスメンバーにアクセスしないメソッドはstaticにマークしたほうがいいんですか?う゛ぃじゅあるすたじお先生がそう言ってるんですけど >>138
むしろ「それ」をあえてインスタンスメソッドにする必要があるのか、
と考えるべきだろうね。
普通はないはずだと思うけどあると確信できるなら別にいいんじゃないの?
普通はないはずだと思うけどねw ttps://www.youtube.com/watch?v=6pF07zSHVjA
さっきまで見てたのはこれ C#での非同期処理のキモがハマりどころも含めてわかりまくりの決定版みたいな記事どっかにない? >>144
気軽に建てたスレッドの99%はバグってるので安心して欲しい >>146
でもわたしはあなたの頭がハゲってるのが心配なんですよ >>144
https://www.kekyo.net/async
俺はこれが参考になった記憶あるな
調べたのって何年も前だから、もっと良い記事あるかもだけど >>144
スレッド
注意点一覧
・シングルコアで動くか?
・応答がないときに自決するか?
・失敗時のメモリリークはないか?
・タイムスケジュールはあるか?(例:1分の内AスレッドはX秒、BスレッドはY秒等)
・生存確認方法はあるか?
・実行中の状態は取得できるか?
・ログは出力できるか?
・最大使用メモリは把握できているか?
・失敗時のリザルトの受け取り方法は適切か?
・処理が複数失敗する可能性は考慮できているか?(例:ファイルオープン成功→ファイル書き込み失敗→ファイルクローズ失敗→tempフォルダ削除成功のとき何が返る?)
決めるのが面倒なら使うべきでないと思う >>151
おお、これは素晴らしい
ありがとうありがとう c# プログラマの書いたコードは美しい音楽のようだった。
タリバンは音楽家を処刑してるので、c# プログラマを対象に加えるべき。
c# って普通に考えたら音楽の符号だし、c# プログラマがすすめてくる「リーダブルコード」って本はどう見ても音楽関連。
https://i.imgur.com/nmlX1tw.jpg 率直な質問です
C#と.NETを一通り習得するのにどれくらい時間がかかりますか? >>157
自分の場合プログラム経験無しから「独習c#」を概ね理解しながら独学で読み進めるのに3ヶ月かかった。
LINQ やTaskなどは実践や実務でないと本だけでは習得は難しいと思う。 >>152
一般的なスレッド生存確認方法ってどんなの? >>158
それな
実際どういうコード組んでるかとか不文律の部分がてんでわからん
型の宣言にしたって最初にまとめておいたほうが良いのか、なら使い捨て変数なら使うところで良いのかとか まあ3か月である程度モノにできる人なんているとは思うけど
特別な才能の持ち主だけだと思うからそこは真に受けない方がいいと思う >>161
まあ不安が無くなってきたのは、2周目の読破が2ヶ月、3周目が1ヶ月で、合計半年過ぎた頃ですけどね。
c#もバージョンが上がって機能が増えて、初見さんには段々難しくなってきてると思う。 先生質問です。Bitmapの保存でエラーです
問題を単純化するために空のBitmapを保存して試して見たところ再現したので貼ってみます
デスクトップを始めとして特定のフォルダにだけ保存できません!
新規に作ったフォルダは大丈夫です。以前からあるフォルダでも保存出来るものもあります
セキュリティの関係かと思い、フォルダ右クリ→プロパティ→セキュリティのタブ で
比較したのですが全く同じであるにも関わらず一方だけ保存できません(ちなみにwin7)
VisualStudioのdebugフォルダの中だと保存可能です
考えられる原因、なにかありますか?
using (Bitmap bmp = new Bitmap(100, 100))
using (Graphics g = Graphics.FromImage(bmp))
{
var fullPath = "";
fullPath = @"E:\SS\aa.png";//× このフォルダの名前をSSSに変更すると〇
//fullPath = @"SS\aa.png";//〇 相対パス(debugフォルダ内)
///fullPath = @"F:\test\aa.png";//〇
//fullPath = @"E:\SSS\aa.png";//〇
//fullPath = @"C:\Users\(ユーザー名)\Desktop\aa.png";//×
bmp.Save(fullPath, ImageFormat.Png);
//↑ここでエラー
//System.Runtime.InteropServices.ExternalException: 'A generic error occurred in GDI+.'
} >>163です
追加です
C:\Users\(ユーザー名)\Documents\aa.png ×
C:\Users\(ユーザー名)\Pictures\aa.png ×
C:\Users\(ユーザー名)\aa.png 〇 >>163 追加です
using (Graphics g = Graphics.FromImage(bmp))
を抜いても再現します >>163
発生したExternalExeptionのInnerExeptionプロパティを見ればヒントが入ってんじゃないの typoしてんじゃね?と実験してみたら存在しないフォルダ名を指定していたら System.IO.DirectoryNotFoundException が投げられるのか
手元じゃ再現しないからわからんなぁ
Environment.GetFolderPath(Environment.SpecialFolder.Desktop) とか使ってもダメなんかね? >>163
たぶんシステム側のバグを疑ってるから質問してるんだろうけど、
それは自分で十分に検証した後でやること。
private void SaveDummyPng()
{
var bmp = new Bitmap(100, 100);
var path = AskUserForPngName();
if (path != "") bmp.Save(path, ImageFormat.Png);
}
private string AskUserForPngName()
{
var sfd = new SaveFileDialog();
sfd.AddExtension = true;
sfd.DefaultExt = "png";
sfd.ShowDialog();
return sfd.FileName;
}
なんでこの程度のことを最初にやらないの? >>166
InnerExceptionPrefix " ---> " string
_COMPlusExceptionCode -532462766 int
さっぱりです><
>>167
最初はEnvironment〜を使っていたのですがだめでした
>>168
それ行けました
でもこれ↓はだめです
public static void Test_MakePNG4()
{
var bmp = new Bitmap(100, 100);
var path = @"E:\SS\aa.png";
if (path != "") bmp.Save(path, ImageFormat.Png);
}
なんでなのおおおおおおおおおおお ・using (Graphics g = 〜) の外側でSave()を実行する
・Save()で直接ファイルに書き込まず、一度MemoryStreamに入れた後にファイルに書き込んでみる
思いつくのはこの辺りかな >>169
できたときとできないときのpathってデバッガで見たとき違った? >>169
そもそも同じディレクトリにテキストファイルは生成出来るの?
public static void Test_MakePNG4()
{
var path = @"E:\SS\aa.png.txt";
using (var writer = new StreamWriter(path))
{
writer.WriteLine("こんにちは");
}
} >>172
っていうか普通のセンスの人ならまず
(1) コードで指定しているパスのディレクトリをエクスプローラの
アドレスバーにコピペして開けるかどうか確認
(2) 開けたらそこで何等かのファイルの新規作成が可能かどうか確認
このぐらいはやるよね。
当たり前のことをやらずにエラーが出ます、どうしてでしょうって言われても知らんがなとしか 先生、解決しますた・・・
忘れていました、、、うちのPCには暴れん坊のアバストさんがいることを・・・・
あいつ、最近勝手にランサムウェアシールドっていうのの保護対象にE:\SSやデスクトップを追加してたみたいで・・・
ぐぐってみたら同様に勝手に保護対象を増やされたという報告がいくつか
>>172先生が当たりでした
System.UnauthorizedAccessException: 'Access to the path 'E:\SS\aa.png.txt' is denied.'
やばそうな常駐アプリは切って再起動して確認してたつもりが
なんと一番やばいアバストさんがそのままだったという愚かさ
先生方お騒がせしました・・・ そういやマカフィーもVSでC++のデフォルトテンプレのHello Worldをデバッグコンパイルするだけで、
ウィルス認定で50%以上の高確率で削除するしなw
winに最初からあるDefenderの方が誤動作少ないし機能も十分な気がする。 プログラマでありながらアンチウイルスソフトに頼ってる奴は恥を知れよ 今はもうdefenderにtrapsとかcybereason組み合わせるのとかが主流だろ 要するに>>169に書いてることは嘘だよね。
>>168でサンプルまで書いてやれと言われてる当たり前の検証をやってない。
批判されるべきはそういうところでしょ。
単なるうっかりなら誰にでもある。 >>185-186
という粘着。
まだこんな自分棚上げの2ch脳的思考が染みついちゃってるお方いるんだね ところで、どの書き方が好き?
コーディングルール云々は別として好みの話ね
(1) Hoge hoge = new Hoge();
(2) var hoge = new Hoge();
(3) Hoge hoge = new(); Piyo piyo = new Piyo().piyo; var hage = new Hage(light) >>198
型推論と動的型付けはまったくの別物だぞ ■ このスレッドは過去ログ倉庫に格納されています