[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/23 02:37 / Filesize : 278 KB / Number-of Response : 1016
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2020/05/27(水) 20:28:41.27 ID:Pggemlyq0.net]
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part147
mevius.5ch.net/test/read.cgi/tech/1582100741/
■関連スレ
C#, C♯, C#相談室 Part94
mevius.5ch.net/test/read.cgi/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
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/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
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

176 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 07:24:19.57 ID:tX12dTLd0.net]
ちなみにこれじゃsqlite使う意味ねえじゃんwって思われそうだが、その初回時の検索でlong型のPrimaryKeyであるUniqueIdも取得するんで2回目以降は一つ一つ検索する場合でも普通に早い
タグ以外にもblob型の多少サイズ大きいバイナリとか色々DBには保持させてるんでな

177 名前:デフォルトの名無しさん (ワイーワ2 FF12-HKig) [2020/06/18(木) 11:07:27 ID:OoPd9bgDF.net]
forで愚直に検索中にディレクトリの状態やDBの状態が変化していなければ良いねω

178 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 11:27:39.83 ID:8/3vTp6fa.net]
SQLiteはトランザクション無いんだっけ?
>>172みたいな自分用のDBで500ms以内に変化するようなクエリって何だろう・・・

179 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 11:54:40.21 ID:ZcH1+5T10.net]
トランザクションいるよな
とってるときも書き込むときも

180 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 11:58:11.67 ID:JTgDDftK0.net]
SQLiteにだってトランザクションあるでしょ

181 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 11:59:20.73 ID:ZcH1+5T10.net]
>>177
あるある

182 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 12:01:47.66 ID:LpN/zpxZ0.net]
SQLiteに限らずmatchならまだしも文字列の=って糞遅いでしょ、トランザクションが有効なのって書き込み時だしね
SQLiteのクエリはutf16版を使ったところで結局はutf8への変換が生じるからC#から使うとオーバーヘッドは避けられない
その上でPRAGMA encoding='UTF-16'とかしてたらまたまたキーワード部分を変換しないといけなくなったりともうめちゃくちゃ
だから一回のクエリで全件持ってきてC#上で検索すればそれくらい早くなるというのはまぁ自然

183 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 12:03:22.57 ID:8/3vTp6fa.net]
ごめんバージョン 2.0から導入されてたね

184 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 12:35:51.08 ID:u7MaeuvH0.net]
ファイルのデータベース管理って言うとWinFSを思い起こすな



185 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 13:20:40.79 ID:h9R/TQ390.net]
トランザクショなるNTFS=TxFとか沼ですな。
※Vistaで導入7から8に変わった時に
デグレした機能w

TransactionalFileMgr
.Net Transactional File Manager がこのスレ
的に正解かな?

186 名前:デフォルトの名無しさん (オッペケ Sr3b-CFTz) mailto:sage [2020/06/18(木) 14:45:37 ID:N068eYZUr.net]
>>179
検索そのものが遅いんじゃなくて
5000回のクエリ発行と結果受け取りが遅いと予想したが

187 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 13:35:38.83 ID:jQi52PAy0.net]
C#のGUIからパイソンを実行してデータ分析させたいんだけど、
すごく簡単に実現できる方法ってありませんか?

1 C#からテキストファイルでデータ出力
2 C#からPython起動し、テキストファイルのパスを渡す
3 Pythonでデータ分析しグラフ出力

みたいな感じです。
PythonからC#に受け渡すデータはありません。

188 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 13:42:47.45 ID:bTXo9Nr1M.net]
アイロンパイソンでええんちゃう

189 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 15:46:22.00 ID:7MKh9Chd0.net]
コマンドプロンプトのパイソン実行でええんちゃう?

190 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 22:13:03.58 ID:zuodZOih0.net]
batファイルで、解決できそう

191 名前:デフォルトの名無しさん (ワッチョイ 0f01-5fXH) mailto:sage [2020/06/24(水) 15:59:14 ID:rxIn+gin0.net]
SQL Server Express LocalDBのSQL文の質問なんですが

CREATE DATABASE myDB;
これはちゃんと成功するんですが

CREATE DATABASE IF NOT EXISTS myDB;
こう書くと失敗します
System.Data.SqlClient.SqlException (0x80131904): Incorrect syntax near the keyword 'IF'.
Incorrect syntax near 'myDB'.

このSQL文は使えないんでしょか?かわりの方法はあるでしょか?おねがいします

192 名前:デフォルトの名無しさん (ワッチョイ 3f01-0Hhk) mailto:sage [2020/06/24(水) 16:14:51 ID:ZBvJ9IFx0.net]
>>188
DROP DATABASE IF EXISTS myDB;
CREATE DATABASE myDB;

193 名前:デフォルトの名無しさん (ワイーワ2 FFbf-qwRG) [2020/06/24(水) 16:27:10 ID:6+kkBVmVF.net]
DROP すると等価ではないな

194 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 16:40:01.38 ID:rxIn+gin0.net]
>>189
さんくすです、DROPすると以前のデータが消えてしまいそうで
ドロップしたらうまく動くんですが



195 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 17:06:11.29 ID:ZBvJ9IFx0.net]
>>190
おお、そうだね
文法しか気にしてなかった

>>191
CREATE DATABASE文にはIF NOT EXISTSとかのオプションは無いから>>188はエラーになる
DROPはIF EXISTSのオプションが用意されてる

188と等価にしたいならT-SQLのIF-ELSE使って存在チェックして
DBが無い場合にだけ作成すればいい
(存在チェックはDB_IDかsys.databasesを読むか)

IF EXISTS ( … )

ELSE
CREATE DATABASE …

196 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 17:13:36.03 ID:LZQGw3mN0.net]
で、それらc#なの?
SQLの話ならスレ違いだ

197 名前:デフォルトの名無しさん (ワッチョイ 8f01-2vNH) mailto:sage [2020/06/24(水) 19:42:09 ID:H9m4GMw80.net]
DDL文

198 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 20:43:40.85 ID:rxIn+gin0.net]
>>192
さんくすです
> IF NOT EXISTSとかのオプションは無いから
なんと、あったら便利なのにね
IF-ELSEでがんばってみます

>>193
SQL文なので若干すれ違いかなっと
似たようなことがLINQtoSQLでできればとおもったのですが

199 名前:デフォルトの名無しさん [2020/06/24(水) 22:59:21.23 ID:G18p0mGY0.net]
Entity Frameworkでデータベースと連携したい場合

public class Book{
. public int Id { get;set;}
. public string Title { get; set;}
}

モデルは↑みたいな感じになるけど
実際には↓みたいな感じに色んなデータとふるまいを持ちたいとする
public class Book{
. public int Id { get;set;}
. public string Title { get; set;}
. public List<Picrture> Picture { get;set;}
.
. (以下振る舞い等)
}

この場合って下のデータモデルからから上のDTOに変換してデータベースに入れる(取り出す時は逆)って考え方でいいのかな?
多くのサイトがEntity Frameworkでのデータベースへの突っ込み方しか書いてなくて
実際に運用する場合のデータの持ち方の考え方がよう分からん
この辺りまで詳しい本とかサイトとかあったら教えてください

200 名前:デフォルトの名無しさん [2020/06/24(水) 23:58:21.16 ID:KiDLqidP0.net]
いいんじゃない?DTOは名前の通りデータをDAOと受け渡すためだけに使って、振る舞い持たせるのは違う気がする。

201 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 00:07:24.74 ID:pPMcnwWPa.net]
単純なアプリだとDomainModelも単純だからEntity、DomainModel、ViewModelを同じインスタンスで済ませられる場合が多い
真面目にやるならそれぞれ別のクラスにしてマッピングするんだけどめんどくさいんだよな

202 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 00:24:04.27 ID:GAspYPHa0.net]
めんどくさいけど、アプリ自体を拡張する可能性があると分けといたほうが後々良いことがあったりなかったり

203 名前:デフォルトの名無しさん (ワッチョイ 0fa7-eW5c) mailto:sage [2020/06/25(木) 01:37:48 ID:Q34w5rfS0.net]
>>199
やめた方が無難
拡張したい階層が2-3ズレるのはよくあること
たったそれだけなのに拡張のために付けた処理が邪魔になって
本当にやりたい改修が大きな工数になってしまうことはよくあること

204 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 08:19:30.72 ID:+9vWEdNfr.net]
>>200
「ズレる」ようなのは設計と言えないし、そんな設計したことないけどなあ



205 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 08:48:00.18 ID:Q34w5rfS0.net]
>>201
あるやろ?
色んなリストの表示方法(文字着色、並び替え、フォントサイズ個別指定、背景色着色)を実装できるようにしたけど
客の欲しいのはページングのある印刷機能だけだったみたいな
改修にときノリで入れたフォントサイズの変更や文字や背景色がページング印刷時にうまく出ない
→ああ、無いほうが簡単だったな

っとか

206 名前:196 [2020/06/25(木) 20:33:53.95 ID:42cionTC0.net]
ありがとうございます
勉強になりました

207 名前:デフォルトの名無しさん (ワッチョイ 0f87-plLw) mailto:sage [2020/06/26(金) 07:51:51 ID:a7mre53d0.net]
c#でアクティブウィンドウがosよりも先にキーボード入力を受けとる方法はありますか?

やりたいことはリモートデスクトップを全画面で繋げている場合、Alt+Tabキーの入力は呼び出し元のosではなく、リモートデスクトップ側が取得しているように見えます。
この挙動を自作のguiでもできればと考えています。

「アクティブウィンドウがosよりも先にキーボード入力を受けとる」の認識が間違っているかも知れませんが、リモートデスクトップのような挙動を実現する方法を教えてください。

208 名前:デフォルトの名無しさん (ワッチョイ 8f01-2vNH) mailto:sage [2020/06/26(金) 08:39:13 ID:EHOqkK/F0.net]
グローバルフックしか無いと思うな
SetWindowsHookEx を調べてみなされ

209 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 09:07:56.65 ID:wYfFflLL0.net]
>>204
余計なお世話かもしれないけど、アプリの枠の外にあるOS側での共通の操作を、1アプリの都合で勝手にフックされて違う動作になるのは使う方からするとストレスになるから気を付けた方がいいかも。
リモートデスクトップはある意味OS内OSだし、そういう例外的なケースならばアリだと思うけど。

210 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 09:43:44.08 ID:an36r83ud.net]
>205
ありがとうございます。調べてみます。

>206
今回は自分で使いたいものなんで。
将来的に業務で使う機会があれば考慮するようにします。ありがとうございます。

211 名前:デフォルトの名無しさん [2020/06/26(金) 13:15:51.31 ID:PjbtVFt+F.net]
キーロガー禁止

212 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 20:47:00.03 ID:EHOqkK/F0.net]
Tik Tokの完全再現をw

213 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 15:49:13.62 ID:BmoMMcjv0.net]
20年ぐらい前からプログラミングやりたいと思い続けてきた文系おじさんだけど
数年前から少しずつ勉強し始めて、
やっとのことでちょっとしたものをC#で作れるようになってきた
おもしろいわぁ

214 名前:デフォルトの名無しさん [2020/07/02(木) 08:48:04.62 ID:+yIU1z+T0.net]
https://freesoft-100.com/review/lightbulb.html
色温度をいじれる言語ってなんでしょうか?
pythonを主に使用しているのですが、C#系でないと色温度はいじれませんか?
色温度にもモニタ側、gpu側があると思います。



215 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 09:03:57.94 ID:unw3xiWi0.net]
>>211
詳しくないから間違ってるかもしれないが、そのアプリ単体ではなく他のアプリも含めて画面の色温度を変えるという機能なら、OSがそういうAPIを提供しているということかな。それならそのAPIを利用できる言語ならばC#に限らずなんでもいいと思うけど。

216 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 09:04:49.65 ID:iSJIUTiv0.net]
>>211
スレ違いだからpythonのスレで聞くかそれのソース自分で理解してほしんだが
C#でできるのはWINAPIをラップした.NETの機能を使うか直にDLLのAPIを呼び出すかくらいなんだから
pythonでAPI使えるのなら同じことができるはず

217 名前:デフォルトの名無しさん [2020/07/02(木) 09:51:08.11 ID:+yIU1z+T0.net]
ありがとう
c#にはそういうクラスがあるみたい
winのソフト作るにはc#が一番都合がいいよね

218 名前:デフォルトの名無しさん [2020/07/02(木) 11:09:32.81 ID:esHBKAii0.net]
質問です
DateTime.Now.ToString(@"yyyy\MM\dd") => 2020\07\02 を期待したいのですが 2020M7d2 になります
今は \\ を別な文字に置換し変換後また置換ってやってますがよい方法あれば教えてください

219 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 11:15:16.64 ID:j3S5Aqle0.net]
>>215
@"yyyy\\MM\\dd"

220 名前:デフォルトの名無しさん (ワッチョイ 8749-OmMV) mailto:sage [2020/07/02(木) 11:26:03 ID:SFSsBsHn0.net]
そこに\マーク入れる文化ってどういうものなの

221 名前:デフォルトの名無しさん (ワッチョイ 638c-VQSO) mailto:sage [2020/07/02(木) 11:31:04 ID:xozoa+r10.net]
日付にバックスラッシュ…?

222 名前:215 [2020/07/02(木) 11:41:12.70 ID:esHBKAii0.net]
>>216
なるほど、できました
しかし元の文字列は \ 一文字で決まっているのでどのみち何か手を加えないとならないですね

>>217-218
フォルダ名の生成で日付を含めた任意の書式を扱えるようにするためなのです

223 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 12:25:41.08 ID:frMfUtj7r.net]
あー「ファイルパスを作成するとき、年月日ごとのフォルダ階層をつくるため」ってことね
年の中に月だけの名前のフォルダとかセンス的に俺はようやらんけど、理由は理解できたわ

224 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 12:43:20.68 ID:ZEZ39nL50.net]
>>215
年月日をそれぞれ別に取得したほうがいいんじゃね

必要ならそれをPath.Combineで連結すれ



225 名前:デフォルトの名無しさん (エムゾネ FFaa-JCxG) [2020/07/02(木) 17:00:29 ID:ryu4JvV+F.net]
/でも造れるやろ

226 名前:デフォルトの名無しさん [2020/08/01(土) 16:52:28.79 ID:aC56TYwwM.net]
VisualStudioは糞です。
{}を使うとき

public voidnicemethod
{

}
となるのではなく

public void nicemethod{
}
と自動でなるようにするにはどうしたらいいですか?

227 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 16:54:09.31 ID:G+VYcIGl0.net]


228 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 16:58:48.08 ID:GNM8CN2Y0.net]
>>223
オプションから起動時の設定変更出来るよ
昔は後者のほうが行数少なくて済むから良いと思っていたけど、最近は前者でも別に良いわと

229 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 17:01:00.07 ID:8QGIO3XO0.net]
縦長ディスプレイなら良いんじゃね

230 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 17:57:59.23 ID:E5+XpSzKd.net]
整形はvsのデフォルトに任せるようにした
独自整形ルール作ってるプロジェクトに入るとめんどくせって思うようになってしまった

231 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 18:15:37.32 ID:8AkvqbAqa.net]
同じ構文木なら表示形式はなんでもいいはずだ
保存時の形式だけ標準化して、編集時はユーザーの好みに合わせてフォーマットするようにIDEが進化すべき

232 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 18:23:48.50 ID:dl6F83GvM.net]
簡単な住所録作ろうとしてます。
登録と削除と追加ができればいいだけのやつ。データ保存はデータベース側に。
これのシンプルなオープンソースプロジェクト知っている方いませんか?いたら嬉しい。

233 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 18:48:40.23 ID:Yannm6rz0.net]
>>229
オープンソースプロジェクトの何を探してんの?
データベース?

234 名前:デフォルトの名無しさん (ワッチョイ 4dde-akQC) mailto:sage [2020/08/01(土) 19:19:48 ID:1LAdFvqL0.net]
>>230
住所録って書いてんじゃんメクラかよ



235 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 19:31:35.20 ID:Yannm6rz0.net]
>>231
作るのにオープンソースプロジェクトが必要なの?
って言ってるんだけど。
作るんじゃなくて流用する、の間違いなら、ああ、って思うけどさ。

236 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 19:43:37.72 ID:EiwM5rD/0.net]
まあ、そのまんま使えねーだろーから改修して使おうってんじゃねーの?
オープンソースの正しい使い方やん

237 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 20:12:27.90 ID:Yannm6rz0.net]
簡単な登録と削除ができるだけでいい住所録にそんなものが必要だとは思わんというか、
何かをカスタマイズしてその程度の住所録にするのは、ちょっとたいそうな気がする。

238 名前:デフォルトの名無しさん (ワッチョイ 7a6a-xE3T) [2020/08/01(土) 20:49:12 ID:oCALSNxU0.net]
エスパーすると作りたいけど右も左も分からんからお手本が欲しいってことかな

239 名前:デフォルトの名無しさん (ワッチョイ b178-xE3T) mailto:sage [2020/08/01(土) 20:51:54 ID:xhSYh2050.net]
>>229
https://www.google.com/search?q=c%23 Address book

240 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 21:48:16.20 ID:NKcPOHZ30.net]
オープンソースってちょいっと触るには佇まいがでかすぎて流用には向かないことが多い
住所録のどこの部分の機能が必要か知らんけど
単にアドレス帳の登録、削除、編集の基本機能だけだったら1〜2日の内容だから
どっか入門サイトで似たようなの見つけて実装したほうが早いと思う

241 名前:デフォルトの名無しさん [2020/08/01(土) 21:52:38.29 ID:+9Q20FKV0.net]
スレ違いだったら申し訳ないです。
C言語をやろうととりあえずmacかったのですが、
どのソフトで開発環境作ったらいいでしょうか?

242 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 21:54:22.30 ID:G+VYcIGl0.net]
>>238
ここCじゃなくてC#な

243 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 22:04:49.38 ID:8QGIO3XO0.net]
>>238
もう一つ言っておくと、mac はobjective c
(c++)でないと
画面作れないよ

244 名前:蟻人間 mailto:sage [2020/08/01(土) 22:06:32.74 ID:LLVAByzud.net]
macは自由陣営じゃないから。。。



245 名前:デフォルトの名無しさん [2020/08/01(土) 22:11:32.98 ID:+9Q20FKV0.net]
わかりました
ありがとうございます

246 名前:デフォルトの名無しさん mailto:sage [2020/08/02(日) 06:10:11.27 ID:T2MIboAU0.net]
c#で作ったbotからandoroidスマホに通知を送る良い方法はありませんか?
履歴を確認できる方法で。
今まではline-notifyでlineに送っていたのですが、新しいルート証明書をインストールしなくてはならなくなって別の方法を探しています。

247 名前:デフォルトの名無しさん mailto:sage [2020/08/02(日) 07:27:09.21 ID:EizALxAu0.net]
>>243
相手が端末の電源オフのときはどうしたいの?
サーバーの特定のデータを見に行く作りにしないと結局使えないじゃんってなることのが多かったよ

248 名前:デフォルトの名無しさん [2020/08/02(日) 12:52:22.51 ID:scrCUlqp0.net]
データクラスって一時期C#にも付くんじゃないかって言われてたのに、一体どうなったの?
https://try.kotlinlang.org/#/Kotlin%20Koans/Introduction/Data%20classes/Task.kt
オートプロパティのおかげでJavaみたくはならないから要らないってこと?

249 名前:デフォルトの名無しさん mailto:sage [2020/08/02(日) 13:54:59.45 ID:xaz7GC4v0.net]
9でrecordくるよ

250 名前:デフォルトの名無しさん mailto:sage [2020/08/02(日) 14:51:37.50 ID:umITGI3r0.net]
https://ufcpp.net/blog/2020/6/record0609/
https://ufcpp.net/blog/2020/6/cs9vs16_7p3/
recordsはこんな感じ

251 名前:デフォルトの名無しさん [2020/08/02(日) 16:20:00.33 ID:NsDY9jGSF.net]
ここはプログラムを描きたい人造りたい人向けのスレ
フリーソフトダウンロードして使いたい人は相応のスレへ逝くことをお薦めします

252 名前:デフォルトの名無しさん mailto:sage [2020/09/03(木) 22:01:35.41 ID:RMVHFRAl0.net]
public interface Ixxxxx
{
 int method1(int x);
}

インターフェイスについて質問です。
上ではメソッドの型を定義しているわけですが、
インターフェースの引数定義で、xのように変数を設定するのはどうしてなんでしょうか。
ここでは使われない変数なので、型のみで良いと思うのですが。

それから、publicを省略して、interfaceとだけ定義する理由はどうしてなのでしょうか。
classなら、publicを前置するのに。

253 名前:デフォルトの名無しさん mailto:sage [2020/09/03(木) 22:10:50.18 ID:RMVHFRAl0.net]
ルート相対的URLを保存するクラスは何が適しているんでしょうか。

String型に、/root/abc/def を文字列として保存しているのですが、
適切な型があれば教えてください。

254 名前:デフォルトの名無しさん mailto:sage [2020/09/03(木) 23:38:56.88 ID:FEiIVBqsM.net]
>>249
名前がないと何を意味する引数なのかが意味不明だから
interfaceはpublicメンバしか持てないから



255 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 00:15:18.15 ID:yQcUkcYq0.net]
引数名ないとドキュメント化する時にも困るしね

256 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 11:28:01.48 ID:M8Oq5rfA0.net]
>>249
引数や戻り値の型をしっかり定義しないといけない理由は、ILやアセンブリといった低レベル知識を学習すればよく分かるよ
機械語レベルだとint、long、float、double〜etcはそれぞれ命令文が違う
だから引数や戻り値がバラバラな値型だとそれぞれの機械語を生成しなきゃならず共用化出来ない

逆に言うと参照型であればポインタだけで済むので実は共用化が出来る
なので参照型であればobjectとして定義をすれば実際に共用化可能(値型もboxingしてobject型にすれば同様)

257 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 11:39:06.89 ID:krKESdlN0.net]
型のみで十分なのになん変数名まで書かなきゃならんの?って質問にその回答は適切ですか?

258 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 12:06:19.79 ID:yQcUkcYq0.net]
>>253
その回答はズレてる

259 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 12:46:23.59 ID:YyY7xdI50.net]
>>251
>>252
レスありがとうございます。
なるほど、
変数名に引数の役割について記録しておくということにとても納得しました。
ソースの自己ドキュメント化につながりますものね。

>>253-255
レスありがとうございます。(^-^)

260 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 13:31:45.96 ID:Cdgw0eXGM.net]
インターフェイスメンバに引数名が必要なのは名前付き引数のためでもある
名前付き引数ってのはmethod1(x:123)みたいな書き方のこと
正確には名前付き引数がC#に導入されたのは比較的最近なので時系列が逆なんだけど、
.NETはC#に限らずいろんな言語を動かすことを想定して設計されてるので名前付き引数のための要請についても元々考慮されてたというわけ

261 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 14:23:19.04 ID:Utz5OTUqa.net]
>>257
下のコードは合法なのでさすがにそれは意味不明
interface IHoge
{
  void Fuga(int x);
}

class Hoge : IHoge
{
  public void Fuga(int y)
  {
  }
}

262 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 14:29:57.19 ID:G2vvVEFn0.net]
引数名を変更するのってどういったケースを想定してるん?

263 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 14:34:15.41 ID:Utz5OTUqa.net]
別に想定なんかしてないのでは?
単に違法にする理由がないだけかと

264 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 17:36:23.03 ID:nh9T8LFU0.net]
>>258
IHoge hoge = new Hoge();
hoge.Fuga(x: 100); //<= OK
hoge.Fuga(y: 100); //<= NG: compile error



265 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 18:29:28.50 ID:Utz5OTUqa.net]
>>261
当たり前やんw

266 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 19:19:04.36 ID:Utz5OTUqa.net]
あーインターフェイスのメソッドの仮引数が名無し定義を許す仕様になってたら
名前付きで呼び出せないよって言いたいわけか
確かにその通りだね。

だけど「名無し定義を許さない理由の一つは名前付き引数を想定していたから」は考えすぎじゃないのかな

267 名前:デフォルトの名無しさん (テテンテンテン MM8f-wKT+) mailto:sage [2020/09/04(金) 19:51:37 ID:Cdgw0eXGM.net]
いや名前付き引数はVB.NETには昔からあったぞ
想定していないわけがない

268 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 20:31:43.96 ID:nqNO8CQ40.net]
そもそもコンパイルしても変数名はILに残るわけだし
C#1からたぶんそうだよね?reflectionあるんだし

269 名前:デフォルトの名無しさん (アウアウウー Sa8b-wKT+) mailto:sage [2020/09/05(土) 10:58:29 ID:JiWof8twa.net]
>>265
それはもちろんその通りで、名前付き引数も当然そのメタ情報を見るわけだけど、
MSが仮に明確な意思をもってインターフェイスメンバに引数名は絶対要らないという設計判断をしたならCLIもインターフェイスメンバには例外的に引数名を持てない仕様にしただろう
CLIの設計としてはわざわざそんな例外を設けるのは不自然だし、C#の言語仕様を考えてもインターフェイスメンバだけ例外的にメソッド宣言の文法が違うのは不自然だ
もちろん、実装には追加コストを払って特別なケアが必要になるだろう
そこまでして引数名を省略したいだろうか?ということだね

270 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 12:34:52.95 ID:Waja5Z+Na.net]
実行時に小さくないコストが発生するような方法なんて取るわけないと思うよw
メタ情報なんて見てるわけないじゃんwww

271 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 13:22:53.11 ID:azagYl6mp.net]
家政婦はメタ

272 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 13:51:42.86 ID:6OTXYwA0M.net]
>>267
誰が実行時に見てるなんて言ったんだ?
見てるのはコンパイル時

273 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 14:12:24.58 ID:RVsSclOOM.net]
2日連続して秒で論破されとるやつw

274 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 16:47:07.35 ID:aivXeFh8d.net]
>>270
スレタイの通り初心者なんやろ



275 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 18:29:01.06 ID:Waja5Z+Na.net]
>>266は誤読したけど前日に論破(笑)なんかされた覚えはないよw

言い訳をさせてもらえばそもそも>>265-266は話の意図が不明瞭。
どっからそんな話が出てくる

276 名前:のって話 []
[ここ壊れてます]






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<278KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef