C#, C♯, C#相談室 Part95
レス数が1000を超えています。これ以上書き込みはできません。
■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/
■コードを貼る場合はこちら
http://ideone.com/
■前スレ
C#, C♯, C#相談室 Part94
http://mevius.2ch.net/test/read.cgi/tech/1492843013/
■次スレは>>970が建てる事
建てられない場合は他を指定する事。 ■過去スレ
C#, C♯, C#相談室 Part90
http://echo.2ch.net/test/read.cgi/tech/1455160063/
C#, C♯, C#相談室 Part91
http://echo.2ch.net/test/read.cgi/tech/1467142749/
C#, C♯, C#相談室 Part91 (実質Part92)
http://echo.2ch.net/test/read.cgi/tech/1467211515/
C#, C♯, C#相談室 Part92 (実質Part93)
http://echo.2ch.net/test/read.cgi/tech/1485589613/
C#, C♯, C#相談室 Part94
http://mevius.2ch.net/test/read.cgi/tech/1492843013/ Dictionary.TryGetValueってどんなシーンで使う? 小さいwebアプリをサクッと作ってライセンス料のいらんlinux鯖に置けるのはいいな>core
大規模プロジェクトで使う人は居ないだろうけど C#でjQueryみたいにhtmlの中の要素を部分的に取り出すなどするのに
お勧めの方法おしえてちょ PythonのBeautifulSoupとかRubyのNokogiriとか使えば?
C#はスクレイピングには向いてない HTMLアジリティパック?があるけど使いにくい
最近はSelenium2使ってるけどまあこれも本当のやり方じゃないね HTMLAgilityPack、あとSGMLReaderって昔なかったっけ?
今もあるのかは知らないが
そもそもC#を勧めないってのは同意 >>14
あるけどJqueryのようなアクセスしやすさじゃない
Xpath指定しないといけないので困る 個人的にはCSSセレクタよりXPathのほうがむしろ好きなんだけど
むりやりXMLとして読む系は終了タグがない要素があるとツリーが無茶苦茶になるのが Proj1とProj2があります。
1は2を参照して2のメソッドを使います。
1の中でClass Aを定義しています。
2の中でデータをList<A>に入れるメソッドを作り、結果を1に返したいのですが、
その為に2から1を参照してClass Aの定義を使おうとしたら循環参照でエラーしました。
こう言う場合、どうすれば良いですか? >>17
何のためにプロジェクトを分けたいの?
まずはそこを明確にしないと始まらない。
循環参照してるってことは相互に切り離せないってことだから、現状ではプロジェクトを分ける意味は全く無い。
分けたい理由があるのなら、その理由次第で適切な方法は違ってくる。 >>17
>2の中でデータをList<A>に入れるメソッドを作り、結果を1に返したいのですが
この処理をFunc<T,TResult>で定義するのが常套手段
使い方はググればわかると思うが、わからないならプロジェクトを分けるの諦めるしか無いね >>17
どうしてもやりたいなら、ClassAを定義したプロジェクトを作ってProj1,2両方から参照すればいいじゃん
発想の切り替えできないとこの先相当辛いよ >>19
ありがとうございました。
Func<T,TResult>で上手く行きました。 Roslynってどうやって使うの?
ソースから仕様書を生成したいんだが可能か? 自分のコード見返してどういう動きなのかはわかるが何を思ってそうしたのか思い出せない時があるなw
こういうときに仕様書書いておけばよかったと思い、そして3分経つと面倒で忘れるw
イベントの依存関係まで考えたら他人のコードの解析なんかやる気にもならない 後で自分のコード見返して分からないってよく言われる話だけど俺はほとんど無いわ
コメントじゃなくてメソッド名や変数名でもいいけど、なるべくコード上に意図を残すように心掛けるのがコツだな
読めないコードを書く奴は大抵コードを製造作業による生成物と考えてる >>27
俺はやる気にもならないって書いているんだし>>23に言ってやれよw
そのリンク先のやつは書く内容がおかしいやつだからどうでもいいが >>28
だからツール使えよって言う話も理解できないバカ乙 w >>29
せっかく教えてやったのにってことか
ありがとうございました >>26
説明的なプログラムは誰にでも書けるものではない
書ける人にとっては当たり前と思うけどそうではないらしい
自社のコードが汚い人になぜ汚いコードを書くのかと聞いて回ったことがある
彼らは動くものを作るので精一杯なんだ 設計書も書かずいきなり書き始めたコードを綺麗も汚いもねぇよ
精々メソッドあたりの行数ぐらいしか評価のポイントがねぇ
書いた設計書に対してのソースがどうよ?って話になって初めて評価が下せる
俺はね >>31
それは確かに感じるね
彼らに共通して言えるのは、思考の抽象度を上げられないんだよな
話してると「そんな細かいことはどうでもいい」と感じることが多いけど、
その「どうでもいい」という感覚を理解させるのが非常に難しい >>33
抽象度とソースの綺麗さになんの関連があるのか説明できるの? >>33
その傾向はあるね
彼らに設計書を書かせると決まって日本語で手続きを書き始める そうやって風が吹けば桶屋が儲かる的なくだんないことを囀ってる限りモノなんか作れないよお前等w >>36
設計書が無いとソースは理解できないと考えるのなら、
君はプログラミングにおける抽象的思考(設計)の重要性を認めてるわけだよね
それなのになぜソースコード自体の抽象度が理解のしやすさに寄与するとは考えないの? >>33
それは言えてる
思考の抽象度
現代的プログラミングのキーワードだよなあ >>37
いや、設計書通りに組んであればええよ
何もなければ評価できん 設計書に従った上で説明的な(ある意味冗長な)コードを保守性のために書くと思ったが違うのかな >>40
それだと設計書に書いてない事は書くなって怒られるんだよね
設計書に書いてないことを書かないとビルドすらできないから無視するしかないんだけど >>37
そもそもなんで設計が抽象的なの?
お前の書いてる設計書漏れてるだけだろ >>42
君の言ってる設計書ってコーディングシートのことじゃないかな まず仕様書と設計書とコーディングシートの定義からやらないとだめな予感 最近のC#スレはマ板行くか首吊って死ね系の話題が多いですね
何かあったの? >>48
用途による
まあEntityFrameworkかDapperだろうけど >>49
linq to sqlってのは今は使わないんですか? >>55
その場合、例えばsql server向けに作ったC#プロジェクトで
DBをmysqlに変更しても大きな変更無く動かせるの? 現実的にはSQLやスキーマの互換性の問題で無理
確実にデスマーチです 今もmysql使ってる人は少ないと思うけど知らない人がいるのかな
時代は変わりました >>57
sqlserverを使うある程度大きなプロジェクトだとefを使うのが一般的ですか?
全く使わないなんてのも有るんでしょうか? >>60
基本的にはEntityFramework、パフォーマンスを求められる箇所はDapper >>61
生のSQLを実行するのは一般的ではないのですか? >>62
普通はストアド作っといて、指示するんじゃね? >>62
Dapperは生SQLだよ
DataReaderやクエリパラメータとオブジェクトの間のマッピングの単純作業を自動でやってくれるだけ >>62
EntityFrameworkでも生のSQLは書ける。書かなくてもパフォーマンスに(考慮しなくちゃいけないほどの)遅延がなければ書かない。 WebRequestを続けて二回同じサーバーに別のオブジェクトで通信したら変なエラーが出るんだがわかる奴いる?
これじゃ情報不足ならそのうち再質問するが。 「変」って何だよ具体的に言えよ
なんで相談室でまでこんな所から始めなければいけないんだ >>65
最近efを覚えて試しているんだけど、
efでusingしてdbに何か書き込むだけでも、なんかレスポンスが悪い気がするんだけど。
気のせい? HTTPレンスポンスの生文字列データを取得する方法ある?レンスポンスにSet-Cookieが何箇所行かにあるやつをWebResponseでSet-Cookieヘッダを取得しても1番始めのしか取得出来ない >>69
何に比べてレスポンスが悪いの?
初回が遅いのはどうしようもない >>69
EFはサーバーで長時間にわたって大量のメモリ食わせて使うもんだ >>81
リクエストオブジェクトにCookieContextオブジェクト入れる&リダイレクトをオフで取れた ASP.NET MVCでControllerの中のソースコードが増えて来て混乱気味なのだが、
どうやって整理すればいいのかな? >>84
モデルって言うのは本来は何を入れるところなの?
細々とした色んな処理を書いてもいいの? >>83
インプットを基にして処理を振り分けて、得た結果をViewに返すだけじゃないの? >>85
モデルにはすべてのロジックを実装するのが正しい
コントローラの役割はリクエストの内容を受け取りモデルに投げて結果をVMに入れて返すだけ ASPって出番ある?みんな仕事の案件でやってるの? WebFormsの案件はドカタだとWinFormsより多いだろ
うちはMVCでSaaSやってる クラスのメンバのプロパティを小文字で始めると
メッセージ IDE1006 名前指定の規則違反: これらの単語は、大文字で始まらなければなりません:
と出るのだが、なんで小文字だとエラーなの?
世の中では、大文字で始める習慣があるの? VS2017ならデフォルトで提案事項になっているがエラーになるのは自分で設定したせいでは で、それはエラーなの?
メッセージが出たら警告だろうが何だろうが全部エラーって言う人も多いけど >>97
自分でいじってないなら初期設定決めたMSの人では class A{
class B{
class C{
}
}
}
みたいに三重くらいになると、自分でもわけ分からなくなって来るんですが、
世間では三重くらいは普通ですか? >>100
内部クラスって表記しやすいだけでそれ以外のメリットあるのかね? javaの人は良く使うけど
スコープの問題だけだから本来は使わないでもよさそう 内部クラスはたまーーーに使うけど3重なんて一度もしたことないな >>100
static classだとよくやるけど
static class My{
static class Hoge{
static class Config{
}
}
}
My.Hoge.Configのように使える
でも3重は使わないな Javaだと1クラス1ファイル
客先の規約で配置できるファイルに制限があると内部クラスを使わざるをえない enum使いにくいから代わりにstatic class乱用してるわ >>109
後で要素増えたら参照先全部ビルドし直さなきゃならんあたり .Net Core 2.0では、だいぶん.NetFrameworkの実装がカバーされたと聞きました。
https://raw.githubusercontent.com/dotnet/standard/master/docs/versions/netstandard2.0_ref.md
これを見る限りでは、System.IO.StreamやSystem.IO.FileInfo、ISerializableなど
もあります。これらをUWPやASP.NET Coreでも使えるようになるという理解でいいでしょうか。 >>113
javaとは思想が違うからな
どうしてもメソッド使いたけりゃ拡張メソッド書けばいいだけのこと enumにメソッドを定義できないとenumスイッチがあちこちに書かれてシステムが汚染される
そんなことになるぐらいならenumは言語機能から追放したほうがいい >>116
メソッドが使えるとスッキリ書けるの?
例を教えて >>112
逆に聞きたいんだけど、どういう理解があると思ったの? >>117
Javaのenumのメソッドはポリモーフィック
なのでステートやストラテジーなど様々な応用が利く enumはどうせ定数に置き換えられるんだから、最初から定数で書いとけばいいな >>107
javaって、内部クラスも1ファイルとして出力されるんじゃなかったっけ? class A,B,C,...が有って
void func<T>(...){...}
みたいな関数を
func<A>(...);
func<B>(...);
func<C>(...);
みたいに順番に実行したい場合、
forループ使って書ける? >>122
>>107はソースの話やで?
オブジェクトはまとめたらいいだけだし >>123
var list = new dynamic[] { a, b, c };
foreach (var x in list)
func(x);
引数もインスタンスも無いならreflection >>125
なるほど。
dnamic使うしか無いんですね? >>127
reflectionと言うのでやる方法を教えて下さい >>119
APIはあっても、実際は例外投げるんじゃないかとか。
StreamやISerializableなど今まで散々レガシー扱いされてたのに、
すんなり実装されたのだったら、今までは何だったのかと思ってしまって。 >>124
「配置できるファイルに〜」のところもソースファイルの話だったか、失礼した >>126
リフレクション
そもそも用途がわからんけど >>130
最初のリンクがそもそも.NETStandardの話なんだけど、.NETStandardとは何か知ってれば(最低限ググれば)前者は迷う余地がない
後者は経緯知らないけどレガシーが実装されたらだめという理由がない
…と考える人が大多数だと思う C#でちょっとした文字列の連結を行う場合、+がいいのかFormatがいいのかReplaceがいいのかStringBuilderを使うのがいいのか悩んでます
どれが一番いいのでしょうか?
1. string value = A + "-" + B;
2. string value = string.Format({0}-{1}, A, B);
3. string value = "{A}-{B}".Replace("{A}", A).Replace("{B}, B);
4. StringBuilder sb = new StringBuilder();
sb.Append(A);
sb.Append("-");
sb.Append(B); こんな細かいことで悩んでいたら禿げるわ
それぞれにどれだけの差が出てくるか考えろよ とりあえず、環境が許すなら141、駄目なら139の1 連結ならいつもは分かりやすさ優先で+
実際に扱うデータで使ってみて遅いと感じたらStringBuilderに変えてるわ
置き換えは置き換えの時だし、フォーマット形式が必要と感じたらそれ使うし
悩むのかこれ…コーディング終わらんやろ… 最初はくだらない事に悩むからしょうがない。直に、開き直るからそれまでとことん悩め。 >>145
こういうので悩みだすのはスキルが伸びず閉塞感に陥って逃げ道探しているときだw StringBuilder必要なのはループで回す時くらいやろ
固定回数なら最適化されるんちゃうか
しらんけど 改行したい時はsb.AppendLine使う
var s = $@"hello
{A}
world";
別にこれでもいいけど、インデントが気持ち悪い 数個程度の定数個の結合にStringBuilderは無いね
@""で改行入れたときの改行コードってソースコードの改行コードに依存するんかな StringBuilder使うのは基本、ループ内で文字列結合するときだけだな と書くと、問題あるな。あるメソッド内でループしてないから普通に文字列結合してても、
そのメソッドを使う方でループしてメソッド呼び出されたら・・
ということでなんでもない。 パフォーマンスは大差ないので可読性で選ぶ
となると
定数個なら+
動的ならlinqとJoin public override と
override public とでは、どっちが普通ですか? >>156
じゃあstatic使う場合は
どこに入れるべきですか? EF Core + MariaDBで行ロックをするにはどうしたらいいですか? >>159
EFに明示的なロックは要らん
保存するときに他の変更があれば保存は失敗する EFは基本、楽観ロックだからね。
自分が更新するデータは誰も変更しないだろうということで楽観的に考えて行ロックを取得しない。
で、実際の更新時に、保存しておいたタイムスタンプ列や全列を比較して更新するUpdate文を
発行して誰も変更してなきゃ成功する。 対して、悲観的ロックは誰か変更するんじゃないかと悲観的に考え前もって行ロックする。
行ロック取得したければ、トランザクションの分離レベル変更して、間接的に取得すればいいんじゃねぇかな。
例えば、トランザクションをロックを使って実装してるデータベース使ってるなら、
トランザクションの分離レベルをREPEATABLE READにして読めば、読み込んレコードには
行ロックがかかる。 Consoleアプリの関数Aから別のスレッドで関数Bをを実行。
Bが終わるまで数分かかるので、その間はAの処理を引き続きやる。
Bが終わったら何らかの通知をA(あるいはアプリ)で受けとる。
そんな処理をしたいのですが、どんな手法がお勧めですか? >>166
普通にTaskとasync-await >>167
情報ありがとうございました。調べてみます。
>>168
それは何ですか?
>>169
関数Aの中で関数Bの終了をawaitするとそこでAの処理が停止しますよね?
それでは困るんです。 通知を受け取って何をするの?
Aが実行中に通知を受け取った場合は?
Aが終わったあとに通知を受け取った場合は? >>171
終わったってフラグでも作っておけばいい
何のためにそんなこと聞くの? >>172
実際にコードに起こすこと考えたら>>171の疑問出てこない?
ポーリングの有無とかB終了の通知はA以外で受けたほうがいいのかみたいな void A() {
...
Task.Run(() => B());
...
...
}
void B() {
...
...
SetSomeFlag();
}
こういうこと?
何をしたいのかハッキリしないな >>170
関数BをTaskで実行しておいて、たまにTask.Wait(0)がtrueを返すか確認する >>173
何で目の前の問題置いて次の実装考えるの
やり方が一つ決まったらそれでやり通す必要もないし
質問者の要件わからないのにそんなこと聞きだす必要はない 多分処理AはUIスレッドなんだろ
処理B実行中にUIは止めたくない
そして処理B完了でUIを更新したい
そんな要件だと想像した >>177
それだとInvokeやDispatcherの話にも広がりそうだね >>177
consoleアプリって書いてあるやん 元の話が設計で根本的におかしいか思い付きで質問しているかどっちか
後半に100ペリカ コンソールアプリなら
EventWaitHandle使うのが楽そう WaitHandleは完了を待つ側のスレッドをブロックするから、
それでいいんだったら普通にasync-awaitでいい Aで何したいかだけどコールバックでいいんじゃないの だったらTask.ContinueWithでいいだろ つかそもそも別スレッドで実行する必要があるのか
別プロセスで良いんじゃねえのか >>187
プロセス間のデータ受渡はsoket通信する感じ? >>188
勝手に要件作る気なのかw
しかも中身まで要エスパーとか 皆さんレスありがとうございました。
>Aが実行中に通知を受け取った場合は?
関数Cを別スレッドで実行したいです。例えばこんなふうに。
void C(){
Console.WriteLine("Bが終わった");
}
>Aが終わったあとに通知を受け取った場合は?
Aは終わらないと言う前提でお願いします。 >>190
>>186に出ているだろ
というかTaskメソッドをMSDNで調べろよ フラット案件どころかこれだけレスとキーワード出ていて自分で解決できないのならプログラムやめるべき 何でもいいけどすぐ動く完動品が出てくるまでこの調子だと思うぜ
どうせソースないんだろ、出てきたものを見ていじって作ろうとしてるんだろ >>190
BとCについてはよく分かった
Aが現状どういう処理をしているかによって
解決の仕方が違ってくると思うな コンソールアプリで関連性のない2つの動作を同居させるシチュエーションがわからん
マルチスレッドにしたら効率が良くなるってだけの頭の悪い発想じゃね
>>187が当てはまらないのならぜひ教えてほしいくらい >>188
コンソールアプリ同士なんだから、まず標準入出力でダメか考えるべきじゃね
ソケット通信が必要ならまあやればいいけど、それだとそもそもコンソールアプリなのが正しいのか疑問だ >>199
ASP.NET Coreなんてもろコンソールアプリだけどな >>199
GUIが必要ないからCUIってプログラムは幾らでもあるが。 >>201
それはGUIが基本なのかCUIが基本なのかの違いであって
コンソールアプリである必要性とは関係ないよね
別にGUIを基本にしろって主張じゃないよ
ただCUI=コンソールアプリってわけでもないだろうと Task<string>型からstream型に変換するにはどうしたらいいでしょうか?
調べてもよく分からず詰まっています よく分からんけどstringを取り出してからTextReaderかなんかに渡す >>205
https://ideone.com/CfSqOZ
こんな感じでurlを投げて返ってきたものをstreamに入れたい // HTTPアクセス
var req = WebRequest.Create(url);
var res = req.GetResponse();
// レスポンスをオブジェクトに変換
Stream s = res.GetResponseStream();
StreamReader sr = new StreamReader(s);
string str = sr.ReadToEnd();
もともとConsoleAppでこう書いて動いてたんだがGUIベースのにしようとしたらGetResponseが使えなかった
代わりにGetResponseAsyncにしたらエラーが出てもっとわからなくなった ナウなヤングはHttpClient.GetStreamAsync 低水準言語からC#に戻ってくるとlinqが有能すぎて困る困らない
ienumなんとかいうヤツにforeachないのはなんでなの?魔女のバァさんの呪いか? List<T>.ForEach(Action<T> action) みたいなやつのことかな?
はい副作用ドーン!はLINQとしてどうなのってことで入らなかった console では処理を止めても良いから、同期処理でも良い
でも、GUI では処理を止めると、アプリが動かなくなるから、
50ms 以上掛かるものは、非同期処理が推奨 Int32へのIntPtrを渡さなければいけないのですが、unsafeコードしか方法はないのでしょうか?
現状、
Int32 int32;
IntPtr intPtr;
unsafe { intPtr = new IntPtr(&int32) }
someObject.someMethod(intPtr);
みたいな感じです。 System.Runtime.InteropServices.ComTypesで用意されてるインターフェース使うと、
IntPtrで宣言されてるんですよね・・
まぁ、自前でrefで宣言しなおしてもいいんですけど。
うーん。どうしよう。 まぁ、out,ref使わずにIntPtrで宣言すると、null渡せるっての1つの利点ですかね・・
COMインターフェースでオプショナルな引数もあって、そん時はnull渡してくれみたいのもあるんで。
>>213みたくunsafeしなければいけなならデメリットの方が大きそうですけど。 Marshal.AllocCoTaskMemするとか
new int[1]してGCHandle.AllocでPinnedしてAddrOfPinnedObjectするとか 直接アンマネージにポインタだけ渡すってどうなんだろ
Marshal.AllocHGlobalとかしなくていいのか? いまだにどこまで.Pinnedしなきゃならないのかわからないw
趣味グラマだからわからないままでも問題はないんだけども
C#始めたころはいちいち書いていたが最近はずっと省いているな 変数がスタックにあるなら要らん
それ以外は必須
GCHandle.Allocは解放漏れでメモリリーク起こす可能性があるしパフォーマンスも悪いからなるべくfixed使った方がいい >>220
サンクス
だけどアンマネージ側に渡すのにいちいちunsafeにはしたくないな IntPtrってvoid*相当で型安全もクソもないし
AllocHGlobalもmallocを生で使うのと変わらん
unsafeよりよっぽどunsafe C#のスクリプト実行がVSなしでも動かせて、Pythonとかの代わりに使える未来はないかな? >>224
>C#のスクリプト実行がVSなしでも動かせて
これはもうできるやろ 今のままだとpythonの代わりにはならんわ
pythonは標準のモジュールにスクリプト用やOS周りの便利な機能が組み込まれてる pyhtonだと他のコマンドの出力をワンライナーで処理とかあるけど
C#はまあ無理だな
そういう所ですみわけされてる
適材適所 python だと標準でできて .net だとできないことって何かあるかな? getoptやargparseのようなものは欲しいと思ったな。その点ではMFCよりも退化してる。 ウェブサイトのリプレイスでPHPじゃなくてC#で書きたいので
上司を説得するために、PHPよりC#の方が言語的に優れてる点をまとめた
静的型付け
勝手に文字列、数値、真偽値等のプリミティブ型を変換しない
ジェネリクス
LINQ
名前空間名を指定してusing
非同期メソッド
ラムダ式
拡張メソッド
null条件演算子
逆にPHPの方が言語的に優れてる所ってなんだろう・・・
trait?
引数にタイプヒント付けるとnull安全になる所? 言語だけじゃなく、開発環境、ライブラリなど総合的に決めるべきやね。
結果は自明だが。 >>232
WebならC#は言語云々というよりプラットフォームの制約で選ばれるものだと思うぞ
サーバーがWindowsならC#はMSが強く推奨する第一の選択肢であり、よほどの理由がなければ他を使うべきではない
Linuxなら今では.NET CoreもあるけどPHP使ってるようなところの手に負えるもんじゃない PHP製サイトはフレームワーク使ってるけど
考えなしに機能拡張し過ぎたため
自分が入社した頃には既にコントローラーが大変なことになってて
このままじゃヤバイから書き直す事になった
>>234
なんか難しいのか
今時はDockerですぐ動く環境ができる感じじゃないの?
.NET CoreはDockerで作ったことは無いけど
PHPでテスト用の環境は作った事がある バックエンドだけC#で書いて
Angular等をフロントエンドに使う事を推す人も居るけど
RazorViewより良いの?
AngularやReact、Vueは別にクライアント側でしか使えない訳じゃなくて
node.jsでサーバーサイドでも使えるらしい Linuxでちゃんとした言語使いたいならJavaでいいだろ
言語機能が不満ならKotlin使えば>>232は全部満たしてるぞ
リプレースでやるにはDocker&.NET Core&C#全部新規導入なんてリスクが大きすぎるし、
成長という観点を込みにしてもそれだけのコストをかけるほど価値のある選択とは思えん
DockerってことはAWSかなんかだろ?
どうしてもC#に拘るんなら素直にWin鯖立てとけ SPAはサーバー負荷を抑えられるのが良いね。
せっかくのSPAフレームワークをわざわざSSRするのはメリットがよくわからん。 >>237
なぜDockerからAWSになるんやwww 言語に関してはKotlinに変えるのもC#に変えるのも同様にリスキーな気はする
.NET Core 1.0が出てから1年半しか立ってないからエコシステムの充実度的には劣るかもしれないけど
何も無い訳じゃないよね
Windows固有の物使ってなければ今までの物も移植可能な訳だし
>>238
SEO的にはサーバーサイドレンダリングもした方が良いと聞く フロントエンドもバックグラウンドもtypescriptが一番まともな仕上がりになる
従事者数が全然違う
フレームワークの開発者のレベルも違う
asp.net coreが10年もつとは思えん
MSがあっさり捨てて5年後はなくなってるかもしれない
asp.net coreがこれからだと思うのはセンスない
今も死んでるのになんで選ぶ? そらマルチプラットフォームに対応せにゃ生き残れんからやろ
あれ?Windowsじゃなきゃあんま美味しくねぇな?
詰んだな >>241
いまどき10年も同じテクノロジーを使えると思う方がおかしい 本当に素晴らしいテクノロジーは登場とともに
コアなサポーターがつく
残念ながらasp.net coreは誰の噂にも上らない
そもそも知られてない
多分web開発者が100人いるとしても知ってるのは3人ぐらいだろう
web開発者の間ではASPというワードは別の意味でしかとらえられない ASP.NET Advent Calendarが2016年まであったけど2017年は消滅した >>246
どこのまともな大手企業がasp.net使ってるって? asp.net coreがこれからだとか
web開発者の間で知名度が高いなんて思ってるほうがいかれてるわ
謙虚になって状況見ろよ 言語なんて主要なDBとORMに対応しててCRUDが書ければ
好きなの使えば良い 公式の.NET CoreのデバッガーはVisual Studio Code/Visual Studio/Xamarin Studioでしか動かせない
規約で禁止されてる
https://github.com/dotnet/core/issues/505
JetBrainsのRiderは独自の実装を書いて動かしている
.NET Coreはなんか中途半端なオープンソース化だな
VSやXamarin Studio、Rider以外でデバッグするにはMonoしか無いって事なのか
でもMonoだとライブラリの対応がどうなのか EF Coreで[ConcurrencyCheck]属性を使って同時実行制御をしたいのですが
IQueryableをToList()で複数取得しようとするとTrackingされなくて困っています
SingleOrDefault()ならTrackingされて正しく動作します
やりたい事はデータをListで複数件取得して、それらの値を変更してUpdateRangeでまとめて更新したいです
どなたか解決策を教えてください >>253
軽く試した範囲ではコンテキスト内ならListでもトラッキングされてるし
コンテキストまたいでもUpdateRangeで変更としてマークされて更新されたけど
勘違いじゃなければミニマムコードどっかに上げて ASP.NET以外にWebフレームワークってある?
Nancyぐらいしか見当たらない
他言語だと色々選択肢があるのに NancyがASP.NET MVCより良い点は
この辺に書いてあった
http://blog.jonathanchannon.com/2012/12/19/why-use-nancyfx/
https://codeopinion.com/why-use-nancy/
・ルーティングが少ないコード量で書ける
・設定を出来るだけ少なくしている
・サーバーのレスポンスをテスト出来る
・TinyIOCで自動で依存関係を解決(他のIOCコンテナも一応使える)
・パイプラインフック(リクエストの前後で処理を実行)
・Content Negotiationで、ルートでResponse以外を返した時にResponseに変換
・何処でもカスタマイズ・拡張可能
ORMとかは付いてないから自分で好きなのを選んで使うスタイル >>254
確かめて頂きありがとうございます
あれから試行錯誤して、OrderBy()の前にTake()を使うとTrackingされないことが判明しました
何故このような動作になるのか、どなたかご教授ください >>260
そんな動作にはならないから
お前の勘違いかお前が何か変な事してると思われ
とりあえずコード晒せや 1月の月例アップデートのKB4055532がおそろしくバグってるらしい
.net frameworkで文字化けしたり意味不明なエラーが連発したり突然アプリが落ちたりするそうだ
急にアプリの挙動がおかしくなったらまずそこに注意 今C#でゲーム作る時unity以外で作れるフレームワークある? UnrealEngine4が使える。
俺はエアプだけど。 3年前にXNAやってたけどもう意味ないよな?開発終了してるし、基礎勉強なら使えるかもしれないけど >>266
MonoGameがXNAのオープンソース化移植だからコードほぼそのまま動くで C#で書かれたライブラリをネイティブコードにコンパイルして他の言語から使うって出来るんですかね?
ターゲットとなるアーキテクチャはIA32/AMD64系に限らずARM系なども含みます
MonoはLLVMを使っているらしいので出来そうな気もしますがそのような記事を見つけられず・・・
他の言語で使いたいライブラリはttps://github.com/vvvv/SVGです(SVGをレンダリングしたい) C#を動かすにはプロセス内でホストするなり別プロセスなりで必ずCLRを起動しなければならないので、
アンマネージコードから普通に呼べてクリーンで自己実行なライブラリを作るのはどうやっても無理 >>269
ありゃ、そうなんですか。.NET NativeやLLILC、SharpLangなどネイティブコードへコンパイルする処理系の
があったらしいのでネイティブコード化できるのかなと思ったのですがそう上手い話はないのですね
>>270
これはMono上で動いているライブラリを他の言語から使うラッパーでしょうか?
Monoが動く環境でないとダメか・・・ ググったら普通にC++のSVGライブラリヒットするんだが・・・ >>271
ああそうか、「他の言語から使う」条件しか満たしてないね。
ネイティブコードにコンパイルしたいって書いてあったね。
しゅまん、これはmonoの上で動くやつ。 後出しだけど情報を小出しにするのも問題が大きいだろうから現状を。長文失礼
テキストなどの平易なベクターデータ(線、箱、円、文字など)をラスターデータに変換する
ラスタライザーが欲しい。ラスタライズ動作をカスタマイズできるとなお良い
ラスタライズ動作をカスタマイズしたい理由は最終的に欲しいラスターデータが2値モノクロなので
アンチエイリアスの有無や線幅等を調整できる必要があるため
動作させるプラットフォームはWindowsやLinux等を考えているけどOS無しでの動作もあり得るかも
呼び出す側の処理系はCかインタプリタなどからC経由で呼ぶ予定
最初はHTMLのレンダリングエンジンを検討したけどChromiumにしろFirefoxにしろカスタマイズして
実装する的な例を見つけられなかったのと無題に大規模になることもあって断念
次点としてSVG単体での利用を検討しはじめてイマココ。ググってみるとSVGのレンダラーとして
見つかったのはlibrsvgと>>268くらい。前者はGPL/LGPL故に一緒に使用可能なライブラリが制限されるし
後者はC#なのでネイティブで使えない?
う〜む。MonoってOS無しで動作させたり出来るのだろうか・・・
>>272
C++なSVGレンダラーってあったっけ・・・参考までにどれでしょうか? >>274
OS無しも考慮するとなると、C#板ではキツイのでは?
CまたはC++板での相談を推奨かな。 >>274
librsvg はlgpl2としても使えるように見えるけど、何か問題あるん? > テキストなどの平易なベクターデータ(線、箱、円、文字など)をラスターデータに変換するラスタライザーが欲しい。
WindowsならネイティブAPIのDirect2Dそのまんまなように思えるが
(最近だと部分的にSVGのサポートも入り始めた) OS無しもとか言ってる奴に
> WindowsならネイティブAPIのDirect2Dそのまんまなように思えるが
とか人の話を聞く気がないのか壊滅的に理解力がないのかどっちなんだろ... そこまでのマルチプラットフォームを求めるなら、
俺ならAWS LambdaとかでWeb API 作ることを検討するわ >>279
> WindowsやLinux等を考えているけどOS無しでの動作もあり得るかも
そもそもそのへんハッキリしねえから選択肢の一つとして紹介しただけだしなあ
SVGの直接的なサポートは別としてレンダリングの細かい要求は満たしてるしね >>281
> Linux等を考えているけど
って書いてあるのに、バカの上塗り? w >>282
こういう人に絡むだけで何も建設的なことを言わない(言えない)馬鹿、
生きてて楽しいのかね > こういう人に絡むだけで何も建設的なことを言わない(言えない)馬鹿
自己紹介乙 OSを動かせるハードウェアを用意して>>270で行くかラスタライザーを新規作成するかのどちらかになるのかな
>>277
LGPLの波及範囲は諸説あってはっきりしないのでライセンスがらみのトラブルを回避する上でも避けたいです MVC5で質問です。
スキャフォールディングのEditアクションでキー項目はテキスト
それ以外のみinputにしようとしています
ビュー作成直後は全てinputで作成されますが
その後、キー項目だけテキストに変えるにはどうしたらよいでしょうか?
EditorForをDisplayForに変えるとなにも表示されなくなりDisplayNameForに変えるとモデルのプロパティの属性のDisplayNameで設定した文字列が表示されてしまいます。 解決いたしました
バインドされているモデルがnullなのが原因でした
しかしnullなのにEditorForだと前の画面の値が引き継がれて表示されてるんですよね
腑に落ちないところもあるのですが、、
ありがとうございました 小さいrestサービスだからHttpListnerでWindowsサービスで作ったけど
素直にWebサーバー立てた方が幸せでしょうか 社内利用の小さいやつならべつにそれでいいんじゃない? クラウド使えよ
AWS & API Gateway & Lambdaとかなら仮想マシンすら必要ないぞ クラウド使いたいけど私の会社はまだ許可されてないのです
多分来期予算取れるからその時移行出来るようにはしたい
今後はわからんですが今のところユーザー少ない&社内のみなのでこれでいいかなぁ
気になるのは同時に接続来たらそれぞれスレッドが別になるのでしょうか >>295
サーバーレスなら自分でサーバーやサービス作るよりよっぽど簡単だぞ
金も社内のみなら余裕で無料枠に収まる 答えられなくはないけどスレ違いと言われればそうだな 自分はPHPとJavaScriptしかやったことがないので、WindowsのGUIアプリ開発は初めてです。
WindowsフォームとWPFをちょっといじりましたが、
WindowsフォームはUIをマウスで配置して動作を与え、
WPFはHTMLのようにUIはMLで記述する感じであとはフォームとやることは同じかなって思ったのですが、
この両者の違いはフレームワークの違いだと思いますが、
自分的にはWebからきたのでWPFのほうがしっくりくるのですが、
調べると重いとかで流行ってないらしいので、情報量的にもフォームのほうがいいのでしょうか?
UWPはインストールが面倒だったのでスルーしましたが、今からならUWPがいいですか?
あとC#ではC++にあるらしいWin32プロジェクトは出来ないのでしょうか?
どれ選べばいいのかわからなくて困っています。 Webの経験あるんならElectronでいいんじゃない?
WinFormsもWPFもとっくの昔に開発終了してるから今更新しく入るのはお勧めできないな Electron使うならC#で在る必要性がないような・・・・ レスありがとうございます。
>WinFormsもWPFもとっくの昔に開発終了してるから
それは衝撃です。
ビルドしてテストした感じ前者はビルド速度もリソース消費も良く、UIも期待通りで、
後者はビルドが遅くて、UIも表示通りにならなかったり、テストするのは面倒だなという印象でしたが、
もう改善が見込めないんですね。
UWPはWPFよりっぽいので、心配ですが、UWPをインストールして触ってみます。
いずれXamarinやUnity使ってみたいのもあって、C#の勉強をしてるので、
しばらくはVSでWindows用のアプリケーション作りながら頑張ってみます。 割と最近になってWinformsにHiDPI対応強化やWPFもスタイラス対応強化が入ったりしてるから
とっくの昔に開発終了は語弊があるけどね
とはいえMS自身の都合による突発的な更新という意味合いが強く
積極的にフィードバックを受けての修正や強化というフェーズはUWP以外終えてる感はある
.NETという基盤やIDEは優れているのに肝要のGUIフレームワーク選びでgdgdになるのマジうんこ UWPとWPFは似たようなものだから、どっちから学習しても問題なし。
覚えたことは簡単にUWPからWPFまたはWPFからUWPに移行できる。
そりゃ、コントロールとか微妙に違ったりすりけど、大きな問題にならんだろう。
xamlの機能に違いがあったりと、高度な事をやろうとすると差がでてくるけど。
だから、学習フェーズの普通の事する分にはどっちから入っても問題なし。 >WinFormsもWPFもとっくの昔に開発終了してるから
後、WPFにもFluent Design対応ぐらいはくるんじゃないの? >>310
そういうお仕着せ的なものを持ち込むのはWPFの思想にそぐわないからそれはないよ
WPF的には、開発者が望むならFluent Designを実装できるだけの機能を備えている、で十分
そういうDIYな思想こそがWPFが使い辛いと言われる最大の原因でもある 去年のBuild2017のセッションの資料に明言じゃないけど、それをにおわせる
ような事が書いてあったんだけどね >>311
備えているならせめてForm時代と同じことさせてくれよ
なんでListViewの罫線自分で描かなきゃいけないんだよ WPFはおわったんだ
それをまた何十人〜何百人のチームを作ってわざわざ新しいものを実装するだろうか? .Net Frameworkのバージョンアップの内容追うと、WPFも地味に改良されてるけどね。 開発が終わったとか時代が終わったとか言われても趣味でやる分にはWinFormが一番楽
仕事でやる人は逆に何でも対応しなきゃならないだろうし winformしたできんのだけどどうしたらええねん コマンドラインのオプションを解析・パースするエレガントなLinqを教えてください
例えば、
-i "hoge.txt" -i "fuga.txt" -o "hogefuga.txt"
というコマンドを受け取った時、
{
"i" : [ "hoge.txt", "fuga.txt" ],
"o": [ "hogefuga.txt" ]
}
こんな結果に変換したいです
GroupBy()を使えば出来そうな気がするのですが上手くいきませんでした 標準Linqだと辛いので拡張書くかな
少なくともコマンドラインオプションとオプションの引数をひとまとめにするやつは欲しい感ある クラス使わないと非常に汚いことになるし
オプションの設定を渡さないといけないのでlinqだけでは不可
たとえば-sがオプション必須かどうかがパーサーにはわからない
a.exe -s a.txtが
(a.exe)(-s a.txt)か
(a.exe)(-s )(a.txt)か c#ができたころからコマンドラインオプションの話はずっと言われてる
昔から独自実装したものはあちこちにある .NET Coreのdotnetコマンドのビルドが遅い
速くする方法は無いの? 初歩的なことなのですが・・・
ドット(.)を使って他所のメソッドやクラスを引用?してくるのをよく見かけますが
それがメソッドなのかクラスなのか見分けるにはどうすれば良いですか?
(クラス).(メソッド) の場合もあれば
(メソッド).(変数) の場合もあるのですよね・・・? >>326
そこだけで確実に見分ける方法はない
VSの色分けやツールチップに頼るしかない >>327
すみません ()の有無でどう判断が付くのでしょうか・・・?
>>328-330
そうだったのですね・・・
見分ける必要がないのですか 難しいです
プロパティなのですね 気を付けます
教えて頂きありがとうございます! >>331
括弧がつくのがメソッドでつかないのがフィールドかプロパティ >>331
下の例は判断できないけど、上のは後ろに()がつくからメソッドだとわかる >>332
>>333
そういうことだったのですね
勉強になりました これで少し先に進めます・・・
ありがとうございます! 精進します >>334
相談室じゃなくて初心者のほうに行った方がいいな。今回は優しい人がいて良かった。 >>335
そういったスレッドがあったのですね;
ありがとうございます 次からそちらで質問をします >>324
.NET Core 2.1ではビルドのパフォーマンスが大幅に改善されてるらしい
OrchardCoreのビルドで70秒かかってたのが7秒弱に >>337
.NET Core SDKをv2.1.4にして
早くなった…ような気もする
ソースを何も変更してなくても変更をスキャンするのは無くならないんだろうか?
本家.NET Framework+Visual Studioだと
何も変更が無い場合はほぼ一瞬だったのに Restoreっての毎回してるけど
これやらなかったら早い? C#のアプリからエクセルのシートのような罫線や文字が書かれたものをプリンターで印刷したいのですが、プリントオブジェクトで一つ一つ座標を確認して描画しながら印刷するしかないでしょうか
何かいい方法などあればご教示下さい
オフィスが入ってない環境でも実施出来るようにしたいのでエクセルは使えません >>343
オフィスが入ってない環境っていう糞みたいな選択肢を捨てれば幸せになれる >>343
WPFは知らないけどGDI+でちょっとした表を印刷するなんて
たぶん思ってるより簡単だから自分で書いた方が早いよきっと >>343
どんな表を想定しているのかわからない。DataGridViewとかはだめなの?
フリーの表計算ソフトインストールしたほうが確実だと思うよ
どっちにしても画面出力ならともかくプリンタ出力はC#だと信用できない ライセンス関係がどうだか知らんけど、まだクリレポもあるみたいだね
でもまあ、余程こった印刷するんじゃなきゃ、自分でゴリゴリ書いた方が早いし応用も利く 今のHTMLって物理単位で座標やサイズ指定できるの?
俺はまったくいい案だと思わんね HTMLで帳票出力するアプリなんか世の中いくらでもあるだろ
帳票にミリ単位の精度を要求される高度なお仕事お疲れ様です笑としか 倒錯してるね
A4ならA4に綺麗に収まるようにレイアウトするなんて最低条件。
子供の遊びじゃないんだから そんなくだらない仕事に誇りを持てるなら幸せなことだね あるフォルダにexe配置して、複数人で同時起動する場合log吐き出し等、PC事に吐き出せますか? >>343です
レス頂いた方ありがとうございます
基本的には地道にやるしかないんですかね
GDI+はもう少し調べてみます
html+cssは確かにかなり使えそうなので今後の引き出し用兼ねて、じっくり試してみてみます Excelをテンプレートにして値を埋め込んで印刷できるツールなら(金を出せば)あるよ >>357
得体のしれないものに金を出すくらいならオフィス買えよ… 帳票のデータをDBにぶち込むアプリ作ってるんだけど動的なSQL文作成って普通はどういう作り方をするもの?
今は列が2個とか3個だから@"insert〜"ってベタ書きしてsqlparameterで値入れてるけど
元データがファイルならSQLインジェクションは考えなくていいはずだからSQLparameter使う必要はないはずだし
列の数が増えたら改造が大変になるから改修作業が楽になるような作りにしたい
今はSQL文作成部分をDBごとに別々のメソッドで書いてるけどこれも共通化できるもん? >>359
そんな程度のものだったらEntityFrameworkで十分 パラメーター渡すだけで普通はSQL文はいじらないと思う
テストに困る
SQL専門家がいるところではそんな感じ HTML+CSS+wasm in C#みたいな文脈で開発がしたいにゃ〜 C#て使われるスタンダードな帳票ツールってなんでしょうか? >>365
私の会社は運送業界なので荷札とか直接紙で出しています。excelやaccessで帳票出せるのですが、荷札に綺麗に印刷するには各端末の設定に依存していて、変更する度にその設定作業で禿げそうなのです。
あとExcelとかはバージョン管理ソフトで差分見れないのもストレスです。 クリレポって言葉が出た直後のこの質問
分かってて聞いてるとしかw http://techoh.net/wpf-control-storyboard-with-code/
このサイトを見て、アニメーションを学んでいたのですが
Rectangleは動くのですが、このRectangleの代わりに画像を動かしたいのですがどうすればいいのでしょうか?
単純にImageに代えただけでは上手く動きませんでした・・・ Null非許容型自体は悪くない
標準のclassをNull非許容型にする必要はない
Null許容前提で設計されてるものをなぜ急にNull非許容にする?
クラスをまともに設計してないのか? 意識高い系の人達が標準のclassをNull非許容型にしたいだけ
null非許容にするとこれまでロジックミスでnullになってたものが意図しない初期値になってるだけで
不具合自体が見つかりにくくなる
今までは止まってたからわかったけどそれがわからなくなる
動いてるけど何かおかしい状態が増える 普通だったら今までのを標準にして新しい機能を拡張とする
それが今度は逆でさらっと破壊的変更が入りましたで終わり >Null非許容型を前提としたものかどうかAssembly単位でも設定できる
アセンブリ単位だと言うことが問題だと思うけど
既存コードはそのまま通せないということ > >>401
> 大方どっかのチュートリアル通りの手順を踏んだだけで、現在のproposalなんか確認してないんだろうな
> そんなん猿でもできるわ
そちらの猿はやった?
それとも猿以下? WPF使えないやつは馬鹿
MVVM使えないやつは馬鹿
Rx使えないやつは馬鹿
とか言ってるけど全然普及してない
使えないんじゃなくて使ってないだけ ブーイモ MM6d = アウアウウー Saa5
荒らすなボケ ソース単位で見てこれはどっちの仕様のソースなんだろうかと考えないといけない時点でおかしい (ブーイモ MM6d == キチガイ) == (アウアウウー Saa5 == キチガイ)
これでOK defaultのclassを非Null許容型に変えるのは破壊的変更ではないのですか? >>385
その方向性は間違っています
今までのレスで示した通り >>387
そっちこそ俺のレスが回答になってることがわからないなら英語読めてない >>373
>既存コードはそのまま通せない
はいキチガイ >defaultのclassを非Null許容型に変えるのは破壊的変更ではないのですか?
これにすら答えられないんだから言っても無駄か 俺は最先端(笑)追いかけるの興味ないんで実際にはどうだか知らないけど、
常識的に考えればMSが既存のコードに重大な影響がでるような破壊的変更を許容するはずがない。
杞憂を通り越して被害妄想にしか聞こえんなあ >>399
今のMSはVSのマイナーアップデートに平気で破壊的変更ブチ込んでくるぞ
C#7.1も正式リリースでバグ出しまくって破壊的変更で修正入れてる
リリースに客のお伺い立てないといけないような連中はもう相手にしてないんだよ >>401
nugetの仕様変更である日突然ビルドが失敗するようになったりはする >>402
まさかlatestにしてたってオチじゃないよね? >>400
プロジェクトのデフォルト設定では、言語バージョンは最新のメジャーバージョン(C#7.0)を使用するようになっているのだが。 ふらっとがバカの間違った知識自慢であふれていて見苦しい
常駐している奴らはまともに動くコード書けないんじゃね 初心者です。
C#でMainWindow.xamlのtextbox name=a,b,c を
MainWindow.xaml.csにて配列に格納する場合、どう書けばいいですか? C#とは直接関係ないかもしれませんが教えてください。
VS2010で開発したEXEですが、DropBox上で起動するとタスクバーにアイコンが表示されません。
本来表示されるはずのアイコンが「白」で表示されてしまうのです。
そこで、ローカルの C:\hoge\test.exe といった具合に配置して実行するとしっかりタスクバー上にアイコンが表示されます。
↓の手順も試してみましたがやはりだめです。
これは、Windows 10のアップデートによるバグなのでしょうか?
https://win10labo.info/win10-non-icon/ >>413
埋め込みリソース????
ちょっと調べてみます。 C#のコード規約って何かデファクトスタンダードなものありますか?
開発者がDelphiなこともあって一般的でない自負があるのか
自分流に統一できてれば問題がないという感じで緩いのはわかるのですが >>415
命名ならこの辺
https://msdn.microsoft.com/ja-jp/library/ms229002.aspx
あとはVisualStudioのコード分析とか
書籍ならEffective C#
来週新刊のMore Effective C# 6.0/7.0も出るぞい 業務系ではほぼオワコンなので今更コード規約を厳しくしても将来性はないだろう。 codePlex終了はC#終焉への序曲なのか?MSはいつも中途半端で投げ出すからな CodePlexがサービスを終了し、GitHubへの移行が推奨される
https://www.infoq.com/jp/news/2017/04/codeplex-github
>Microsoftは、CodePlexプロジェクトから知名度の高いgitホストへのインポートを効率的に進めるためにGitHubと協力してきた。
>移行手順がプロジェクトのソースコード、ライセンス、およびドキュメントをGitHubに移動する際のガイドラインと共に準備された。
>移行ツールは、イシューの移動をサポートするよう拡張される予定である
>>420
MS自身が移行を積極的にやっていてCodePlexでできた資産まで捨てるわけじゃない
C#がオワコンだろうが趣味でしか使っていないから使い続けるだけ
仕事でやっているけど他はできないって人間が万が一いたらそのままシネ CodePlex閉鎖とかいつの話だよ石器時代から来たのか? MSがPWAってのに手を出すことになったことで、将来的に需要が縮小する可能性は高くなったな
特にASPは直接的な競合となるから厳しい >>428
何の需要が?PWAとASP.NETは競合(比較対象)にはならないけど unityはc#一択
スマホのマルチプラットフォーム開発もザマリンでc#一択
じゃなかったんか あのふざけたスライドが無ければそうなっていたかもしれないね そういう気色の悪いことを平気で掛ける自分を気色悪いと思わなくなったら
もう立派なストーカー予備軍。
どうせキモータなんだろうけど、執着するのはアイドルか2次元にしとけよほんと。
きもっ C#がだめとして
そしたら次はなにやったらいいの?
JavaScriptとかしょぼいのやらなあかんの? >>437
向いていないからプログラマやめればいいよ ダメとしての意味が分からないけど、
他にもいろんな言語があるから好きなのを使えばいいよ
TypeScript
Python
Go
このあたりがいいんじゃないか
さらにやる気があれば
c++ 元Pythonistaやで
C++よりはRustがええなあ
でもTypeScript含めてJavaScript系は好きになれんなあ ふらっとスレもそうだけど「C#を使う人の雑談スレ」だと思っている人多いな
こんな過疎っているところでなくマ板に行けばいいのに 初心者ですが質問させてください。
VisualStudio2017でDLLの作成をしようと思っています。
DLLプロジェクトのなかでSystem.ConsoleやSystem.IO.Pathクラスを使用したいのですができません。
「現在のコンテキストに 'Path' という名前は存在しません。」というエラーです。
コンソールアプリのプロジェクトなら問題なく使用できます。
どうすればDLLのプロジェクトでも使用できるようになりますか? >>442
エラーが出るミニマムコードを作ってふらっとで質問してください >>444
Console等はmscorlib.dllだと思うんですが参照の追加をすると「既に自動的に参照されています」と出ます・・・。
>>443
了解しました! >>442
プロジェクト間違っているだろ
クラスライブラリ(.Net Framework)を選べ
プロジェクト選択画面の右側に(.dll)を作成するための〜って表示されるはずだから
それでもできないのなら必要なものをインストールしていないか何か余計なことをしている ヒマだったんで簡単なサンプル
クラスライブラリ
https://ideone.com/Sho1IP
それを利用するコンソールアプリ
上で作ったdllを参照に加えてビルドすること
https://ideone.com/PSzA8t
実行ファイルにドロップされた"*.txt"ファイルをシフトJISとして読込みコンソールに表示するだけ
どっちもVS2017のデフォルトの設定で作られている dllを作らずに別で作ったプロジェクトを追加して使うのって邪道ですか? >>446
クラスライブラリのプロジェクトは全部試しましたができませんでしたね・・・。
「ユニバーサル Windows プラットフォーム開発」というのをインストールしていなかったのでそれを試してみます!
返信していただいてありがとうございます!初心者用のスレは荒れていて質問できる空気ではなかったので・・・ >>449
それUWPアプリで違うから。できるかもしれないけどインストールしていないんでわからないw
取りあえず書いたとおりにやってくれよw >>450
色々やった結果やっぱろプロジェクトが間違ってたいで無事できました。
ごめんなさいお手数おかけしました;; >>451
解決できたのならこっちもほっとしたよw
報告お疲れ様です public class MyClass<T> where T : MyClass<T>
{
・・・
}
こんなコードを見たのですが、意味を教えて下さい。 「ジェネリックのwhere」はともかく、
「作れないクラスの作り方」は気になるなw C#と.NET Frameworkの標準ライブラリだけでFAX処理ってできます? 外部ネットワークに繋がる環境で動かす前提とは限らないしなぁ FAXどころかプリンタすらC#使ってやるのは不安になるなあ
趣味レベルでちょっとしたツール作る分には楽でいいんだけど ソースコード読めば、C#ってこんなもんかって安心できるぞ >>465
何のソースコードを読むんだよ
WinAPIやCOM使ってできることならなんでもOKって知っていればどうでもいい >>466
何のソースってC#のライブラリのソースだよ
>WinAPIやCOM使ってできることならなんでもOKって知っていればどうでもいい
だったらなんで不安になるんだ? 芥川龍之介の念波、我が身に降臨せり
「何か僕の将来に対する唯ぼんやりとした不安である」 >>469
不安とか言ってないでさっさと邪宗門の続き書いて この板には羅生門に登場するような地獄の住人・魑魅魍魎が跋扈してるな LINQのWhereで
匿名関数に渡されるエンティティを他のメソッドに渡したりするとOneToManyを使う条件が動かない
これに気付かず小一時間無駄にした
エンティティの代わりにIQueryableを渡すことにした
こっちの方が書きやすいし条件を再利用出来る LINQというか
Entity Framework Coreのデータベースにクエリーする時のLINQ C#だと、C++同じように書いてもずっと遅くなることがある。
それにメモリを多く食う傾向も。GCはどのタイミングではいるか分からないから、
スクロールの途中で入った場合は、まるでPC-8801のBASICで書いたプログラム
のように素人っぽいアプリになる。C++が使える人が使うのは推奨しない。 C#はC++と違って速さではなく信頼性に重きを置いてるから仕方ないね
インスタンスはともかくアンマネージリソースは明示的に破棄するとか
ファイナライザ任せにしない等の言語に合わせた組み方をする他ない C++経験者でC#のパフォーマンスが落ちたり不安定になる人は、そもそもC++自体のスキルが低いと思う
関数ポインタとか仮想関数とかちゃんと使えないんじゃないかな >>478
unsafe突入コストはどうにもならん。そんなことも分からないのはC#を碌に使ってないから。 >>475
ちょっと工夫すれば避けられる場合も多いし、C++に戻りたくは無いなぁ。
どうにもならない場合はスピードが必要な部分だけC++にするけど。 >>479
unsafeはオーバーヘッド無いぞ
アンマネージコードとごっちゃになってるのかな?
C#を碌に使ってる人の言うことは違うね C#のunsafeは使い勝手が悪いから使わないな
デバイス制御とかでポインタが必要ならC++でDLL化して、C#側はDllImportするだけだし
C++をちゃんと分かっている人なら大抵参照渡しで済ませるから、ポインタ使う必要ないよね
あとはWindowsAPIのDLLをそのままC#側にImportする手もある
C++の関数コールバックもC#側のdelegateで問題なく使える unsafeは不当に忌避されすぎだと思う
IntPtrとかいう実質void*を駆使したコードなんて、unsafeよりよっぽど危険だわ
ちょうど479のように、unsafeコード=アンマネージコードという誤解も未だに根強いし >>481
意味すら分からないレベルか。馬鹿は黙ってたほうがいい。 >>483
unsafe突入コスト → unsafeコード=アンマネージコード
おまえもか。脳みそに蛆でも沸いてるかと思うレベルの理解力。ほんと馬鹿は黙ってたほうがいい。 頭おかしい御仁、こっちにも湧いてござるなw
無益だから相手にしない方がいいよ 「unsafe突入」がオレオレ定義で具体的にどこかを示さず逃亡するに一票 > unsafeはオーバーヘッド無いぞ
> unsafeコード=アンマネージコードという誤解
こんな馬鹿レスしたあとにくだらない煽りか。低スキルにもほどがあるな。>>486 必死にID変えて連投してるからいつもの知ったか馬鹿だな。
相手にした俺が馬鹿だったわ。 C++で内部のメモリ構造を考えていない人がC#を使うと
パフォーマンス落ちて不安定なコードになりやすい、っていう話なのに
なんでC#でunsafe使う前提になっているんだろう? >>490
内部のメモリ構造てw
お前c++使えんやろ何の勘違いしとるんやw >>478
自分はC++の仮想関数も関数ポインタも難なく使ってる。そして、C#は自分では使った
事が無い。でも、他人が作った.Net製のアプリを見て余りの遅さに.Netが普及しては
困ると思った。Vectorに登録されてるアマチュアのC/C++のプログラムでも見たことがない
ような遅さの.Netのプログラムをハードウェアメーカーが付属品として付けて来る。プロ
なのに。 そりゃ単に作った奴の所為じゃないか…プロなんて生業というだけで
プログラマーと呼べない連中など腐るほど居るし、門戸が広ければ蔓延るであろう
JITコンパイルとか境界チェックとかコードセキュリティとかオーバーヘッドは有るけどさ XNAでゲーム作ってキャラクター10万個くらい出してもほとんど処理落ちしなかったのに
まともにコード書いた普通のソフトでそうそう遅くなるとは思えん .Netは間に色々入るのでCPUキャッシュの効きが悪くなり、キャッシュの多いCPUでは
C++のNative Binaryの2.5倍程度の遅さで済んでもキャッシュの少ないCPUでは急激に
遅くなる可能性があるかも。キャッシュミスがあると、数千クロックのオーバーヘッドが
生じるので、C++の1000倍くらい遅くなる可能性がある。 ロクに使ったこともない人がドヤ顔で解説とかシビレル [間違い(または嘘つき)記事発見]
以下のリンク先の速度比較で、C# では言語Nativeな配列を使っているのに、
C++では、std::unique_ptr<> を使ってしまっている。そもそも、C/C++は、
高級アセンブラみたいなものだから、書き方を間違わない限りは、C#より遅くなる
はずがない。
「C#がC++より高速になった?」:
https://qiita.com/Chironian/items/e8c9f0147669f941936a
C#
static void setLargeArrayManaged1()
{
var aArray = new byte[kCountLai];
・・・
C++
void setLargeArray()
{
std::unique_ptr<byte[]> aArray(new byte[kCountLai]);
・・・
公平に比較したいなら、以下のようにすれば良いだけ。こっちの方がC#と
ソースレベルでも似ている。この著者は馬鹿としか言いようがない:
C++
void setLargeArray()
{
byte *aArray = new byte[kCountLai];
・・・
delete [] aArray; LINQは便利だけど落とし穴も多い
でも便利過ぎて手放せない Linqは裏側の動作までイメージ出来ないと簡単ゴミ作れちゃうのよねん LINQだけでググるとこれが出てきてしまう。
LinQ(リンク)は日本の福岡県福岡市を拠点に活動しているローカルアイドルグループ。
この項目では、女性アイドルのローカルグループ LinQについて説明しています。
統合言語クエリ LINQについては「統合言語クエリ」を、その他のLINQについては「リンク」をご覧ください。 C#が遅くないとか言ってる奴に限ってアセンブラ経験がない。C#信者はVB厨とJava厨と同じレベル。 設計思想が異なる対象まで遅いだの速いだの言語価値はそれだけかよ
ソースが同じなら処理も同じなんて考えるのが居たらdでもない事だ
C#やILのコンパイラに瑕疵があるのなら然るべき所へ報告すれば良い >>505
AWS Lambda使ったことないと誤解を生みそうな記事だなこれ
Lambdaのランタイムのオーバーヘッドを測ってるだけで、実質的なコードの実行時間はほとんど関係ないよこれ プログラムを書いていてちょっと迷ってると、VisualStudioがメソッド等について説明の吹き出しみたいなのを出してくれるけどさあ
あそこに出てくる説明の文章部分ってどうやって作るの? さすがにアセンブラ経験なしでここで相談に答える馬鹿はいないだろ。ILだってまともに読めないだろうし。 どうしたの?一昨日のことでまだ言いたいことあった?ガイジ >>509
メソッドの1つ手前の行でスラッシュ三回打ってワンと言え >>509
シフト押しながら7を三回押したらでてくるやつの話? >>509に対する回答が>>510と>>515以外全く意味が分からない
>>515が正解だと思うけど、どっちにしてもスレ違いだし 1レスに3個以上安価入れるのは行儀が悪いってママに叱られなかった? キチガイが安価多用するからキチガイっぼく見えるよというお話 タグが増えると容量が増えてgzip圧縮に対応してへんブラウザやとしんどいねん
VBコンポーネント使ってるやつとかな >>523の説明を聞いて納得。
>>520は頭と性格が悪そうだと思った。 規模が大きくなるとただでさえVS重くなるのにReSharper有効にしてると耐えられないレベルになる
VSCodeのC#サポートがもうちょっと賢くなれば移行したい >>526
2017で軽くなるかもと期待したが、うpデートする度に重くなっていくような。
Sharp >>527
大きなソリューションの読み込みはUpdateごとに確実に速くなってるけどね forループとEnumerable.Rangeでループするのどっちが速いの? 理屈的にはmovenextとget_Currentの呼び出しコスト分遅いんだっけか? >>530
この理由で頑なにfor使っている人居るけど、100万回でms単位の差で選ぶとか阿呆としか思えない 業務系c#開発でgitって使えるもん?
開発規模が社内だけなら面倒なだけな気がするんだけど、シェア考えると今からsvnは無い気もして GitHubなら賛否あるけど、Gitなら迷わず使えばよくね ギョーミーは50万年くらい遅れてそうでいいよな
まだ旧人類やってても優秀な方にランキングされるようだぜ 業務系は下請けに出さないとgitサーバーも立てられないからな
世界的に有名な大企業でもまじでそんな感じ いまの若い子はSVNの使い方知らないからやめといたほうがいいよ
Gitにしか出来ないと思い込んでるから何も努力しなくなってるしな
Git一択だわ 若い人は○○系の話って大抵若い人がそれを必要とする時点で絶滅しかかってるんだから知らなくて当たり前なんだよね
だからむしろ知ってた時に驚くのが普通なのになぜか知らないことに驚くというのが意味不明 中小業務系とか素人スタートが数年居ればベテラン扱い
gitどころかバージョン管理?なにそれおいしいの?状態 ソルーションZIP固め
正直、個人プレーならこれが一番わかりやすくて安心 >>533
ゆとり馬鹿はほんと数学ができないんだな。 >>548
>、100万回でms単位の差で選ぶとか阿呆としか思えない
おまえも仕事したことない無職なんだろうけど、リアルな話、
こんな馬鹿が一人でも混じってたら糞コードを大量コミットしてデスマーチになってしまう。
年金システムにはこういう馬鹿が大量にいたんだよな。 >>550
算数を数学とか言っているからバカにしたのに恥の上塗り >、100万回でms単位の差で選ぶとか阿呆としか思えない
日本のスマホゲームはポチポチゲームばかりらしい。
こういう馬鹿な考えのヤツばかりでリアルタイムの仕様を理解できるやつがほとんどいないんだろうな。
そんな馬鹿がasync/awaitで知った気になってテスト不能のアホコードを大量に書く。
昔から、馬鹿の尻拭い=同期のバグなんだよな。 ID:2N4AiZYB ←低脳煽りばかりで技術的なレスは一切しない馬鹿。技術的なレスすると馬鹿がバレるからな。
> 100万回でms単位の差で選ぶとか阿呆としか思えない アホみたいなスマホゲーム作ってる会社こそ、優秀な人材が集まってるんだぞ
アホみたいに儲かるからな ループの中身よりガワ気にするプログラマいたらアホかと思うわ ループの中身もガワも大事
ガワが簡素ということは保守のしやすさに繋がるんだから、それなりのスペックのマシンで動かせる前提なら高速化のための最適化をガチガチにするより
オーバーヘッド大きいけど簡単に書ける方法を採るべき
その判断をせずいかなる場合も高速なのが正義というのは技術に酔ってるだけ 速度だけならC#よりVB6のほうが早いわけで、C#には速度以外のものが求められていると思うんだわ
勿論早いに越したことはないが 何ふらっとみたいな話題やってんだよ
スレ間違えたかと思ったわ >>565
UWPはツールチェインに.NET Nativeが組み込まれているだけの話じゃね >>562
>>563
VB6はネイティブコンパイラだよ あんな質の悪いコードをネイティブなんて(蝶々蜻蛉も鳥の内) Console.WrteLine("{0}です", number);と
Console.WriteLine(number+"です");だとどっちがいい?
最初の方をよく使うんだけど 「どっちがいい」の基準が分からん
string.Formatでも同じだが可変要素が多いときは上の方が分かりやすいとしか言えない Console.WrteLine($"{number}です"); 某プログラミング言語勉強サイトで後者で打ってる模範があって見にくくてつい質問をしてしまった >>571
{0}派だったけど今はこれしか使わないな >>573
同じ変数を何箇所も使いたい場合は{数字}の方が便利 国内のドカタワールドはC#2.0で早くも息切れしてきて3.0で脱落者が出始めて4.0以降はほとんど追従できてない酷い有様
string interpolationなんて抜群にドカタ向きだから、dobonあたりが取り上げて宣伝したら流行ると思うけどね string.formatって1.0の頃から存在した気がする EFの文脈で$@"select * from Foos where {p}"って書くとちゃんとプレースホルダーに置き換えてくれるってので感心した ほんとコロコロと書き方が変わってほんと糞言語になったな。 C#7.0-7.1は6までちゃんとキャッチアップできてる現場なら自然に受け入れられるものだけど、C#7.2はヤバい
C++厨こじらせた奴がチームにいたらカオスになりそう
そして8.0ではついにnull非許容参照型が導入され、年内には現在ある全ての既存C#コードに対して膨大な数の警告が出るようになる 最高じゃねえか
ついてこれないレガシー人材も放置されてるレガシーシステムも要らん そもそもプログラミングは低脳がやっていい仕事じゃねーからな
この期に日本式の文系マと専門学校マは全員処分したらいい >>583
文系かどうか、専門学校出かどうかは、本質とは関係ないのではないか?
馬鹿なやつを特定して排除するならまだしも、経歴 **だけ** で判断するのはいかがなものか? レッテル貼りして思考停止して片付けるのは楽だよな
>>581
現状でもVSで推奨されないことに「メッセージ」は出るけど「警告」は出ないぞ
下位互換無くすのなら別の問題になるけどな >>581
ヌルポ許容しない理由はなんでしょうか? そもそも納品物がヌルポでよく落ちるのは単体テストをしない、手抜きだからであって、
新機能を好んで使う馬鹿は、null非許容参照型を導入しようとテストをしないのは変わらないわけで、
むしろバグが隠蔽される。VBのOn Error Resume Nextのバグ隠蔽機能の再来。
varと同様、コード品質を落とすアホ機能である。 単体テスト
それは企業によって意味が全く異なるワードである 単体テスト
・関数単位のテスト
・アプリケーションをビルドして作成・修正した箇所を開発者本人が動作確認するテスト
大きくわけてこの2種類の解釈
xUnit世代は単体テストってアレだよねっていう共通認識があるかもしれないが
老舗企業でそんな意味で単体テストっていう言葉を使うと恥をかくぞ >>587
if (arg == null) throw new ArgumentNullException(nameof(arg));
とか
Assert.That(Hoge(), Is.Not.Null);
みたいな頭の悪いチェックやテストケースが不要になる >>588
一般に、新しいものを使いたがるPGの方がスキルが高いので品質も生産性も高いよ
もちろん、メンバーの状況によっては縛りをかける判断が適切な場合もあるけど、
それはあくまでスキルの低いメンバーの生産性と品質の低下を避けるためだ
新しいものを使いたがる系の奴に古いものを強制しても、生産性と品質が大きく低下することはない しかし、linqだって10年モノ・・・新しい古いってレベルじゃねーよな 新しいフレームワークに飛び付く層はモチベーションの影響で生産力はあるかも知れないが、スキルが高いかというと微妙 varって気を付けないと000abdだと整数読み込みでするからstringで扱う時はstringでやるわ C#プログラマは全員、ライセンスで訴えられるリスクを負う。とても危険。 ユニットテストを意識するようになればメソッドやクラス構成マシになるのに、どうせ単体テストやるしと数百行のメソッド大量生産の俺社 メソッドは原理原則通り20行まで・・・ってのはやりすぎかもしれんけど
全ては関数にわけられるだけわける
1つの関数に2つ以上の機能があれば冗長だとは思う 関心事が1つであるべきだよ
機能数は複数あってもいい
例えば顧客オブジェクトを取得する/作成する/更新する/削除するための顧客リポジトリ
こいつの機能は4つだが関心事は顧客オブジェクトの永続化という1つだけ >>602
でもやたら関数に分けまくるのもやり過ぎの悪例だからなぁ
一行メソッドのたらい回しとか可読性低すぎて引き継いだとき殺意が湧くし 1行でも意図が明確化するならメソッドにする
C++とかやってきた人なら当たり前の感覚なんだけどね Expression Bodyのプロパティやメソッドがなぜ導入されたのか
1行のプロパティやメソッドはそれだけ使用頻度が高いってこと バカが書くオブジェクト指向()を舐めるなよ?
あいつら『かめはめ波()』の機能を
か()
め()
は()
め()
波()
にするレベルでバカだからな 意味を理解しておらず側だけ真似するからそうなる
猿は木の実でも取ってろ 独立している機能なら一行でも良いが
一連の塊で動いてる機能を再利用性の欠片もないパーツに切り分ける奴は頭が悪い
しかもその切り分けた関数で他の関数を実行してたらそれはもうただの難読化だ >>606
これが答えだよ
Microsoftや達人プログラマ達は1行メソッドの価値を理解して言語仕様まで変えてしまった
それほどまでに重要なものってことだ
一方で雑魚プログラマのお前らは価値を理解できずにぐちぐちと文句を言う
程度の低さを伺えるね コメント代わりに関数使う>>611みたいなのが害悪なんだよな プログラム構造が見渡せる行数になれば、ソレ以上の細分化は無意味なんだけどね
メソッドの分割は中身を理解しやすくするのが最大の目的で、それを阻害するほど分割したら意味がない 俺もコメント代わりに分けまくる派
純粋関数で責任が明確なら可読性は上がるよ 一目見たら分かる処理をオレオレ命名で飛び地化
お一人様開発なら良いがチームでやんなよ void MoveAX(unsigned short val); >>613
コードで表現できるものをコメントで書くバカが本物の害悪だよ >>618
コードで表現出来てることをわざわざ関数名で伝えようとするバカが何だって? >>614
中身を理解しやすくするのは実装の仕事
メソッド化する最大の目的は実装と意図を分離すること
僕が引用したリンク先でマーティン・ファウラーがわかりやすく説明してくれてるからぜひ読んで欲しい 三行で書かれてるコードならその場でその三行を修正するだけで済むが、
それを三つの関数に分けるとわざわざ別の行までスクロールして修正する作業が三回発生する
どちらが効率的で生産性が高いのか普通なら考えるまでもなく分かることだが、自意識過剰なバカには分からないのかも知れない
何せ自分のことを『達人』とか思い込んでるレベルのバカだし >>620
コードで表現していることを関数名で抽象化するんだよ
抽象化はプログラミングをする上で最上級に重要な概念だけどどうもIQが凡人以下だと理解できないらしい
物事を理解するにはその内容に応じた知能がどうしても必要になる
凡人が数学者や物理学者に成れない
難しい概念がわからないという感覚は人としてどうしようもないものなんだ
だからこのスレにも抽象化がわからない人が居てもおかしくはない >>622
場合によるんじゃないかな?
その一行が何度も出てくるなら関数化したほうが修正が楽
何百回修正するか
一回修正するか >>622
そのコードがなんのためにあるのかということを考える作業が3回も発生する
そのコードを変えて他に影響がないか確かめる作業が3回も発生する
同じことを他の場所でしていないか確かめる作業が3回も発生する
酷い無駄だ 関数化で抽象化はされる
抽象化された関数で何をやってるか詳しく関数名に入れると無意味なことになることもある
むずかしいよね bool IsEmpty() => this.Length == 0;
このレベルの実装であれば何も文句はないが、大半はそうじゃないのが現実 適切な直行化ができてれば、一連の処理の流れに関わる多数の関数を一緒に修正するなんてことはそうあるものではない
その程度のスキルレベルなら分け過ぎはよくないのは同意する もともと一行関数だったものが徐々に成長していくこともある
でも呼び出し元のコードは変わらない
ロジックが変わってないからね
これは大変素晴らしいことだと思う 十分に責任の明確化ができている関数は中身を見る必要が無くなる
不要になって消すことはあっても中身を弄ることはめったにない
この名前でこの引数を受け取るならこの結果が返るのが当然、と思えるのが正しい関数だ >>627をバカが真似した例
void Increment(ref int a) => a++
(※現実にあったコードです) >>631
そのレベルの現場ならCOBOLみたいにMOVE羅列してる方マシだね
世の中そういうところばかりではないから文句があるならさっさと転職しろ コードを書いてる時点で将来をすべて予見できるような素晴らしい環境にいるならいいけど
大体はそんなことはない
仕様を考えたのが他人であろうと自分であろうと >>631
範囲を扱うアルゴリズムに使わせる目的で使うイディオムだよ
こうしておけばプリミティブの数値も数値っぽい型(例えば巨大整数クラス)も同じように扱える
ようするにただのストラテジだな まあ正直C#で>>631は無意味とは言わないまでも違和感あるけどな
>>631もC#だけでなくc++とか経験してみるとこういう短い関数の真価を理解できるんじゃないかな 巨大整数とか仕様にカスリもしない未来を妄想して複雑化して「これがシンプルなんだよ!」と強弁するとかアホの典型だな
グループ開発の経験もない無職かよ 最初から無駄に俺様カスタマイズしたがるのはこじらせたC++erによくあるYAGNIだね
そして、Incrementの例のように基礎的な部分には異常に拘るくせに普通のアプリケーションコード部分は巨大なメソッドを生産する奴が多い
その割にはポインタ演算は大好きで、配列操作になるとウッキウキしてクソ低レベルなアスタリスクと++だらけのコードを垂れ流す
そういう連中だよ ふらっとも伸びているようだし承認欲求に飢えているアホどもが暴れているのか >>638
でもそれってお前の妄想じゃん
c++の仕事任されるほどスキルないっしょ? >>641「巨大整数にも対応してるオレ様のフレームワークを使えー!」 どんな面白い問題で盛り上がってるのかと思ったらしょうもな。
(1) 道具が多すぎる道具箱は使いづらい
からと言って
(2) 短すぎるメソッドは「無駄な道具」である
などと言えるわけがない。
そうである場合もない場合もあるに決まってる。
こんなくだらない話でよく盛り上がれるな >>643
だから無駄な道具を乱造して散らかす奴が悪いんだろ?
いくら「これが正しい!」と喚いてもゴミ屋敷をスマートとは言えんわ なんかずれてんな
いやわざとか?
みんな「1行コードはクール」
みんな「いや害悪だ」
>>631「1行コードにはこんな意味不明な頭悪いコードが実在するんだぜぇ」
>>634「いやーそれはストラテジでしょ。普通のコードだよ」
あほ「巨大整数ガー!ゴミ屋敷ガー!」
途中から明後日の方向に向かってんだよ
一例に過剰反応バカが湧いてきたあたりからね 一つ言えるのは、一行コードをセンスが無いやつが書くとゴミクズになるってことだな
まあ何行でもゴミと言えるかもしれんが、一行のゴミはメンテする時腹が立つ 1行メソッドの利点を理解できないアホが逆ギレしてるだけのパターンもあるということは忘れないで 一行のゴミにも何か利点はあるはずだと頑なに改めようとしない>>647なのであった
マジでゴミ屋敷の主だな >>645はstrategyも理解してないアホの子だから許してあげて
ただのラッパーを戦略と勘違いしてるなんて、きっと今年の春から働き始める新人だから 上司「なんでこのインクリメントを関数に分けてんの?」
新人「様々な型に対応する為のストラテジです!巨大整数などにも対応できます!」
何というか無能な働き者って言葉がしっくり来るな
たぶんこいつは誰からも理解されずに五月病患って数ヶ月で退職するわ インクリメントの(多相じゃなくて正しい意味での)ストラテジって何だろうね
++とInterlocked.Incrementを切り替えるとか?
エイプリルフールネタにもならんな ここには初心者スレに行ったほうがいいような連中しか居ないようだな ゆとり世代はなんでも揃ってるところからスタートだから楽でいいよな
iteratorの実装なんて考えたことすらないんだろう
羨ましいよ >>650
何で巨大整数に対応する必要ない状況を前提としてるの?
対応すべきという状況を前提とした途端に真逆の結論になると思うけど 仕様上ありえない予測
それを人は 妄想 と呼ぶのだ 巨大整数対応を勝手に仕様上あり得ないことにしている点
「○○にも対応できるように」の○○に巨大整数を入れるのはあくまで一例であり他にも山ほどあり得る点
この辺りが問題かな
言われた通りの物を納品すればいい所謂IT土方系の環境なら問題にならないんだろうけど >>656
対応すべきという状況を前提にしたとしても、>>650の新人がストラテジパターンを誤解している阿呆であるという結論は覆らない
>>631を型ごとに用意するのは一般にはパラメータ多相、あるいは単にオーバーロードと呼ぶんだよ すまん訂正
パラメータ多相じゃなくてアドホック多相だな この手のっていつも「自分の前提」の元に議論初めてかみ合わないんだから止めとけよ
ネタが下らないことだし、そんなことにこだわるしかやることないのかよ int型をBigInt型に切り替える必要が生じたとして、
型宣言から書き直さないといけないのにインクリメントを分離しておいて何が効率化できたというのかと
そもそもオブジェクト指向に則ればその型自体にインクリメントを備えるだろっていう
現実に設計したこともない新人が本の知識で言ってるだけだなこりゃ 正しい設計
INum num = new Num()
// INum num = new BigNum() ←クラス名を変えるだけ
num++ ←機能は型で規格化されてるので変更無用
間違った設計
Num num = new Num()
// BigNum num = new BigNum() ←型から変える必要がある
Increment(ref num) ←何これ?
void Increment(ref Num n) 処理
void Increment(ref BigNum n) 処理
↑型の数だけオーバーロードする必要がある どーでもいいことかもしれんが、セミコロンがないのが凄く気になる >>660
はぁ? どう見てもストラテジだろカス
void func<T>(T mi, T mx, FuncObj<T> increment) {
for(T i = mi; ! i.Equals(mx); increment.Exec(i)) {
//
}
}
class BigIntIncrent : FuncObj<BigInt> {
public Exec(ref BigInt x) {
x = x.Add(1);
}
} >>663
なんでBigIntのソースが手元にある前提なんだよ
まあ素人は標準のパッケージ以外を持ってきて使うなんて経験はないのかもしれんから間違えても仕方がないか
君素人っぽいし >>665
惜しい。一旦クールダウンしてよく考えよう。
同じ入力(コンテキスト)に対して複数のStrategyを定義し、状況によって使い分けるのがStrategyパターンだ。
一方incrementの場合、実装は入力の型に応じて一意に決まるだろ?「同じ入力」に対して複数の実装があるわけじゃない。
そういう、引数の型に応じて静的に実装を選択するのを一般に「多相」という。
特に、君のコードは関数型言語で型クラスと呼ばれるものに近い。ググってみると勉強になるよ。 >>667
1つ飛ばしでイテレートしたい場合とか同じ型でも幾らでもバリエーションは考えられるわけだがわかんねえだろうな用意されたもの使うだけのゆとりには >>665
なにこの頭悪すぎるゴミ
意図が読めない典型じゃん >>669
あらゆる物事に対してそれを理解するために必要な知能の下限が存在する
これって1つの真理だと思うのよ >>670
funcって何?
funcObjって何?
miって何?
mxって何?
Execって何?どういう機能?
BigIntでAdd?コレクションなん?
パッと見ただけでこれだけ疑問が湧くんだが、
プログラマ百人に聞いたら百人が死ねって返すレベルのクソだぞこれ
命名だけでバレる実力なら無理して書くなよ >>668
そうだね。確かに君の言う通りだ。
じゃあ君はなぜ>>665でわざわざジェネリックを使ったのかな?
>>665を見た殆どの人は、型に応じて++の実装を切り替えたいのだろうと思うだろうね。それを君はストラテジだと言っている。
このままでは誤解してしまう人もいるだろうから指摘したんだよ。
君自身はもしかしたら本当は正しく理解してたのかもしれないけど、衆目に晒すにはあまりにも不適切なレスだ。 文脈読めない、中心になってる話題を理解して枝葉末節を気にしない、っての実践するにもある程度の知能が必要なんだろうなー
そういうの苦手な人ってミーティングの時とか相当鬱陶しがられてると思うから注意したほうがいいよ >>665
これforでローカルに代入してるが値型のつもりなのか? >>673
悪いけど、文脈を読んだら>>665のコードは100人中100人が型++を切り替えようとしてるのだろうと解釈すると思うぞw >>672
ジェネリックかどうかは関係ない話だろ
この例も仮にスクリプト言語だったら型引数は無くても動作する
たまたま型の指定が必要な言語を例に使ったからジェネリックになっているだけ
しかしそのエッセンス自体は何も変わってない
まずはそこを理解しよう >>665を読むとこいつうちにいた新人より頭悪い気がする
ストラテジとか言いながらやってることが関数型だし
これでデザパタのつもりなら学校通い直すのを勧める ここでいうエッセンスというのは
* 処理の一部を外部から与えることによってアルゴリズムを交換可能にするテクニックをストラテジーパターンと言う
* ストラテジーはしばしばインクリメント処理のように非常に小さな処理になることがある
* その一例が>>631であり>>631馬鹿げたコードでもなんでもなく実用的なコードの断片である
という3点のことな >>678
λや関数オブジェクトがサポートされる言語では暗黙的にストラテジーの考え方が利用されている
そうと意識してないだけだ
ちょうどいい時期だ上司に頼んでお前も新人研修受けてこい 何も見せてなければ何とでも言えたろうが、
>>665を見せてしまったらもう無理だな
レベルの低さが露呈してるから言い訳にもならない
正直>>665を見たあとだと>>631が優秀に見えるくらいだし >>680
世間一般的にstrategyというのは>>663の例を指す
お前のは違う そもそも関数の細分化は可読性を損ねるって話なのに、
抽象的で省略しまくりの名前付けてる時点でな
設計に口出すのは十年早いと思うわ どうでも良いが>>665をよく見るとこいつrefの使い方すら知らないど素人くさいな
値次第でループバグ起こす構造だしこんなコード実務で仕込まれたら俺ならテロ認定する 本気で書いたコード貶されたら
「あれは手抜きだからw」と言い出す
まあリアルにいるよな ミーティングとか言い出して露骨に話題を避けようとしてるの笑える stringが参照型ってことはさ
string str;
void Reset() => str = "";
とするより
string str;
string None = "";
void Reset() => str = None;
と生成済みのテキストを使い回した方が効率良いの? >>692
null代入するのはC#8.0で警告対象 >>690 変わらないと思われ
string Func0(){return "test";}
string Func1(){return "test";}
string Func2(){return "te"+"st";}
string Func3(){return "TEST".ToLower();}
string a=Func1(), b=Func2();
Console.WriteLine(Object.ReferenceEquals(a,b)); >>693
非推奨になるのか!
って、C#5.0から変える気が無いけどもw >>690
これILはどっちも一緒の結果にならないのかね >>698
Formしか使わないからね
まぁ最近はスマホが多いのもあるけど C#ってどんどん惨くなってねーか。業務じゃもう使えないだろ。 アメリカではソフトウェアの内製化やクラウド化により、
ソフトウェアは自己責任でどんどんリリースできるようになってるの
自己責任ならデグレ出したらこっそり直してすぐにリリースしちゃえばいいの
SI型ビジネスとは違い、過剰にリスクを避ける必要がない
VSやC#もそういう変化に適応して開発やリリースのポリシーが変わってしまった
もうジャップランドのSIでは使えないよ リッチテキストボックスでDetectUrlsをTrueにしてハイパーリンクを開けるようにしたんだけど、
ハイパーリンクをクリックして既定のブラウザで開くと、勝手に最終行までジャンプしてしまう。
仕方がないのでEnabledをいったんfalseにして、その後開き、もう一度trueに戻すとジャンプはしなくなったんだけど、
リッチテキストボックスの任意の場所をクリックすると、やっぱり変な場所に表示が移ってしまう。
なんか対策ないでしょうか? >Enabledをいったんfalseにして、その後開き、もう一度trueに戻す
ごめん何言ってるのか全然わからない >>706
すいません、こうです
private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e)
{
richTextBox1.Enabled = false;
System.Diagnostics.Process.Start(e.LinkText);
richTextBox1.Enabled = true;
} treeViewのちらつき防止ってどうやるんだろう?
5chブラウザとか、mousemoveでテキストにアンダーラインが出るようにしても全然ちらつかないよね
ダブルバッファでいけるのかと思ったら、treeViewはそれでは解決しないようで・・・ >>705
ミニマムコード書いて確認しろよ
クリックした位置にカーソル出ないのなら分かるが勝手に最終行までジャンプとか意味不明
あと初心者スレ池 >>700
もうここ10年新規案件やってないな。全部Javaに持ってかれたまま。
当然といえば当然だな。老害ヘジの暴走を誰も止めることができなかった。
ID:d442a5v8 ←みたいな低スキル信者の取り巻きばっかなんだろうな。 CAD系だから低身の見物
流石にJAVAでやれと言われた事は無いな 会社で生産管理ソフト導入したらそれ.netだった
描画はネイティブのDLLに丸投げだったけど 業務で言えばjava : c# = 1000 : 1 ぐらいなイメージ 業務だと冗長でもいいからバカでも使える単純な機能だけで組まなきゃいけない
三項演算子程度のものも使用禁止
C#とは無縁の世界 それだけじゃ足りない
どんな初心者、いろんな人が保守しても長期間にわたって大きく崩さないような土台を建てる必要がある
超絶技法で難解なプログラムを作るよりよほど難しい そして冗長でコピペだらけの巨大なシステムが出来上がって別の意味で保守できなくなるんだろ
業務系ってそんなシステムばっかりじゃん
誰でも読めるようにひらがなだけで六法全書を書く並みにバカ
余計わかりにくくなるだけ それは分かりやすさというより開発のスケーラビリティの問題
日本のSEってトップダウンのコード設計が全くできないから、
開発規模をスケールさせようとすると重複上等でなるべく個別の機能ごとに独立した形にするしかないの 重複した分だけ開発・保守工数が増えてくから重複上等じゃスケールしないよ
あっちでバグがあった、仕様が変わった、横展開しろ、って炎上の王道パターンだよね
つかわかりやすさの問題だ
言語機能は便利でわかりやすいから追加された
それを使わないということはそれだけわかりにくくなるということ
ベタなループ書くよりLinqの方がわかりやすいからLinqが発明された
そういうこと 20年以上前から言語機能では勝負してないと思う
そういうのよりミドルウェアの有無などのほうが業務でjavaが選ばれる理由だと思う
一から新しいものを作らないといけないか既存のものを使えるかが分かれ目
業務で必須のDIとかそういうのをしっかり土台ができているのか
c#はそういう所でjavaに負ける Javaなんて、Android向けのクライアント開発なければどうなのよ??
今業務でもサーバーサイドJavaなの??
んなわけないよね? 業務系のロジックは大体javaだよ
一般的に開発求人といえばjava
大規模になればなるほどjava以外の選択肢はなくなる 今時ミドルウェアやサービスに大した差はないってのが現実
そもそもプラットフォームや言語を選ぶ時点でそのミドルウェアは候補から外していい
>>720
Javaで書かれたサーバーサイド資産は大部分がメンテナンスモード
新規開発はかなり減ってる webプログラマーと業務プログラマーは別
業務はほぼjava一択 >>716
ちゃっかり業務系を六法全書に例えるなよw
あれは絵本だぞひらがなが最適なんだよ EXCEL(xls形式)のデータを読み取って何らかの処理を施して別ファイルに書き込みたくてNPOIについて調べてるんだけど
セル内文字列の一部に文字飾り(取り消し線、上付き、下付き)がある場合にどの文字飾りか判定できる方法ってない?(文字飾りを反映させて別ファイルに移すために)
HSSFRichTextStringとして読み取ればnumFormattingRunsが文字飾り有無で文字列を分割した際の部分文字列数となることは分かった
getFontAtIndex、getFontOfFormattingRunで指定箇所の文字飾り情報が分かると思ったんだけどこれで得られる数値が同じ文字飾り種類でもコロコロ変わってよく分からない状態 Javaエンジニア「インスタンスメソッドは難しい。インスタンスを禁止して初心者でも理解できるstaticメソッドを使おう。」
Javaエンジニア「ファイルが沢山あると初心者が混乱する。クラスを禁止してファイルをまとめよう」
Javaエンジニア「関数は初心者には難しい。すべてMainに書こう」 C#はVBがカスPGカス案件の受け皿になってるお陰で、Javaに比べると平均レベルは高い気がする
というかJavaのスキル幅が広すぎる VB.netは何のメリットもないのになんでつかってんだろ? C#は上級者向けって散々プロパガンダしてきたから自覚のある雑魚がVB.NETに吸収されてくれた
Javaは誰でもウェルカム初心者に最適の言語みたいな空気を出し続けた結果底辺が爆発的に増えて悲惨な事になった 多分VB.netのほうが難しい
少なくとも見づらい >>10
Javaで言うNashornみたいなのあります?
それでjQuery使いたい。 C#勉強してもJavaと違ってほとんど仕事ないんだぞ。
最新機能のコード張ってドヤ顔してる奴は日頃何のコード書いてんだ?
もしかしてアプリは何も作ってない生産性ゼロの無職じゃないのか。 >>733
最新機能のコードってどのレスだよ…
仕事でやっているような奴らがこんなところにこんな内容で書き込んでいたら心底軽蔑するわ >>734
落ち着けよ。何言ってるか分からん。
日頃から人と話してないからそういう変な日本語になるんだぞ。 仕事がないなら自分で仕事を作ればいいだけ
仕事が流れてやってくるのを待つだけならプログラマーやらない方がいい >>733
仕事はあるんだよjavaドカには縁がないだけでさ 仕事というのはやれば利益が出るものだ
利益が出ないものは仕事ではない
安い労働力じゃないと利益が出ないのであればそれはすでに仕事じゃないんだ マ板でやれよ
趣味グラマには関係ないしローカルルール違反 >>708
ヒマだったから試したけど5chブラウザがどうなっているか知らんけどダブルバッファ設定なしでチラつくように見えないが
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.treeview.hottracking(v=vs.110).aspx
背景付けたらチラつくかもしれないが、それはダブルバッファ設定で解決するはず C#のnAudioを使用してボイスチェンジャーを自作しようと考えております。
音声データのリアルタイム入出力及び音声データ数の増減によるピッチ変更までは出来ている状況です。
私が今困っているのは音声データ数の増減なしのピッチ変更についてなのですが、どなたかご教示願えませんでしょうか?
また、使用言語がC#のため、こちらの板に書きませていただきましたが、質問内容が不適切であれば、適切な相談する板をご紹介願えませんでしょうか。
以上です。よろしくお願いいたします。 直接の回答じゃないけどこんな本でも買ってみるとか
http://amzn.asia/0Wp3Q48 なんでMSの期待の星だったC#がたった10年でこれほどマイナー言語になったんだろうな。
やっぱりヘジはマイナーの星の元に生まれたんだな。 delphiからc#に移った口だけどずっとc#の地位はひくかったよ
最近は逆に地位が高くてビビる delphiのころは趣味でdelphiやってるって言ったら
何それクスクスみたいな扱いだった
c#に移ったら移ったで同じような感じでMSが作ったやつでしょ?
MS大すきなんだねクスクスみたいな扱いだった
いつも悔しい思い出いっぱいだった 昔はマジでC#はVBを消し去ると思ってたが、まさかポンコツJavaにC#が消し去られようとしてるとは。
当時のオレは信者的な変な妄想に駆られてたんだな。 c#はMSが作ったのに最新技術からは常に距離があって悲しい
win32呼ぶのもDirectX呼ぶのもめんどくさい
slimDXとかNAudioとか使わないといけなかったり意外と何かやりたくてもwindowsとか親和性が低い ほんと、MicrosoftはC#からWin32API呼ぶライブラリぐらい全部用意しろよなと思う。 大衆の大半はものを知らんバカって構図はシステム開発業界も政治もおなじだな
初心者向けという宣伝文句に騙されて初心者がJavaに食いつく
初心者で水増しされたシェアを根拠に考えないバカがJavaを採用する
だから初心者とバカしか居ないんだよJava案件って
発注する方も人数ばかり多くてろくな人材がいないってわかってる
だから優秀な人材がやりたがらない、やる価値の低い、とりあえず頭数揃えてデスマゴリ押しすればなんとかなるタイプの土方案件を押し付けるために大量に発注する
だからJavaの案件は多い
その辺の事情が統計に表れてるんだろうな
こういう考察ができずに数字取ってるってだけではしゃいじゃうのがまたJava土方らしくて微笑ましい >>754
妄想はいいからw
javaはc#が出てくる前から地位を確保しててc#はそれに食い込めなかっただけだ
似てたからあえてc#は選ばれなかった
javaとc#が似てなくてc#に大きな強みがあれば事態は変わってた
javaはOS選ばなかったので柔軟に環境を構築できた
c#にはそれが無理だった
勝負にならない ちょっと前までc#を選ぶ場合別途windowsが必要だった
サーバー群にそこだけwindows入れたら技術者が二系統いるんだからコストアップでしかない 文系でも未経験でも誰でもプログラマーになれます!系の企業でとりあえず教えるのがJavaだからなあ >>759
当たり前だろ
ずっとjavaで仕事するんだから 楽で価値ある仕事につけないかわいそうなJava土方さん 何を勘違いしてるのか知らないが、そもそも仕事でC#やってる奴でC#しかできない奴なんかまずいないぞ?
今C#の仕事があるからC#使ってるだけだ javaとc#は対立軸にあるとは思わない
javaはソフトウェア開発の実用実践的な方面で発達しててその恩恵をc#もこうむってる
javaのOSSをc#に移植したものがたくさんある
c#が弱い分野もそうやってなんとか保ってる
宗教的な理由で多言語を叩くのはみっともないし自分の首を絞めてる
どの言語よりjavaはc#に似てるんだから よく分からん奴だなあ
プラットフォームから自分で選べる場合は俺もLinux使うし、すぐに引き継ぐ必要があるなら言語はJavaを選ぶよ
言語も好きに選べるならNodeやPython使ったこともある
C#はWin縛りがある場合だけだね
言語なんか何でもできて当たり前だろ 言語なんか何でもできて当たり前系初心者w
この時期よくいるなw C#が最強すぎて雑魚が沸いてるようだね。大人しくC#勉強すればいいのに(笑) 最近のC#プログラマはUnityでゲーム作りながら覚えた人も多いんじゃないかな
自分も元々はC++で、趣味でUnity覚えた後にVC#に移行したタイプだし ふらっとにワッチョイ付いたからゴミがこっちに流れてきたか ワッチョイあるとNGが一週間持ってしまうからな
NGされることに耐えられない奴にはツラい >>742
うおおおおおおおおおおおおおお
ありがとう!
イベントのmousemoveでポインタが上に来たときにいちいち描画するというめんどくさいことをやっていたのが一瞬で解決されました。 >>744
この間質問させていただいた者です。
音声波形について知識を深めまして、解決に至ることができました。
ありがとうございます。 String.formatでどんなint32値でも4桁固定で出力する事はできますか?
C++のprintsfでは出来たはずでしたが... 4桁固定って10000ならなんて表示されればいいの? 例えば"123456"なら"1234"、"3456"と何らかの指定で出来ないかなと。
printfで試したら出来ませんでした。"%2.2s"と勘違いしていたようです。
ありがとうございました。 ググれない、意図を正確に説明できない、思い込みで質問
この程度の初心者ならふらっとに行けばいいのに 答えられない
でも
マウントしたい
って奴はどこにでもいる マウントしたい
でも
マウントとれない
>>783に同情する csc.exeってさ
フレームワークバージョン選択するスイッチねえの?? >>785
最近は「答えてやらない」とかいう安上がりなマウンティングも見かけるな。 質問ばかりして答えられないと勝った気になる馬鹿左翼の手法がム板で横行してるようだ。
ゆとりだろうな。 質問スレなのにわざわざ答えない宣言する方がどうかしてる >>788
MSBuildでターゲット指定するぐらいかね >>791
教えたがりが答えられない質問に対して自尊心を維持するにはそうせざるをえないだなこれが
てか大人なら察してやれよw ✕とか○印を表示させて移動させたいんだけどfillellipseとかで描いて消してを繰り返せばいいの? MSXのスプライト機能みたいなものはないんでしょうか? >>800
Unity使え
Spriteも当然ある スプライトは言語の機能にはない
標準のフレームワークにもない
Unityみたいなゲーム用のライブラリ探してみるしかないかな コントロール(例えばPictureBox)をスプライトみたいに使えないこともないよw
透過色も使えるし優先順位付きに重ね合わせも出来る やっぱりunityですか...
drawで描いたり消したりでもいいんですよね。でもゲームっぽくいろいろ動かしたいならunity勉強するべきなのかな? 初心者にこそUnity
情報の量質共に圧倒的だ
C#は言語の中ではかなり複雑で習得の難しい部類で、初心者が言語から入ると絶対に挫折する
初心者向けのUnityのチュートリアル的な本で動かしながら学んだほうが続く unityかぁ。
面白そうだけど、いまようやっとc#使い始めたところなので、
あまり手を広げたくない。
でもunityで研究してる人もいるみたいだし、
ゲーム系の機能が豊富だとそれをいじっていて出てくる研究のアイデアってのもあるんだろうなぁ。 WinformsやWPFと絡めてやるならSharpDXでやるのがよろし
まあDirectX方面に慣れてないとキツイかもしらんが 春休みは終わったはずなのにunity、unityって無職かよ。 描画系めんどくさいから、Unity使うと楽だよ
ドットインストールのUnity入門動画見れば1日で使える様になるけど、Javascript使ってる所をC#に書き換える必要があるね C#で作ったアプリのリソースファイルを外部に委託して英語に翻訳してもらいたいのですが、
リソースファイルそのものはXMLで、そのまま委託先にファイルを渡しても編集ができません(XMLを理解していないので)
更に.Designer.csの<summary>の書き換えもどうすればいいのか分かりません
このような場合、どのようにして翻訳をしてもらえばいいでしょうか? 表形式に変換して渡す
対訳埋めて返してもらう
逆変換する
終わり 表形式ってExcelのことですか?
どうすれば変換できるのですか? プログラミング以前の問題だけど、正確な、少なくともユーザーが見て意味が理解できる
翻訳をしてもらうためには、どっちにしろ日本語の原文だけじゃなく、
それが使われている文脈も合わせて示さないと難しいよ
UIの場合表示スペースの問題もあるし 難しいと勝手に決めつけないでください
そのような事は聞いてませんので質問だけに答えてください >>800
このレベルなら実際にやってみればいいのに
やる前にここで聞いてどうしたいんだろう
このレベルでUnity使えって言うアホは死んだ方がいいよ VC#プログラマで過剰にUnityを嫌ってる人って、一体何と戦っているんだろう?
Unityのお陰でC#人口が増えたんだから、みんなで仲良くすればいいのに どこにそんなレスがあるのよw
どんな被害妄想だw
チミこそ誰と戦ってるんだよw Unity環境固有の質問は、ゲ製作技術板の方がいいかと >>827
スレチにも関わらずUnityの普及活動してるおまえとだよ。おまえのレスはただの荒らし行為に過ぎない。 あんまり調べられないままの相談で申し訳ないのだけど
証明書の秘密キーつきのエクスポートをやりたいんだけど、秘密キーで暗号化するあたりのサンプルが見当たらない
X509certificate.Exportメソッドに暗号化のオプションが無いのは、アルゴリズムを知られない為に実装していなかったりすんのかな?
それとも探し方がぬるいだけかな
実際ぬるいから、もっと探さなくてはいけないんだけどちょい暇が足りていない… と思ったら、オーバーロードで別メソッドあったわ
うんこしてきます。 C#でLinqを使うよりPythonの方が2倍速かったのでベンチマークをしてみた - Qiita
https://qiita.com/yniji/items/6585011633289a257888
C# の Linq が python の2倍遅い、は嘘 - Qiita
https://qiita.com/Akira_Kido_N/items/d9519b05ccee6a67158f
LINQ を使う時に一般的に気を付けること via C#でLinqを使うよりPythonの方が2倍速かったのでベンチマークをしてみた - かずきのBlog@hatena
http://blog.okazuki.jp/entry/2018/04/20/105738
そもそもPythonからCのライブラリ呼んでいる時点で反則w >>836
正しくはCのが早かったというべきだよな。
C#でC作成ライブラリ使えばもっと速いだろう。 別に内部的にCのライブラリ呼んでだって良くないか?
そのライブラリが全く普及していなかったりするならともかくそれなりに普及していて誰でも普通に使えるわけだからpythonのライブラリと見なして構わない
手段を目的にしてしまった的外れなツッコミだと思う 比較方法は誤ってないよ
特殊なことしなければ呼び出せないならともかく、内部的にCで書かれているだけで表面的にはpythonで書かれて提供されている
つまりpythonユーザーなら誰でも普通にその速度で計算できるわけで、それをわざわざ縛る意味など皆無
C#だって、というなら内部的にCで書かれたC#用の同等ライブラリを探せばいいだけのこと
もしそんなものが存在しないならC#ユーザーはその速度が出せないんだから負けていると言うしかない > https://qiita.com/yniji/items/6585011633289a257888
の事なら謝りが多すぎてもやはベンチマークになってないレベルだけど
まさにweb用ゴミ箱ならではw ここでいくら吠えたところでまったくの無意味
Qiitaの著者に直接言えやコメントも出来ないゴミ共 稀に興味深い記事もある(性別のISO規格の話とか)が、
最近は初心者とワナビのメモと知ったかが増えすぎて、
聳え立つクソ山と呼ぶに相応しい そういう状態防ぐにはどうすればよかったんかな?本名制? 最近の若者はベクトル計算用ライブラリと汎用コレクション操作のパフォーマンスを比較してイチャモンつけてしまうのか
しかも汎用コレクション操作の使い方を間違えてさらの遅くする徹底ぶり
ここまでくるとアンチC#がわざとやってるのかと疑ってしまう ゴミ袋に名前書く時代なんやから本名制にしたってなんぼでもゴミ製造するやろw
大体自分がゴミ製造機やっちゅー自覚がないんやからあいつらはw あとあれやなアウトプットアウトプット言い過ぎやねん
ほとんどの無能は黙ってインプットだけしといた方がええねんマジに 無能な働き者はどこでも迷惑だよ
役に立つとしたら燃料になる位だな 多分こんなところで吠えてるだけの奴よりはかなりマシだと思う そんなバカなw
お前の田舎ではゼロがマイナス1より小さいのか?
とんだ地方だな ここは便所だから
便所で脱糞して悪いことなど何一つない タイトルからしてバカ丸出し
ゴミクズ以下の記事だな >>852
意味不明な擁護してるヒマがあったら編集リクエスト(笑)でも出してろ生ゴミ try{}catchってmainで使っちゃダメなんだな、mainで使うと先になんかエラーチェックされてるみたいで動いてくれない コンソールアプリでasync/awaitを初めて導入しようとサンプル書いて
「どおじてブレークポイント貼っでもがっでにアプリ終了じぢゃうのおおお」と
一時間くらい泣きそうになってた頃の自分を思い出した >>861
Main.cs(11,9): error CS0155: The type caught or thrown must be derived from System.Exception
catch(Hello e)ってなに? >>861
throw new Exception(); ルール無視の書き方して動かないって文句言うって幼稚園児か try使った時にエラーの受け取り方がわからないんだよ
mainで使った時にどうエラーを受け取ればいいのか、0の除算したcatchで処理終了しないでランタイムエラーの方で止まってるから >>868
確認したいだけならint x = 10 / 0;を消して>>863のthrow new Exception();を入れてcatchの(Hello e)を消せ
何見ていたらこんなあほな書き方になるんだ Main云々以前にそもそもtry句での引数無しthrowも定数ゼロ除算もコンパイルエラーだし
ぶっちゃけ開発環境上でC#書いたことがあるのかも怪しいレベルだなコレ… >>861,868
こういうことやりたいんだろう
using System;
namespace Hello
{
class Hello
{
static void Main()
{
int a = 10, d = 10;
try
{
a = a / d;
}
catch (Exception ex)
{
Console.WriteLine("Hello.Main()で例外が発生");
Console.WriteLine("エラーメッセージは「{0}」です", ex.Message);
Console.WriteLine("エラーが起きたのでプログラムを終了します"); return;
}
Console.WriteLine("終了しました"); Console.ReadKey();
}
}
}
usingの下なのにnamespaceもないしVisualStudio使ってちゃんと基本からやれ。ふらっとの初心者よりもひどい
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/try-catch https://ideone.com/gjRXk6
こうゆう意図的にエラーを起こしたかったんだよ、エラーの起こし方がよく分かったわ StreamReaderやStreamWriter使ってusingで括るの忘れてファイルが握られっぱなしなんですけど、なんでClose呼ばないの?
習慣にしようよ。って、こいつらOpenが無いからClose忘れるんだよね。
非対称な関数作るんじゃ無いよもう。Open要らないならCloseも要らない様にしろよな。ぷんぷん。 もはや一貫性のない欠陥言語。当初のルールを無視しまくり機能追加した結果がこれ。 無能老害がついていけなくなった結果が >>877 w >>878
C#のような古くさい設計の言語使ってるおまえは十分老害。
C#はまさに増築しまくりの不便で欠陥だらけの温泉旅館。
未だにそれをナウい温泉だと思ってるおまえのようなボケ老人にはお似合いwww はいはい
わざわざそんな言語のスレに来てなにをしたいんだよ w いや、ドア開けたら閉めるだろ?、猫じゃ無いんだからさ。
でも開けた覚えの無い自動ドアが実は半自動で、
閉める時だけは手動なんて、合理的に考えて不便じゃね? >>883
お前のケツには「人生を開始する」なんてメソッドは生えてないだろ?
でもお前の人生はそのうち終わるし、刺されたら即座に終わる
生まれた瞬間に始まっていて、終わらせるのはいつでもできる
ごく自然な摂理 >>884
親クラスが産むメソッド呼んだんだから、終わらすメソッドも親クラスが呼ぶだろ?
自殺メソッドはそりゃ普通は呼ばないわな。 >>885
あー、お母さんと代わってくれるか?
もしくは学校に行きなさい C#はニート専用だしな。プロはJavaを使ってる。 馬鹿がガベコレで夢を見たんだよ。そしてJavaをパクった。
だが現実はusingにdisposeだらけ。
ほんと馬鹿だよな。もはやC言語以下の不便さ、汚さ。ボケ老人には革新に見えるらしいwww 一貫性はあるけどさ、仕事で2.0のソースメンテするとストレス半端ないよ わかる
C# 2.0ってまるでJavaみたいでスゲー使いにくい カベコレのせいでデストラクタがいつ動くか不定でC++のようなスコープ終了で自動クローズができなくなった。
結果、using、disposeの導入。
馬鹿がほんと何も考えないで設計するとこうなるという見本。ほんと醜い言語だよ。
一貫性? ないない。C#2.0とは既に別言語だよ。名前買えるべき。Neet-C#とかに C#が開発現場からほぼ淘汰されたから良い時代になった。保守で残ってるのは2.0案件ばかり。
こういうゴミ案件は、自称おれは理解している ID:bL+b5Osr に投げるのが一番。 ホントにゴミの巣窟スレになったな
初心者どころかひきこもりがずっと吠えていてそれにいちいち相手するクズまでいる >>900
IDに変えるのにどんなに時間かけてんだよ。馬鹿め。 せっかくのGWだからな。
みんなで死滅寸前のC#にトドメを刺そうではないか。
ヘジがMSを退社すれば黒歴史としてC#は完全に消される運命。 なんかC#に親でも殺されたのかと思うような奴らがいっぱいおるのなんなの
今さらJavaドカタが出張してくるはずもなく謎だわ GWなのに人がいない。C#は完全にオワコンだったわ。今日はニュー速で過ごすわ。 Javaは今末期だから必死なんだろう
JavaしかできないJavaドカはおまんま食えなくなる 狂っているのはID:OvoGcsme=ID:o29GXtCOだけ
GWが昨日から始まっている方 ヒープ管理から解放されたけど、むしろリソース管理が意味不明になってるよな。 どうせそいつはふらっとに居たおじいちゃんだろ
相手にするだけ損 ワッチョイなんかいらない
規制を強化すればスレが良くなる、という単純なパターンを鵜呑みにする思考こそ批判されるべきだ ワッチョイ有りはもう立っているんだから付けて立てたら重複だ
ふらっとに頭のおかしいやつ行かないようにここで囲っててくれ 勝海舟は「憂国の士を自称する連中が国を亡ぼす」と言ったそうだけど、スレも同じだね。
荒らしてる奴に限って自分が荒らしだと思ってないどころか、
逆に俺はスレを憂いてるんだとか盛大に勘違いしてるのな
お前がいなくなるのが一番スレのためだってw >>910
1週間NGに入れられるから便利ってだけだよ
規制ってなんのことさ まあしかしこのスレには要らない気がするぜ
ゴミ棄て場は必要だからな マウスカーソルの位置を0.1sec置きぐらいに全部取得したいんだけど、
終了時刻は決まってないので配列で宣言し難い。
これってDictionaryとかに入れていけばいいのかな?
x,y座標と時間の3変数になるんだけど、
時間をkey noにしてx,yを紐づけるみたいな感じでOK?
time,xとtime,yの二つのDictionaryを作る。
なんかすごく冗長な気がする。
time, x, y
みたいなDictionaryってできないのだろうか・・・。 時間をキーにする意味がないだろ
普通にList<(DateTime time, int x, int y)>でいい >>920を見てC#って匿名型のList<T>を簡単に作れる新しい構文ができたのかと
思ったが、そんなものはなかったw
あと、調べてないがDateTime.Nowの精度は恐らく秒単位だと思う。
だから時間は記録開始かまたは先頭のデータからのオフセットをms単位で
記録するとかの方がいいだろうねたぶん。 >>922
DateTimeプロパティにMillisecondあるから。DateTime.Nowでも取り出せる
https://msdn.microsoft.com/ja-jp/library/system.datetime(v=vs.110).aspx
>>917
Dictionary<DateTime,Point>じゃ嫌なのか? そういう場合は構造体に包んで扱うと良いよ
public struct Cursor{
public float x;
public float y;
public int frame;
public Cursor(float x, float y, int frame){
this.x = x;
this.y = y;
this.frame = frame;
}
}
// コレクションを生成
var list = new List<Cursor>();
// 追加する
list.Add(new Cursor(x, y, frame));
あとマイクロ秒を後で使う予定がなければフレーム番号で保持するのが妥当だと思う >>922
いや今のC#は>>920は通るぞ
タプルだ >>924
データ型にms単位になってるからってHWがその精度を持ってるかどうかは別問題w
RTCは歴史的にそんな精度を持ってないw
>>926
ああ、そうなのか
名前知ってるだけで全然使ったことないから知らんかった >>927
知ったかさん乙
現在時刻をRTCから取得するOSなんてほぼないぞ >>930
マジで言ってるの? w
RTCから読み出すのはブート時だけやぞ 動画や音声再生するのにより正確なタイムチックが必要なアプリは山ほどあるし、実現してんぞ。 ほら、彼ら少し頭おかしいからさ
許してやってくれないか RTCは頻繁にアクセスするには遅すぎるデバイスだからOS起動後の時計はタイマー割り込み駆動だよ いろいろありがとうございます。
終了時刻が決まってないからlistとかかなとおもったんですけど、
構造体の方がよさそうですね。
試してみます。 それとは別にc#で
List<(DateTime time, int x, int y)>
みたいな複数の変数を扱うことってできるのでしょうか?
var list = new List<int>();
みたいに一つの変数だけなのかと思ってました。
これができるといろいろ便利そうなのですが・・・。「
List<(DateTime time, int x, int y)>
って入力してもエラーが返ってくるんすよね。。。 >>940
VSのバージョンが古いんだろ
VS2017でないとダメ VS2017かつ、NuGetでSystem.ValueTupleを参照する必要がある タプルの利用には、ValueTuple構造体という型が必要になります。 この型が標準ライブラリに取り込まれるのは .NET Framework 4.7、.NET Standard 1.7を予定しています。 それ以前のバージョンでタプルを使いたい場合には、以下のパッケージを参照する必要があります。
System.ValueTuple なるほど
System.ValueTuple
ですね。
試してみます。
ありがとうございます。 また初歩的な質問で申し訳ないのですが、
C#のクラスと構造体で、これまで軽量のオブジェクトでもすべてクラスで作成していたんですが、
あまりお作法的には宜しくないんでしょうか? なんとなく構造体はクラスの下位互換みたいなイメージで使用していませんでした。 応用アプリケーションなら全部クラスでいいよ
構造体は構造体のメリット・デメリットを全て把握した上で、構造体のほうが良い選択であり、将来に渡って絶対にクラスに変更したくならない、と確信できる場合に使うもの
そんなケースは滅多にない
あ、PInvokeは例外な C#上の構造体はクラスと等価だ。
つか、構造体で使う共通処理をまとめてそこに突っ込め。
ほら、使い易くなっただろ?
構造体なんか使わずクラス使え。 structは値型として扱われるので
参照型であるclassと同じようにコピーするとメモリの内容が丸ごとコピーされる
structを使った方が良い時の条件見たけど
普通はクラスで良いんじゃね?
https://dobon.net/vb/dotnet/beginner/whenusestruct.html ありがとうございます。
ちょっと急ぎでコーディングしてるので、
不慣れな構造体でなくクラスでやってしまおうと思います。
こうやって新しい知識をいれないとあとではまって痛い目あうのかなぁ。 >>954
構造体には構造体のメリットもある(だからBCLでも使われてる)んで、
2chネラ的な1bit脳の極端な意見は真に受けない方がいいよw
一つだけ挙げれば、プロパティとして公開するような値は構造体の方が楽。
クラスでもイミュータブルにすれば構造体と同じような感覚で使えるが、
イミュータブルなクラスは使い勝手がよくない >>956
わかってないなら無理してレスしないほうがいいぞ IoTでまだまだJAVAは安泰?
C#もIoTがいける様にならないんですかね・・・ >>955
C#では構造体絡みのパフォーマンス改善が最近ホットなのに何言ってんの? 素人がテキトーに構造体を扱うと却って遅くなるなどの弊害がある
使うならプロファイリングして本当に速くなっているか見極めるべき >>962
わかってないなら無理してレスしないほうがいいぞ 最近の参照関連の拡張は失敗だった
なんもわかってない奴がドヤ顔でクソコード量産する未来しか見えねぇ >>964
Framework自体のパフォーマンス向上に大きく貢献してるんですが… >>965
そこが悪いとは一言も言ってないだろう直近の少しのレスも読めねえのか なんだかわいそうな子か
相手するだけ時間の無駄だなこりゃ かわいそうな子たちのレスバトル
かわいそうに幕を閉じる ここで真っ赤になっている時点で恥ずかしいのに中身が低能の罵り合い
次スレ立てる人がいたらワッチョイは付けるなよ
もうワッチョイ付きの相談室のスレは2つあるから ValueTuple構造体
あるといいなあとは思ってたけど、遂に実装される日が来るのか カーソル記録のものですが、
class Point { public int X; public int Y; 他必要メンバ変数 }
でwhileループを組んでゲーム終了条件でBreakするまでは
上記クラスのインスタンスを無限生成してカーソルの位置を記録するみたいな感じでおかしくないですよね? それだと際限なくメモリを圧迫するから、保持できる上限を決めておいてそれを超えたら追加時に古いのを消したほうがいい >>981
確かにゲームの終了時刻を決めておかないと、どこかでメモリ破たんするですよね。 >>982
もう一回>>981を読め
終端を決めろって書いてあるわけじゃない
あと全体のコンセプトや仕様が見えないんだから、それ抜きでここで聞いても正しい答えが返ってくるとは限らない 結局こいつは自分のやりたいことが最初から有って、賛成意見が欲しいだけなんだろう
やり方を変えるようなアドバイスはするだけ無駄だぞ >>980
100msごとぐらいの記録でよかったんじゃなかったの?
どっちにしろ、ビジーループが回るごとにマウスポインタ位置の記録を取る(そう言ってるように聞こえる)
なんて無駄過ぎる。
限りなく忠実にマウスポインタの移動を再現したいとしても、常識的に考えて
ポーリング間隔は30ms程度で十分なはずだし、座標だけでなく時刻も記録するのであれば
前回から移動してなければ記録する必要もない
まあ、何にしろ何が聞きたいのかはっきりした方がいいね
そこがさっぱり分からん。 何が聞きたいのかはっきりしないのになぜかオレオレ方式を語り出すとか w >>985
0.1sec = 100msだがお前は何を言ってるの? 画面更新の度にマウスの位置が移動してるんだから、120fpsで回してりゃ将来的にも需要に足るんじゃね?
それ以上細かくしても再生出来ないしな。 ところで、ビジーループってどのくらいで回ってて、マウスの分解能ってどのくらいなんだ
マウスって所詮対人間なんでそんなに反応速いデバイスじゃなかったはずだが どれぐらいって…
環境よるとしか言えないんじゃない? 前回と位置が変わってなかったら
その位置が何回連続しているかというカウンタを+1すればいい
馬鹿正直に記録する必要はない もうこのスレ馬鹿しかいないからこれからはStackOverflowで相談した方がいい 応用アプリケーションって書いちゃう人がドヤ顔するスレだから多めに見ろよw このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 198日 8時間 25分 32秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。