X



ふらっと C#,C♯,C#(初心者用) Part138
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 369a-msj4)
垢版 |
2018/06/05(火) 19:32:42.28ID:70UTtyrn0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part137
https://mevius.5ch.net/test/read.cgi/tech/1523004019/
■コードを貼る場合は↓を使いましょう。
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: checked:vvvvv:1000:512:----: EXT was configured
0277デフォルトの名無しさん (ワッチョイ 7f9d-hF4h)
垢版 |
2018/06/23(土) 02:29:38.11ID:RCtrcOsy0
>>273
>クライアントPCからデータベースに接続します。webサービスで排他処理します。
webサービスは何をもらって何を返す気なんだ
なんにしても俺には想像もつかない方式を検討してそうだ
0278デフォルトの名無しさん (ワンミングク MMdf-h3K6)
垢版 |
2018/06/23(土) 06:55:53.26ID:DOoRmJ6HM
>>273
webサービスの中で普通にコネクションを開いて使い終わったらすぐにDisposeすればいいよ
ライブラリがいい感じにコネクション数を調整してくれる

どうしてもマニュアルでコネクションの数を制御したいならDB要求をループで処理し続けるスレッドを走らせて、他のスレッドとはキューで連携させる
0280デフォルトの名無しさん (ワッチョイ 1f75-E6HK)
垢版 |
2018/06/23(土) 09:10:53.59ID:kilEB0fc0
tes
0281デフォルトの名無しさん (ワッチョイ 1f75-E6HK)
垢版 |
2018/06/23(土) 11:25:15.28ID:kilEB0fc0
test
0282デフォルトの名無しさん (ワッチョイ 1f75-E6HK)
垢版 |
2018/06/23(土) 11:28:34.91ID:kilEB0fc0
fwくぇ
0283デフォルトの名無しさん (ワッチョイ 1f75-E6HK)
垢版 |
2018/06/23(土) 11:42:17.32ID:kilEB0fc0
fwq
0284デフォルトの名無しさん (ワッチョイ 1f75-E6HK)
垢版 |
2018/06/23(土) 11:44:04.15ID:kilEB0fc0
fwqef
0287デフォルトの名無しさん (ワッチョイ 7f9d-hF4h)
垢版 |
2018/06/23(土) 17:51:20.90ID:RCtrcOsy0
>>286
それだと(外部から)引数必須なインスタンスしか作れなくなる
それが設計通りならそれでいいけど

引数必須なインスタンスと引数なしのインスタンスが同一クラスである必要あるのか疑問だ
引数なしのクラスを継承して引数ありのクラス作れば良い気がするぞ
0292デフォルトの名無しさん (アウアウエー Sa7f-3IMT)
垢版 |
2018/06/24(日) 00:10:47.78ID:tHXuj/n7a
ああ、なんか質問を読み違えてたけど、
要は現実の使われ方として、特定のプロパティがまったく必要とされないケースがあるってことね。

単純に考えると>>287がシンプルで分かりやすいように思うけど
ケースバイケースではあるが、一つのプロパティを追加しただけのサブクラスってのも
存在意義がはっきりしないというか、名前付けに困るようなクラスになりがちのようにも思う

コンストラクタで明示的に指定されない場合はプロパティの値が規定値としておくのが
無難なケースの方が多いと思うけどね
0293デフォルトの名無しさん (ワッチョイ 7f9d-fJsd)
垢版 |
2018/06/24(日) 01:25:17.80ID:GW8ybopf0
>>291
設計論だっていってるんだから、設計の美しさだよ
美しさの基準は人によって違うからほとんど宗教論なんだがなw

>>291
>コンストラクタで明示的に指定されない場合はプロパティの値が規定値
コンストラクタで指定するものが、プロパティで指定できるようなものなら確かにそれが一番無難
ただそれなら引数つきコンストラクタの存在意義がなぁ
たんにコードが短くなるぐらいだが、オブジェクト初期化子でプロパティ設定するのと大差ない気がするし
0294デフォルトの名無しさん (ワッチョイ 1f56-DJU/)
垢版 |
2018/06/24(日) 23:01:38.61ID:euoTg7OM0
webBrowser1.documentText=hoge;
で生成したHTML中にページ内リンクがあります。
(<span id="xxx"></span>)
クリック操作をせずにこのアンカーにジャンプすることはできるのでしょうか?
0296デフォルトの名無しさん (ワッチョイ 1f56-DJU/)
垢版 |
2018/06/24(日) 23:43:26.59ID:euoTg7OM0
エラーは出ないのですが、ジャンプはしてくれませんでした。
単なるアンカーなので、直接それをクリックしても意味はなくて、
<a href="#xxx">XXX</a>をクリックするようにしないとジャンプしないのではないでしょうか?
(なお、ページ内に↑を用意していないので、これをクリックすることはできません)
0300260 (バッミングク MM53-+a6w)
垢版 |
2018/06/25(月) 17:57:14.07ID:TcWThoAPM
引数有り無しのコンストラクタで相談した者ですが色々とご意見ありがとうございます
先輩無しの独り開発なので参考になります

何が正しいかはプロジェクトの性質に左右されそうなので突き詰めませんが、驚き最小の法則的に見ると、無意味なメソッドをコール出来るとかどんな気持ちでしょうか?

私は後々混乱しそうなので避けたいのですが、さほど驚かれないならこのまま実装しようかとも
0302デフォルトの名無しさん (ワッチョイ ff7f-E6HK)
垢版 |
2018/06/25(月) 21:56:47.71ID:lw6peYFv0
暇つぶしにunityでプチゲームを作ろうとしているのですが
以下のような処理をしています。
https://dotnetfiddle.net/p6v66Z
スキルが増えるごとにSkillFactoryとTypeToParameterに分岐が増えていってしまって
なんだかなあという感じなのですが、もうちょっとマシな方法はないでしょうか。
SkillParamが諸悪の根源のような気もしていますがほかにうまい方法がおもいつかず。。
0303デフォルトの名無しさん (スプッッ Sd7f-E6HK)
垢版 |
2018/06/25(月) 22:01:12.17ID:XS6tlG59d
githubでC#で書かれたソースコードを見るとVisual Studioで作成したファイルが見当たらないんですが、
Visual Studioを使わないほうがいいんでしょうか?
0306デフォルトの名無しさん (ワッチョイ ffe8-GwbS)
垢版 |
2018/06/25(月) 22:30:53.83ID:QLHuH/320
ListでKey値が一致する要素を探して
内容を更新するにはどうすればいいの
ループで検索するしかない?
0308デフォルトの名無しさん (ワッチョイ ffe8-GwbS)
垢版 |
2018/06/25(月) 22:49:08.14ID:QLHuH/320
>>307
2次元にしてキー項目を自分で作ったのよIndex用に
0312デフォルトの名無しさん (ワッチョイ ff76-XQuB)
垢版 |
2018/06/26(火) 09:58:06.77ID:1CiOys6I0
object型のメンバ?の値を文字列型に代入したいのですが
どのように書けば良いでしょうか?
static void Main(string[] args)
{
var obj = new { a = "a", b = "b" };
Hoge(obj);
}
static void Hoge(object obj)
{
string fuga = obj.b.ToString(); //この書き方で怒られてしまいました
}
object型は基本のようなので、根本的な所を理解していないのかも知れませんが
よろしくお願いします。
0318デフォルトの名無しさん (ワッチョイ 7f61-E6HK)
垢版 |
2018/06/26(火) 14:41:15.83ID:yB7+BiTZ0
インスタンスメソッドとstaticメソッドの使い分けがいまいちわからないので教えてください
public class Hoge {
private string Name { get; } = "piyo";
public Hoge(string name) {
Name = name;
}
}
上記のようなクラスがあり、これをvar hoge = new Hoge("foo"); とインスタンス化したとして、

public bool IsPiyo(){
return Name == "piyo";
}
上記のようなインスタンスメソッドを書いて、hoge.IsPiyo()とするのと、

public static bool IsPiyo(Hoge hoge){
return hoge.Name == "piyo";
}
上記のようなstaticメソッドを書いて、Hoge.IsPiyo(hoge)とするのでは、どう違い、どちらにするべきでしょうか?

なんとなく、staticの方が入力と出力がはっきりしてるのでわかりやすいのかなと思うのですが、オブジェクト指向ではないですよね
0319デフォルトの名無しさん (ワッチョイ 7fc3-KTKp)
垢版 |
2018/06/26(火) 14:59:10.81ID:FPh9h90J0
インスタンスが必要かどうか。
stringクラスのCompareメソッドとCompareToメソッドが良い例。

前者はパラメータがnullでも通るが、後者はインスタンスが無いとダメ。
0320デフォルトの名無しさん (アウアウウー Sae3-GwbS)
垢版 |
2018/06/26(火) 15:53:58.50ID:B40aLJ4va
インスタンスメンバーを参照してないならstaticにしてる
でも必ずすべきとは思わない
仮に日本語にして考えてみる
人間クラスに "はピヨです()"メソッドをそれぞれ実装すると

if(人間.はピヨです(彼)) {〜}

if(彼.はピヨです()) {〜};

これを見るとstatic はおかしいと思うがstaticにすることが多い
0322デフォルトの名無しさん (アウアウカー Sa93-XuiQ)
垢版 |
2018/06/26(火) 19:39:44.60ID:2rJMn7sUa
あー、ちょっとわかってきたかもです
主語というか、意味的に、表現したい意図に近い方を選ぶ感じですかね
とりあえず今回の例で言うと、インスタンスメソッドにすることにします
0323デフォルトの名無しさん (ワッチョイ 7f51-4N5G)
垢版 |
2018/06/26(火) 22:41:11.75ID:oc0D76610
RuntimeHelpers.PrepareMethod(RuntimeMethodHandle)の挙動が理解できない・・・
このコードでm2にPrepareMethodを使うことは不可能ですか?
==
using System.Runtime.CompilerServices;

class B<T> { public void M() { } }
class C1 : B<int> { }
class C2 : B<string> { }

class Program
{
  static void Main(string[] args)
  {
    var m1 = typeof(C1).GetMethod("M").MethodHandle;
    var m2 = typeof(C2).GetMethod("M").MethodHandle;

    RuntimeHelpers.PrepareMethod(m1); // 問題なし
    RuntimeHelpers.PrepareMethod(m2); // System.ArgumentException: '指定されたジェネリックのインスタンス化は無効です。'
  }
}
==
0329デフォルトの名無しさん (ワンミングク MMdf-cOHa)
垢版 |
2018/06/27(水) 19:05:45.76ID:Eyd8ciC/M
複数のアプリで1つのserial portを使いたくて、dllで受けて受信データによって別々のイベントを発生させ、複数のアプリに受信させようと考えました。
dll内のSerialPortをstaticで持てば共有できるかと思ったのですが、staticで宣言しても呼び出し元が別プロセスだと共有されないようですね。
何かいい手はないでしょうか。
0330デフォルトの名無しさん (ワッチョイ ff33-mTVk)
垢版 |
2018/06/27(水) 19:33:53.09ID:cLV89PFx0
シリアルポートと通信するサーバを作って
必要な数だけクライアントを待ち受けるのが楽なんじゃないの
プロセス間通信はソケットやパイプとか適当なものを使う
0335デフォルトの名無しさん (アウアウカー Sa93-xWgw)
垢版 |
2018/06/27(水) 23:25:13.59ID:YJH26+lwa
シリアルポートはなんかが掴んでたらだめだよね
0343デフォルトの名無しさん (ワッチョイ 7e33-AF1h)
垢版 |
2018/06/28(木) 01:12:05.63ID:5aYb43f30
dllのstatic云々はおいといてメモリマップトファイルならC#でも使えたかな
C++ならデータセグメントを共有メモリにできる
どちらにしろプロセス間の排他制御が必要
0344デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
垢版 |
2018/06/28(木) 01:31:16.24ID:o5j8xzNra
>>342
宛先なんかなく、単に全部のアプリに同じデータがブロドキャストされれば
十分って場合もあるでしょ

例えばシリアル経由で計測器か何かのデータが送られてくるとして、

(1) 画面表示だけするアプリ
(2) エクセルにログを保存するアプリ
(3) 計測データを使って何か他の機器を制御するアプリ

何かの都合でこんな風に複数のアプリに分けて作る必要があるのかもしれない
0345デフォルトの名無しさん (ワッチョイ 6e81-M9kt)
垢版 |
2018/06/28(木) 01:38:37.90ID:KZQYx/g/0
C#でのSelenium操作についても質問していいですか?
0346デフォルトの名無しさん (ワッチョイ 8251-hbKR)
垢版 |
2018/06/28(木) 05:25:02.37ID:mpKH796a0
>>331
レスどうもです!下のようにして上手くいきました
こうなってくるとm1に対する方法はたまたま問題が起きないだけで
m2やm3の方法のほうが望ましいように思えてきましたがそういう認識であってますか?
==
using System.Runtime.CompilerServices;

class B<T> { public void M() { } }
class C1 : B<int> { }
class C2 : B<string> { }
class C3 : B<int> { }

class Program
{
static void Main(string[] args)
{
var m1 = typeof(C1).GetMethod("M").MethodHandle;
var m2 = typeof(C2).GetMethod("M").MethodHandle;
var m3 = typeof(C3).GetMethod("M").MethodHandle;

RuntimeHelpers.PrepareMethod(m1); // 問題なし
RuntimeHelpers.PrepareMethod(m2, new[] { typeof(string).TypeHandle }); // 問題なし
RuntimeHelpers.PrepareMethod(m3, new[] { typeof(int).TypeHandle }); // 問題なし
}
}
==
0347331 (ワッチョイ 79b3-yQv9)
垢版 |
2018/06/28(木) 07:24:39.78ID:TtGcC5rD0
>>346
(確固たるソースに基づく訳じゃないので推測だけど)値型か、参照型かじゃない?
参照型の場合は TypeHandleを指定する必要がある、ってこと。
0348デフォルトの名無しさん (ワッチョイ c175-sWPm)
垢版 |
2018/06/28(木) 07:34:23.33ID:wMDqdzUG0
>>341
よく解らんけどdllってアプリごとにメモリに個別に展開されて初期化されるからソースコード上で同じ変数名にアクセスしても実態は違うので共有できないのは当たり前なきがする
0352デフォルトの名無しさん (ワッチョイ a2c3-5/xb)
垢版 |
2018/06/28(木) 10:06:45.02ID:uTPw2MsS0
何がしたいのか知らんけど、Win2k時代にシリアル通信のロガー作ったことある。あんときは、DLLをフックしてCreateFile,ReadFile,WriteFileのデータをトレースしたが、ハッキリ言ってやめたほうが良い。
0355デフォルトの名無しさん (ドコグロ MM22-9w61)
垢版 |
2018/06/28(木) 12:52:45.79ID:q5PWc0B3M
>>332, >>342, >>353
受信データによって
って書いてるから何らかのプロトコル決めてて、アドレスとかポート番号とかの振分け用の情報あるんだろ
LANケーブルは1本でも複数のプロセスで共有してるのと同じ
ここまで書けばよほど頭の悪い奴でなければわかると思うが>>329が言うようなことは実現可能
http://nobikko-nobinobi.hatenablog.com/entry/2017/09/13/234555
ただC#だけでできるかどうかは知らん
0358デフォルトの名無しさん (アウアウウー Sa85-yQv9)
垢版 |
2018/06/28(木) 13:48:50.61ID:f040o02ua
>>356
残念だけどそれはプロセス間の共有メモリの話であってシリアルポート共有じゃないよ

シリアルポートは排他でしか開けないので他の人が書いてるようにシリアルポートをサービスで開いておくしかない
それがどのような形をとるかはいろいろある
0359デフォルトの名無しさん (オイコラミネオ MM16-Kqr9)
垢版 |
2018/06/28(木) 15:13:33.45ID:5RaMOuHjM
通信量など条件にもよるけど、
シリアル受信プログラムは、データの種類によって接頭語+日時名のファイルを作る。
各アプリはファイル監視して自分用のを実行する。
とかユルイ連携にするのも手かと。同時開発しやすいしテストやトラブル対処も楽。
0360デフォルトの名無しさん (ワッチョイ fe9f-TN0y)
垢版 |
2018/06/28(木) 15:19:28.79ID:poFZ3+du0
ASP.NET CoreにはJavaの@Transactionalのような仕組みはないのですか?
DispatchProxyを使ってトランザクション管理を自前実装してますがより一般的な手段があるなら乗り換えたいです
0361デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
垢版 |
2018/06/28(木) 15:21:33.85ID:pHy9VzUja
今時232C使ってるようなデバイスでそんな振り分けが必要なデータなんか送ってくる可能性は低いと思いうけどねw

I2Cとか485をエミューレートしてるとかなら知らんけど
そんなデバイス聞いたことないけどさ

アプリ作るのも、ブロードキャストして要らないデータはアプリ側で捨てる方が簡単で
保守性も高いでしょう
0363デフォルトの名無しさん (ササクッテロ Sp51-r5YT)
垢版 |
2018/06/28(木) 17:08:19.49ID:mI3gmfcxp
普通のシリアル通信にコンフリクト回避のネゴエーショ等の機能は存在しないんだが、どうするつもりなんだろうな。
RS422規格の通信にするにしても、ドライバーが対応してないと難しいよな。ハードフロー制御なドライバーにして後はハードに頑張ってもらうのかな?
0368デフォルトの名無しさん (ワッチョイ 39bb-yLSg)
垢版 |
2018/06/28(木) 18:25:00.98ID:hgy03eod0
また必死なのが沸いてるなァ
0369デフォルトの名無しさん (ワッチョイ 8251-hbKR)
垢版 |
2018/06/28(木) 19:07:13.57ID:mpKH796a0
>>347
ありがとうございます
いろいろ試してみたところ、書いてもらった通りメソッドを宣言したオブジェクトのジェネリック型引数が
全部値型ならPrepareMethodの第2引数は要らないみたいです
でも値型と参照型が混在する場合は参照型のハンドルだけ渡せばいいというわけではなくて
値型のものも含めて渡す必要があるみたいなので、
やっぱり基本的にメソッドを宣言したオブジェクトがジェネリック型引数を持つなら
第2引数は必要と考えたほうが安全な気がします
0373デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
垢版 |
2018/06/28(木) 19:29:53.64ID:u+1Q3Zjpa
>>372
これやるのも2chの馬鹿の特徴だよね

これ見るといつも思うが、こういう馬鹿には自分自身を見る自意識がないのかね。
お前自身がやってることは何なんだw

それ以前に必死だったら何なのかね。意味が分からん
まるで「お前ウンコした!!!」って騒いでる中学生だけど、ガチでそのあたりで精神年齢止まってる可哀想なお方なんだろうけどね
■ このスレッドは過去ログ倉庫に格納されています

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