ふらっと C#,C♯,C#(初心者用) Part143

レス数が900を超えています。1000を超えると表示できなくなるよ。
2019/05/16(木) 19:28:06.27ID:s+6oZKe00
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■関連スレ
C#, C♯, C#相談室 Part93
http://mevius.5ch.net/test/read.cgi/tech/1492818720/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part142
https://mevius.5ch.net/test/read.cgi/tech/1551908141/

■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2019/07/07(日) 10:15:11.78ID:j2KZDgbi0
>>820-822
スレタイとテンプレを100回読め
2019/07/07(日) 11:16:58.28ID:jS7WTg4AM
>>823
これが厳格に型付けされた言語の堅牢性というやつか
825デフォルトの名無しさん (アウウィフ FF67-8SCj)
垢版 |
2019/07/07(日) 11:45:01.15ID:L+nDH+YyF
面接なら学歴で判るやろ
書類審査で落とせよω
2019/07/07(日) 13:16:21.46ID:hDpH6KWgd
>>825
だから、面接じゃない。
2019/07/07(日) 13:18:36.13ID:RiANTxc00
>>824
2019/07/07(日) 14:49:06.33ID:BJpXuyXB0
今更だけど正規表現って便利だよな
2019/07/07(日) 15:35:03.89ID:lzm3aSge0
>>828
ケン・トンプソンに足を向けて寝られないな
で、幾ら寄付した
2019/07/07(日) 16:14:12.50ID:RiANTxc00
正規表現だけは義務教育で必修科目にした方がいいレベル。
2019/07/07(日) 16:19:18.76ID:HW54Zi3hr
そんな化石じゃなくて、Spracheくらい使いこなして欲しい
2019/07/07(日) 17:03:29.81ID:RiANTxc00
>>831
聞いたことなかったから調べてみたけどパーサコンビネータなんてものがあるんだな。あるんだな、としか言えないが…
833デフォルトの名無しさん (アウアウエー Sadf-T0Pq)
垢版 |
2019/07/07(日) 23:39:01.62ID:bDhdwGYba
「正規表現」という日本語は誤訳だな
もっとセンスの良い名前にして欲しかった
2019/07/08(月) 01:02:49.46ID:cNkXgaMY0
IT用語は基本的に直訳だからわかりにくいよな。
まあ一人の日本人代表がいてその人が訳す、ってわけにはいかないから直訳にならざるを得ないんだろうけど。
2019/07/08(月) 01:19:52.33ID:hibKRezs0
変換する時に性器表現ってなって恥ずかしいです
2019/07/08(月) 01:22:48.04ID:PMnHK5x30
普段から打ってる文字が出てくるからな
2019/07/08(月) 03:01:04.74ID:elBPLT9ba
>>833
全然誤訳でも何でもないと思うけどw
838デフォルトの名無しさん (ワッチョイ 63da-T0Pq)
垢版 |
2019/07/08(月) 04:59:48.66ID:RkH5/lfh0
DBからDataGridViewにデータを読み込む際、今はDataSourceプロパティでバインドしてるんですが、
読み込み時に別のカラムを追加して表示させたい場合、バインディングを維持しつつ追加する方法はありますか?

それとも、バインディングはやめてカラムを手動設定したほうが無難ですか?
839デフォルトの名無しさん (ワッチョイ 63da-T0Pq)
垢版 |
2019/07/08(月) 04:59:49.08ID:RkH5/lfh0
DBからDataGridViewにデータを読み込む際、今はDataSourceプロパティでバインドしてるんですが、
読み込み時に別のカラムを追加して表示させたい場合、バインディングを維持しつつ追加する方法はありますか?

それとも、バインディングはやめてカラムを手動設定したほうが無難ですか?
2019/07/08(月) 06:07:05.98ID:1ZIC0qck0
大事な事なので二度聞いてみました
2019/07/08(月) 06:08:30.23ID:FkSdV/QQM
linqかませれば普通にいける
2019/07/08(月) 08:34:05.86ID:2W9WZX0zr
>>839
> 読み込み時に別のカラムを追加して表示させたい場合
読み込みの関数の中でカラムを追加するのだけは止めよう
2019/07/08(月) 10:00:42.88ID:LgG8YOFq0
性器表現とか、性的解析とか、やらしい。
2019/07/08(月) 18:56:24.14ID:JxcTzaD5M
全く別の話題だけど
バインドってなんか利点あるんかな?
全部つながってることを確認しにくいっつーか
重くて欠点しかない

正直、制御しにくい
テストも容易じゃねーし
845デフォルトの名無しさん (ワッチョイ ffad-T0Pq)
垢版 |
2019/07/08(月) 21:40:08.92ID:hY1MiSUP0
C#の初心者以前の何も知らない素人です
どうか教えてください

xmlDataProviderを継承して、
System.Windows.Input.RoutedCommand 型のオブジェクトを公開プロパティ(あとからセット可能)に持つ
カスタムクラスはC#でどう書くのでしょうか
2019/07/08(月) 21:47:33.85ID:Ng6ihs+br
しょしんしゃいぜんのひとがきくないようじゃない
847デフォルトの名無しさん (ワッチョイ ffad-T0Pq)
垢版 |
2019/07/08(月) 22:00:45.38ID:hY1MiSUP0
>>846
powershellでその型を参照したいだけで、本当にC#はさっぱりなんです・・・
848デフォルトの名無しさん (ワッチョイ ffad-T0Pq)
垢版 |
2019/07/08(月) 22:08:07.08ID:hY1MiSUP0
とりあえず適当にそれっぽく書いたら、

using System.Windows.Data;
using System.Windows.Input;
ここで

型または名前空間名 'Data' は名前空間 'System.Windows' に存在しません。アセンブリ参照が不足しています。
って怒られています・・・
2019/07/08(月) 22:09:28.84ID:pSGSFVOB0
System.Refrection
this.GetType().InvokeMember
辺りが近いかな
2019/07/08(月) 22:26:24.45ID:wng3miJE0
>>844
画面とバインドされるデータとのつながりを単純にして
バインドされるデータは画面なしでもテストできるようにしておく

のが理想なんじゃね?
2019/07/08(月) 22:34:22.81ID:G1DtFXg80
Ruby では、< が継承(C is-a B)。
一方、A は包含(B has-a A)なので、Cも、Aを持つ

initialize はコンストラクタで、インスタンス構築時に呼ばれる

class A
end

class B
def initialize
@obj = A.new
end
end

class C < B
end

p C.new
#<C @obj=#<A> >
2019/07/08(月) 22:36:19.15ID:TL3re6KN0
NG:ワッチョイ ff2c-NenP
853デフォルトの名無しさん (アウアウエー Sadf-T0Pq)
垢版 |
2019/07/08(月) 22:40:59.43ID:k/SnQUmGa
うびー禁止
2019/07/08(月) 22:41:02.31ID:j+3NiuIXa
>>848
XmlDataProviderはPresentationFramework.dllで
RoutedCommandはPresentationCore.dllで定義されているから
これらのDLLを参照に追加すればいい: https://dobon.net/vb/dotnet/help/addreference.html
2019/07/08(月) 22:42:16.02ID:3/h7Av580
もう「Ruby」をNGワードにしてもいいんじゃね?こいついろんなスレにわきすぎだろ。
856デフォルトの名無しさん (ワッチョイ ffad-T0Pq)
垢版 |
2019/07/08(月) 22:46:40.42ID:hY1MiSUP0
>>854
なるほど・・・
困りました
実行環境がpowershell ISEなので参照設定的なものがありません
コード上でアセンブリを動的にロードしたり、なにか迂回策をご存知ないでしょうか?
857デフォルトの名無しさん (ワッチョイ ffad-T0Pq)
垢版 |
2019/07/08(月) 22:49:16.25ID:hY1MiSUP0
ああ、それで >>849 さんのヒントっぽい何かが必要なんですね
まださっぱり理解していませんが・・
2019/07/08(月) 22:55:28.21ID:j+3NiuIXa
>>856
動的にアセンブリをロードするにはAssembly.Load()があるけどリフレクションを多用することになるし
powershell上でそれが適切な方法かは知らないからpowershellのスレで聞いてみたら?
PowerShell -Part 3
https://mevius.5ch.net/test/read.cgi/tech/1539074808/l50
2019/07/08(月) 22:59:52.24ID:+Z+rEOeQ0
System.Data.dll, netstandard.dll, System.Data.Common.dll
この辺add-typeすりゃ良いんじゃとは思うけどもうC#の質問じゃないよ
860デフォルトの名無しさん (ワッチョイ ffad-T0Pq)
垢版 |
2019/07/08(月) 23:17:43.83ID:hY1MiSUP0
>>858
難易度がかなり高そうなことはわかりました!

パワーシェルの本体コード側ではpresentationCoreを参照できているんですが、
バージョン問題でパワーシェルで完結できずに、一旦C#でクラスを記述して、パワーシェルで型として読み込みという手順を踏まなければならず、
肝心のC#のなかでpresentationCore参照できない罠にはまりました

ちょっと別のアプローチを考えてみます
ありがとうございました!
2019/07/08(月) 23:41:05.05ID:+Z+rEOeQ0
add-typeにアセンブリ参照のオプションあるから
頼むでスレチは勘弁して
862デフォルトの名無しさん (ワッチョイ ffad-T0Pq)
垢版 |
2019/07/09(火) 00:03:22.38ID:3HHcm2eY0
>>861
すみませんでした
パワーシェル側からC#コードに参照追加できました!!
※パワーシェルも初心者です

本当にありがとうございました
2019/07/09(火) 00:13:09.80ID:0VeokVre0
>>860
>肝心のC#のなかで、presentationCore参照できない罠にはまりました
包含(has-a)だろ。
属性に設定する、メソッドを定義して、引数で渡せば?

Ruby では、これで後から、属性に設定できる

class D
end

class E
def set_d ( d )
@obj = d
end
end

d = D.new
e = E.new
e.set_d( d )

p e
# <E @obj=#<D> >
2019/07/09(火) 01:10:47.36ID:5NAVk8tL0
>>863
参考にならない
2019/07/09(火) 01:56:21.69ID:td6qAd7k0
>>863
お前は人の邪魔にしかならないのだから消えろ
2019/07/09(火) 13:19:31.64ID:PNVKPq2+0
クラス内クラスを作りましたが、内包してる外側のクラスだけが初期化できるようにできませんか。

public class A {
  public class B {
    int data;
    public B(int data) {
     this.data = data;
    }
  }

  public B get(int data) {
    return new B(data);
  }
}

という風にすると、A の外から
var b = new A.B(5);
とかみたいに出来てしまいます。

new B() できるのは A の中だけにしたいのですが。
2019/07/09(火) 13:22:52.92ID:XVpwvTsb0
>>866
B のコンストラクタを protected 属性にして、コンパイルしてみてAから
も new B 出来なくなってしまった場合は、class B の中で、firend class A;
などとすればよいはず。
2019/07/09(火) 13:31:17.01ID:4DQi0zm30
friendとかC++じゃないんだから

Bはインターフェイスで公開するのがまあ基本かな
interface IB { }
class A {
private class B : IB { }
pubilc B Get() { return new B(); }
}
2019/07/09(火) 13:31:57.06ID:4DQi0zm30
しまったミス
public IB Get() { return new B(); }
2019/07/09(火) 13:52:20.92ID:PNVKPq2+0
public IB Get() { return new B(); }

のところでアクセスビリティが低いと叱られてしまいましたが
2019/07/09(火) 14:01:28.14ID:9fSmOQgfa
>>870
classやinterfaceのデフォルトのアクセス修飾子はinternalだからエラーになっている
IBのアクセス修飾子をpublicにすればいい
2019/07/09(火) 17:12:06.90ID:XVpwvTsb0
C++スレと間違えてた。
2019/07/09(火) 21:57:22.42ID:FuCJaqnQa
>>866
(1) Bのコンストラクタをprotectedに

(2) Aの中にBを派生したprivateなクラスBBを作る(実装は空っぽでも構わない)

(3) BBをnewしてBとして返す

まあでも、そこはあんまりこだわる必要ない気が
2019/07/10(水) 02:47:30.04ID:qnddezc/0
private async void btn_test_Click(object sender, EventArgs e)
{
  for (int i_time = 0; i_time < 1000 ; i_time++)
  {
    await Task.Delay(1 * 1000);
    Debug.WriteLine(i_time.ToString() + "本だ!");
  }
}

というコードを書いています。

ただ、ループを途中でやめたい場合があります。
ループ(待機中)に他のボタン btn_stop をクリックする事により
btn_test の待機処理を停止させる事は出来ないでしょうか?
2019/07/10(水) 03:04:19.12ID:J5NG6fJu0
>>874
CancellationTokenを使う
2019/07/10(水) 03:05:20.71ID:b4vpo7xg0
http://hensa40.cutegirl.jp/archives/3971
Task.Delayのオーバーロードを使うのが正解かと
2019/07/10(水) 03:18:13.49ID:bAZEwl9Ua
>>874
private async void btn_test_Click(object sender, EventArgs e)
{
  var continuesLoop = true;
  EventHandler eh = (snd,ea) => continuesLoop = false;
  btn_stop.Click += eh;
  for (int i_time = 0; i_time < 1000 && continuesLoop; i_time++)
  {
    await Task.Delay(1 * 1000);
    Debug.WriteLine(i_time.ToString() + "本だ!");
  }
  btn_stop.Click -= eh;
}
878デフォルトの名無しさん (ワッチョイ 8f2d-dJ7S)
垢版 |
2019/07/10(水) 04:56:00.89ID:I28sYrGn0
CarクラスにDoorとTireをつけたいと思っています
しかし、これらを2つのフィールドとした場合ICarインターフェイスにかけずに困ったしまいます
こういう場合、普通はどのように書くのが正しい方法なのですか?

(個別クラスへの依存性が高い点は無視してください)
class Door:IDoor{}
class Tire:ITire{}
interface IDoor{}
interface ITire{}
interface ICar{
// doorとtireがあることを記述したいが書けない。プロパティにするのも何か違う気がしてしまう。
}

class Car:ICar{//本当ならIDoor, ITireを実装したいが、クラスの方を多重承継できない
IDoor door = new Door();
ITire tire = new Tire();
}
2019/07/10(水) 05:11:40.64ID:kxJIAy2u0
class Car : ICar, IDoor, ITire
{
}

と書けない状況ってこと?
2019/07/10(水) 07:42:46.96ID:lKfqdkKor
interfaceは動作を表す
2019/07/10(水) 11:47:28.74ID:lfKLpD5h0
いつからそう錯覚していた?
2019/07/10(水) 13:42:25.86ID:DYVwrjjtM
COMを勉強した頃からかな
verb=動詞
2019/07/10(水) 15:04:43.19ID:UQq7+8i/M
ASP.NETのWebフォームを作っています。bluetoothで接続したバーコードリーダで読み取ったデータをサーバで受け取りたいのですが、どのようにするのがベストでしょうか。
バーコードリーダはHIDプロトコルで接続しターミネータは<CR>です。
TextBoxにフォーカスを当てて受け取ろうと試しましたが入力だけはOnTextChangedイベントが発生しないのでフォーカスの移動等のアクションが必要になります。
読み取るだけで文字列を処理したいです。さらに言えばフォーカスを意識せず取得できればベストなのですが。
2019/07/10(水) 18:56:02.39ID:N35iChMPd
文字入力を勝手に奪うページってこと?セキュリティとかマナー的にありなんだろうか?
2019/07/10(水) 18:56:38.37ID:N35iChMPd
回答になってないですね、ごめんなさい。
2019/07/10(水) 19:42:55.22ID:Tg8SA/BfM
>>883
なんでバーコードリーダーの型名とかを書かないんだろう…
とりあえずこの辺りを読んでみて
https://sakapon.wordpress.com/2010/06/22/barcodereader/
2019/07/10(水) 20:43:46.51ID:eYkR45a20
業務システム作る現場に飛ばされているのですが、コンボボックスの項目をわざわざデータベースに項目作ってそこからいちいち引っ張るような構造にしてるんです
プロパティで設定するなりaddするなりすればいいじゃん……と思うんですけど、こういう作りにして何か特になることってあります?
2019/07/10(水) 20:48:24.28ID:Pc5iw8Z80
それを作った奴に聞け
2019/07/10(水) 21:00:02.47ID:b4vpo7xg0
難読化の一環だろ(適当)
2019/07/10(水) 21:12:03.05ID:meJrmJ710
>>887
コンボボックスの中身が頻繁に変わるならDBに持つのもわからんでもないけど、ただの固定値なら・・・
2019/07/10(水) 21:22:53.18ID:+MeP9mdJ0
データベースならいじれる人間が変更かける可能性があったんじゃない?
一応、再ビルドはいらないわけだし
2019/07/10(水) 21:28:09.53ID:b4vpo7xg0
客にDB直接弄らせるとか設計的に論外でしょ…
それならXMLで定義するとかにすべきだな
2019/07/10(水) 22:13:16.64ID:yNv9Oz8Z0
要件次第だろ
例えば部署名とかなら社員情報から流し込んだ方が楽で確実だろうし
2019/07/10(水) 22:16:46.33ID:eupZ9wWw0
「税込み」を「内税」に直せとか言われた時簡単に直せるだろ

社内方言は多いぞ
895デフォルトの名無しさん (ワッチョイ 2368-ZIIo)
垢版 |
2019/07/10(水) 23:49:26.61ID:4sKxlb560
double型は64ビットだから2^64までの数字しか表現できないのに
0...........................98999とかなりの桁数まで表示されるのは何故ですか?
2019/07/10(水) 23:51:49.65ID:eupZ9wWw0
double型は64ビットだから300桁以上いけるよ
2019/07/11(木) 00:12:58.86ID:jLO7Qpeya
>>895
倍精度浮動小数点数でググってこい
2019/07/11(木) 00:14:56.74ID:slALBnwOa
>>895
C#いっこも関係ないよwww
https://ja.wikipedia.org/wiki/%E5%80%8D%E7%B2%BE%E5%BA%A6%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0
2019/07/11(木) 02:04:20.88ID:AsB2X0JQ0
弟子丸使えよ
2019/07/11(木) 02:05:49.77ID:j5kiUrVb0
>>895
そんなあなたにITパスポート
2019/07/11(木) 06:37:54.14ID:PGdrFCZv0
dt.Columns.Add("テスト")←この方法でDataTableに列を追加し、

C#でデバッグ中に先ほど追加した列を一時的に削除することは可能でしょうか?

デバッグ中にローカル項目を確認し、列名を削除してみたりしたのですが、列を完全に削除できませんでした

もしデバッグ中にローカル画面などからDataTable内の列を一時的に削除する方法がありましたら教えてください

よろしくお願いします
2019/07/11(木) 09:12:10.91ID:0ZIf3fQR0
イミディエイトウィンドウで
dt.Columns.Remove("テスト");
すればいいという話でいいのかな
2019/07/11(木) 10:04:42.07ID:+ZnUKM8Wp
有効桁でググれ。
904デフォルトの名無しさん (ワッチョイ 3e7c-htnh)
垢版 |
2019/07/11(木) 14:01:32.91ID:6M1lAbxH0
おまいらやん
http://www.pro.or.jp/~fuji/mybooks/okite/okite.9.4.html
2019/07/11(木) 14:54:26.62ID:xAACxOAS0
全部読んでないけどC#に限ったらググってトップに出てくる学習サイトが一番マシなんだから本は一切不要だろう
C#に限ったらっていったけど今時どんな分野でも下手な本よりグーグルランキグン上位のサイトの方が質高いからな
906デフォルトの名無しさん (ワッチョイ 3e7c-htnh)
垢版 |
2019/07/11(木) 15:00:57.91ID:6M1lAbxH0
20世紀の話だった
2019/07/11(木) 20:27:30.70ID:O97KaPiLp
>>905
侍エンジニア塾というのがあってだな…
2019/07/11(木) 20:37:17.03ID:xCkJ5LaR0
侍エンジニア塾は、マンツーマンだから高い!

70〜80万円かかる!
2019/07/11(木) 20:48:11.97ID:tSRqKlWG0
++C++だけでじゅうぶん
910デフォルトの名無しさん (ワッチョイ b3da-YtL5)
垢版 |
2019/07/11(木) 22:35:54.58ID:BgPDMp8z0
dapperでupdateクエリを実行する時、変更された箇所を自動的に判別して更新してくれる機能はありますか?
イメージ的には以下のような感じです。

//読み込み
var model = con.Query<Model>("SELECT * FROM table");

//ここでmodelが持ってるプロパティを編集

//編集されたプロパティのみを自動判別してupdateしてくれる。
con.Execute("UPDATE table *");
911デフォルトの名無しさん (アウアウカー Sa43-snXu)
垢版 |
2019/07/11(木) 22:41:20.48ID:MabNatKwa
WPFのMaterial Design Tool Kitを使ってみたのですが、このコントロールの例えばボタンの大きさとかを変えたりすることは出来たりするのでしょうか
912デフォルトの名無しさん (ドコグロ MM92-vN/E)
垢版 |
2019/07/11(木) 22:46:41.40ID:vUv4mdDMM
>>910
そんなものは無い
贅沢な機能が欲しいならEF使え
まあDapperで全カラムを更新するのとEFで一部だけ更新するのとでは、殆どの場合において圧倒的に前者の方が速いだろうけどね
2019/07/11(木) 22:48:21.28ID:BgPDMp8z0
>>912
ありがとうございます!スッキリしました!
2019/07/11(木) 22:52:23.88ID:Y+auxo+p0
>>911
普通にコントロールのサイズを変えるだけでは?
2019/07/11(木) 23:27:09.99ID:D+McUDWk0
リアクティブなプロパティを使ってゴニョればできるけど
EF使う方が楽
2019/07/12(金) 00:37:29.52ID:Qe/C8AfS0
別にsetのときに何か判定してるでもないのにプロパティ全部getsetいちいち書いて1000行とか使ってるコードに出会った
ぜ、全部消したい……客先のコードじゃなかったら……
2019/07/12(金) 00:39:59.43ID:XU4SChRd0
稀に見るJava土方の臭いがするコード
918デフォルトの名無しさん (ワッチョイ a75f-sqJi)
垢版 |
2019/07/12(金) 06:36:27.03ID:l82xLe+v0
C#の#ってどれ使えばいいんですか
2019/07/12(金) 08:54:37.42ID:wF3EiDpw0
>>916
Bindingも無し?
2019/07/12(金) 10:04:54.95ID:1Y9Zea5/M
そんな悪いか?
自動プロパティ使ってないってことでしょ?
921デフォルトの名無しさん (ワッチョイ b3da-YtL5)
垢版 |
2019/07/13(土) 01:01:25.85ID:WXtjREf70
datagridviewのカラムヘッダーをクリックすると、勝手に1行目のレコードが選択されてしまうのですが、
これを防ぐにはどうすればよいでしょうか。

また、可能であれば、カラムヘッダーのMouseDownイベント自体をキャンセルしたいのですが、どうすればよいでしょうか。
922デフォルトの名無しさん (アウアウカー Sa43-snXu)
垢版 |
2019/07/13(土) 01:06:34.80ID:iqubl+0xa
>>914
ありがとう
調べてみた結果、出来ないっぽいから自作のコントロールでなんとかそれらしくしようと思います
レス数が900を超えています。1000を超えると表示できなくなるよ。