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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 7bde-MYX9)
垢版 |
2017/11/07(火) 21:11:25.20ID:LeQqgpmT0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part132
http://mevius.5ch.net/test/read.cgi/tech/1507543256/

■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/

■コードを貼る場合は↓を使いましょう。
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
197デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/12(日) 23:17:26.10ID:bU5Cj3UO0
>>194
ググればすぐでてくる
https://qiita.com/tokishirazu/items/66a25331d4c78980366e
2017/11/12(日) 23:25:24.74ID:eFe5AqQqM
>>197
やめろ
糞プログラマが量産される
2017/11/12(日) 23:36:13.84ID:WcVSvCUs0
>>195
それを理解するには十分な例だったなw
2017/11/12(日) 23:37:57.60ID:eFe5AqQqM
>>186
"ABCD" + ".text"してるなら
testidの中身はやはり "ABCD.text"です
ただの文字列です
それが勝手に”テスト”になってたら怖いし不便です
プログラムしてて予測がつきませんので"ABCD.text"のままでいるほうが安心です

"ABCD.text"からABCD.textにできる言語もありますが
C#は基本的にそういうのはやらない方向でプログラムするべきです
2017/11/13(月) 00:09:08.69ID:rsYvFHCwr
全然推測できんw

まさかこう言う事?
string testid= ABCD.text;
2017/11/13(月) 00:11:27.37ID:nr7xz/FC0
ダックタイピングする言語じゃないからね
2017/11/13(月) 00:25:51.01ID:KiX40CjjM
>>188
変数に入れたいならtextview型の変数を作っておいてそこに入れよう

textview target = ABCD;

関数(target.text);
2017/11/13(月) 00:26:26.95ID:rsYvFHCwr

string testid = File.ReadLines("ABCD.text");
????
205デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/13(月) 00:31:47.43ID:sn+CO+UA0
>>186
String testid= "ABCD" + ".text";
じゃなくて

String testid=ABCD.text;
2017/11/13(月) 00:36:09.38ID:KiX40CjjM
脳のテストみたいだな
理解できるものだけ理解してる
出来ない人は変なレスしてる
207デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/13(月) 00:38:07.10ID:sn+CO+UA0
答えはリフレクションだろ?
2017/11/13(月) 01:06:43.08ID:8PrajDy/0
初心者がやりたがることとしては定番だろう
そんなに意外性はない
209デフォルトの名無しさん (ワッチョイ df8a-KLCy)
垢版 |
2017/11/13(月) 01:41:09.93ID:v8HXsfBj0
>>208
は?
2017/11/13(月) 02:07:05.43ID:c1Jq4ATj0
>>185
var rand = new Random();
for (var i = 0; i < 5; i++) Console.WriteLine(rand.NextDouble() * 10.0);
2017/11/13(月) 12:29:38.53ID:JPipM5yVd
Controls.OfType<TextBox>().First(c => c.Name == "ABCD").Text
2017/11/13(月) 16:41:04.48ID:KG3ltkXj0
昨日DLLについて質問したものです。
おかげさまでとりあえずやりたいことが実現できました。
C♯からも呼び出せるマクロです^^

電卓とメモ帳を自動操作
http://fast-uploader.com/file/7066114303960/
2017/11/13(月) 17:00:21.29ID:5C1yWWLzM
parallelの中で更にparallelするとどうなりますか?
2017/11/13(月) 17:19:10.80ID:3aIhrZk00
CPUの数だけでパラってあとは順番待ち?
2017/11/13(月) 17:48:55.95ID:c1Jq4ATj0
超Parallelになる
216デフォルトの名無しさん (ワッチョイ ff7f-OWtR)
垢版 |
2017/11/13(月) 18:28:32.97ID:SvVWerXL0
プリミティブな配列
例えばstring[]とかってシリアライズ出来ましたっけ?
2017/11/13(月) 19:09:21.17ID:M6weAJAZM
どんなシリアライザ使うのかもわからんのに答えようがないが
まあそれをシリアライズできないシリアライザはまずないだろうな
218デフォルトの名無しさん (スププ Sd9f-KLCy)
垢版 |
2017/11/13(月) 20:26:35.00ID:WRqgiOAAd
>>188
致命的に説明が下手か何も理解してないかのどっちかだと思う
下手に一般化するより今書いてるコードにコメント書いてそのまま晒した方がマシ
219デフォルトの名無しさん (ワッチョイ 7f7f-OWtR)
垢版 |
2017/11/13(月) 21:09:23.39ID:K5+qKqcP0
>>217
ありがとうございます
2017/11/13(月) 21:18:38.99ID:hP7f8JAdd
asynctaskの中でhttpによるデータ取得して取得したデータを戻り値で返す処理を作成しました。
同時にexceptionによる詳細なエラー内容も戻り値として返したいのですが、どのようにすればよいでしょうか?
戻り値が2つできないので困っております。又、戻り値の型は違います。
2017/11/13(月) 21:22:56.43ID:9NHQYSXO0
>>220
その2つをプロパティとして持つ型をつくる
2017/11/13(月) 21:23:06.80ID:qa5qRZI10
>>220
戻り値二種のValueTuple返せば良いんじゃないの
2017/11/13(月) 21:32:13.09ID:3DwKtl+Id
>>222
WebAPIっぽいし、Tupleだとシリアライズした時にItem1、Item2ってなっちゃわない?
2017/11/13(月) 21:33:28.45ID:3DwKtl+Id
あ、読み違えてたかもゴメン
225デフォルトの名無しさん (ワッチョイ 5f75-OZYs)
垢版 |
2017/11/13(月) 21:38:36.94ID:sn+CO+UA0
>>220
エラーオブジェクトに応答とその他情報突っ込んでthrow
2017/11/13(月) 22:01:26.37ID:qSvbvuzsa
>>220
こんな型でも返しますかw
public class FunctionResult<T>
{
  public FunctionResult(T val)
  {
    Value = val;
  }

  public FunctionResult(Exception ex)
  {
    Exception = ex;
  }

  public bool HasValue
  {
    get { return Exception != null; }
  }

  private T _Value;
  public T Value
  {
    get
    {
      if (!HasValue) throw new InvalidOperationException();
      return _Value;
    }
    private set { _Value = value; }
  }

  public Exception Exception { get; private set; }
}
2017/11/13(月) 23:32:00.25ID:1k/7dsAB0
>>220
>同時にexceptionによる詳細なエラー内容も戻り値として返したいのですが

例外throwすれば良いだけでは?
2017/11/14(火) 01:18:02.74ID:Rbk2zOBm0
正常時は別の戻り値、異常時はthrow?で戻り値の型に合った内容が、
格納されるのでしょうか。
呼び出し元で、どのように取り出せばよいのでしょうか。
229デフォルトの名無しさん (ワッチョイ 5f75-7wKg)
垢版 |
2017/11/14(火) 01:28:44.28ID:Xx2aI1jk0
>>228
エラー処理で検索
2017/11/14(火) 01:36:41.11ID:Rbk2zOBm0
いろいろお教えいただいているのですが、
http://www.nowonbun.com/2016/06/c-trycatchthrowfinally.html#!
↑のようなHPとかthrow とかエラー処理で検索しても
戻り値に入れて、それを呼び出し元でどのように見ているのかいくら探してもでてきません。。

try,catchとかでコンソールにエラー内容出力のことではないですよね。。
2017/11/14(火) 01:36:47.07ID:sw4py9T60
「c# 例外」で検索!
2017/11/14(火) 01:43:50.50ID:sw4py9T60
例外と例外処理
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/exceptions/index

try 内で、throw すれば、catch で補足できる。
throw した例外クラスが、catch の引数に渡ってくる。
以下の e

catch (例外クラス e)
233デフォルトの名無しさん (ワッチョイ 5f75-7wKg)
垢版 |
2017/11/14(火) 01:44:37.90ID:Xx2aI1jk0
関数内で例外をキャッチして新しくException オブジェクト作ってそのInner
Exception にキャッチした例外オブジェクトを突っ込んで作った例外オブジェクトのDataプロパティに返したたいデータ突っ込む
それをthrowして呼び出し元でキャッチしてDataプロパティから取り出す
2017/11/14(火) 01:54:03.16ID:KYSlLmBD0
>>233
新しくExceptionオブジェクト作るなアホか
235228 (ワッチョイ 5fe9-vLjR)
垢版 |
2017/11/14(火) 01:59:34.75ID:Rbk2zOBm0
皆さまありがとうございます。いまださっぱりわからないので出直してきます。。
ありがとうございました。

try catchでcatchのとこにエラー情報が入る?まではわかったきがするのですが、
再スローとかInnerExceptionになるとさっぱりでした。

下位の呼び出し先のエラー情報を上位の呼び出し元にthrowすれば戻り値関係なく渡せるといった感じなのでしょうか。。
サイトみててもそうはどうやってもみえなかったのです。
2017/11/14(火) 02:08:30.45ID:n7fEU+IFd
>>233
意図的にExceptionのインスタンスを作ってスローするのは間違い
SystemExceptionやNullReferenceException、IndexOutOfRangeExceptionも同様
2017/11/14(火) 02:11:41.66ID:L0+XEUiLa
悪口言うつもりはないけど例外の使い方も知らないのに非同期に手を出すとか
順番がおかしいと思うw
2017/11/14(火) 02:12:51.73ID:L0+XEUiLa
>>236
そんなのケースバイケースでしょう。
一概に間違いだとする理由がない。
そういうのを教条主義という
2017/11/14(火) 02:17:16.73ID:VqdZ1M78d
>>238
Microsoft自身がやめろって言ってんのに、わざわざそれに反することをするのはアホ
2017/11/14(火) 02:18:50.68ID:KYSlLmBD0
>>238
c#の例外について少しでもかじったことがあるのならば、アンチパターンだと知ってるはず
2017/11/14(火) 02:20:03.11ID:L0+XEUiLa
>>239
そんなこと言ってる?
言うわけないと思うが仮にそうでも合理性がなければ従う理由もない。
「なぜ」を問わずに盲従する奴こそアホだ
242デフォルトの名無しさん (ワッチョイ 5f75-7wKg)
垢版 |
2017/11/14(火) 02:22:37.27ID:Xx2aI1jk0
>>236
どういうこと?
Exception派生クラスの中から適切なものを選ぶってこと?
それともキャッチした例外オブジェクトにデータを付加するの?
2017/11/14(火) 02:24:17.15ID:NHaW+CLNd
>>241
基本中の基本https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/exceptions/creating-and-throwing-exceptions
2017/11/14(火) 02:25:47.16ID:KYSlLmBD0
>>241
なぜ言うわけ無いと思ったのか説明してごらん
2017/11/14(火) 02:26:51.36ID:L0+XEUiLa
>>243
そんなことどこにも書いてないどころか>>233と同じことをやってる例が出てるけどw
本当にちゃんと読んだ?w
2017/11/14(火) 02:27:34.33ID:L0+XEUiLa
>>244
現に言ってないねw
>>243をちゃんと読んでごらん
そんなことどこにも書いてない
2017/11/14(火) 02:31:42.57ID:WLqSYvBrd
>>245
ちゃんと読めよカスwww

>自作のソース コードからは、意図的に System.Exception、System.SystemException、System.NullReferenceException、または System.IndexOutOfRangeException をスローしないでください。
2017/11/14(火) 02:32:24.83ID:KYSlLmBD0
>>246
日本語のドキュメントなのに読めないとか
249デフォルトの名無しさん (ワッチョイ 5f75-7wKg)
垢版 |
2017/11/14(火) 02:33:31.14ID:Xx2aI1jk0
なんでスップ2つ+固定回線で自演してるの?
2017/11/14(火) 02:34:47.54ID:L0+XEUiLa
>>247
言っちゃわるいけど、君の読解力がおかしいことはよくわかった。

その一文のどこをどう呼んでもキャッチした例外をInnerExceptionに入れて
別の例外を投げてはいけない、などという意味には読めません
2017/11/14(火) 02:36:25.31ID:WLqSYvBrd
>>250
読解力がないのはお前。否定してるのはExceptionクラスのインスタンスをnewしていること。
2017/11/14(火) 02:38:38.93ID:L0+XEUiLa
しかし、

>自作のソース コードからは、意図的に System.Exception、System.SystemException、System.NullReferenceException、または System.IndexOutOfRangeException をスローしないでください。

これ、前者2つがダメな理由は分かるけど後者2つはかなり意味不明だね。
翻訳ミスを疑ったけど英語でもそうなってる。
これはさすがに盲従する奴はアホだと思う
2017/11/14(火) 02:40:17.14ID:WLqSYvBrd
>>252
本気で言ってる?同じ疑問を持つ人はいるみたいだから少しググれば出てくるけど
https://stackoverflow.com/questions/22453650/why-are-we-not-to-throw-these-exceptions
2017/11/14(火) 02:41:11.99ID:L0+XEUiLa
>>251
普通に読めば>>233に出てくるExceptionとは限定的にExceptionクラスだけを
指しているとは読めない
2017/11/14(火) 02:45:47.13ID:WLqSYvBrd
>>254
あんな質問してくる初心者に「新しくExceptionオブジェクト作って」と言えば、「new Exception()」するだろうよ
ところで、>>253を少しは読んだのかい?
2017/11/14(火) 02:46:50.86ID:L0+XEUiLa
>>253
なるほど、NullReferenceExceptionの方は一応回答者が理由出してるけど
もっと明示的な例外の方が良いから使うなというには弱いように感じるね。

IndexOutOfRangeException の方は使っちゃダメな理由出てないね
2017/11/14(火) 02:47:11.28ID:KYSlLmBD0
>>254
勉強になって良かったね
2017/11/14(火) 02:47:35.87ID:L0+XEUiLa
>>255
それ、じゃあ自分なら何て表現するか考えてから言ってる?
2017/11/14(火) 02:48:14.13ID:L0+XEUiLa
>>257
「よっしゃ、今日はこのぐらいにしといたるわ」 by 池乃めだか
2017/11/14(火) 02:48:46.66ID:WLqSYvBrd
>>256
出てるからちゃんと読みなさい
2017/11/14(火) 02:49:29.79ID:L0+XEUiLa
>>260
出てないって
出てるなら引用してみ
2017/11/14(火) 02:50:04.51ID:WLqSYvBrd
>>261
煽って探してもらおうとするクズ
2017/11/14(火) 02:50:53.16ID:KYSlLmBD0
>>256
ほんとドキュメント読めない人なのね
2017/11/14(火) 02:56:20.70ID:L0+XEUiLa
>>263
君、そういうくだらないレスしかできない自分が嫌にならないの?
絵に描いたような「精神勝利法」だけど、そんなので勝った気になれるって小学生かよ。
俺ならプライドがあるからやらないけど、きっと傷つくような自尊心なんて最初から持ってないんだね
2017/11/14(火) 02:59:16.44ID:KYSlLmBD0
>>264
初心者ならもっと謙虚になりなさい
266デフォルトの名無しさん (ワッチョイ 5f8a-KLCy)
垢版 |
2017/11/14(火) 05:35:40.63ID:e8+qL+KH0
>>264
久々にみた気持ちの良いブーメラン
親切に教えてもらっても意固地になる人って職場にも一人はいるよね
2017/11/14(火) 06:55:43.62ID:sSxxq2Sz0
例外処理が難しすぎるのか例外処理を分かってないヤツが多すぎる。
Go言語が例外処理を言語仕様からはずしたのも納得できるな。
2017/11/14(火) 06:57:50.52ID:sSxxq2Sz0
>>237
非同期とか使わないでも実装出来るものを非同期にするとか
ロックの仕組みも分かってないのにスレッド使うとか
スキルの無いヤツほど難しい事をやりたがるwww
2017/11/14(火) 07:11:13.47ID:R9xQaEyZM
プロパティだけのデータストア用インナークラスを作ってるんですけど、クラスの修飾子をprotectedにして中のプロパティをpudlicにしています
メンバの方がアクセス権が広い事に違和感を感じるのですが世間様ではある事なのでしょうか
2017/11/14(火) 07:41:12.60ID:kBR8KFzeM
>>269
クラスもパブリックにしよう!
271デフォルトの名無しさん (ワッチョイ 5f4b-7wKg)
垢版 |
2017/11/14(火) 08:09:47.71ID:sF+2jjEu0
>>267おまえなら>>220にどう対処する?
2017/11/14(火) 08:27:49.82ID:04qZtOw+0
>>269
クラスがprivateの場合はメンバの方を広くするしかないんだからそれ自体はおかしくない
クラスがinternalでメンバがpublicというのはよくある
でもprotectedな内部クラスというのはそもそもあまり一般的ではないと思う
クラスの外にその内部クラスを使うユーティリティを定義したくなったらどうする?
紛らわしくて不便なだけで特にメリットがない
2017/11/14(火) 08:29:03.55ID:04qZtOw+0
補足
(派生クラスを作ろうとした人が)クラスの外にその内部クラスを使うユーティリティを定義したくなったらどうする?
という意味な
2017/11/14(火) 08:49:01.70ID:bKDw6GK5M
>>271
おそらく、HttpClientを使ってるんだろうけど
async/awaitの例外処理には罠がありそうなので
グーグル先生にお伺いをして慎重に例外処理を使う。
275デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/14(火) 09:09:39.51ID:HdsegbLs6
>>274
同期だったとしてどうする?
2017/11/14(火) 09:10:12.07ID:ElF9INq6r
>>220
HaskellのEither辺りを自分で実装w
探せば出てくるが

今時例外はあまり使わんね
時と場合によるが
277デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/14(火) 09:11:01.60ID:HdsegbLs6
>>276
サーバーに接続出来なかったらどうする?
2017/11/14(火) 09:13:48.16ID:ElF9INq6r
>>277
接続出来ない旨のLeftを返す
279デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/14(火) 09:15:00.68ID:HdsegbLs6
>>278
レフトとか知らないけど例外でよくね?例外がダメ理由は?
2017/11/14(火) 09:22:41.57ID:bKDw6GK5M
>>275
敵艦に突っ込んで玉砕だな
281デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/14(火) 09:32:31.86ID:HdsegbLs6
>>280
呼び出し関数内で何かしらのデータを作ったとしてそれはどうやって呼び出し元に伝達する?
2017/11/14(火) 09:39:13.23ID:bKDw6GK5M
>>281
何のデータの場合?
2017/11/14(火) 09:40:53.91ID:/dr35bqC0
暇な奴だ
284デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/14(火) 09:41:26.10ID:HdsegbLs6
>>282
404のレスポンスボディとか
2017/11/14(火) 09:47:33.77ID:bKDw6GK5M
>>284
例外で帰ってくるやつか?
そらなら呼び出し元でcatchだね
286デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/14(火) 10:00:57.46ID:HdsegbLs6
例外処理は汚くなるからイベントハンドラとかみたいな呼び出し階層の最上位にだけに集約させたいってこと?
2017/11/14(火) 10:06:00.72ID:bKDw6GK5M
>>286
汚くさせないためにあるのが例外処理だろ?
例外を放置すりゃ呼び出し最上位まで飛んでいくが。
288デフォルトの名無しさん (ワッチョイ 5fb3-ouqv)
垢版 |
2017/11/14(火) 10:11:37.55ID:NRM6wS+d0
存在しないリソースを要求するだけで例外を引き起こせるなら。
289デフォルトの名無しさん (ガックシ 064f-7wKg)
垢版 |
2017/11/14(火) 10:23:21.54ID:HdsegbLs6
>>267>>276が何を言いたいのかわからん
2017/11/14(火) 12:12:12.09ID:5gpUPtII0
>>233
Exception派生オブジェクト
って書いとけばそれで済んだ話だと思うんだが
よくもりあがってるな
2017/11/14(火) 12:48:00.23ID:qGKirkhkd
>>290
それもそうだし、あまりのドキュメントを読む能力の無さに吹いたわ
2017/11/14(火) 13:35:30.02ID:kMJcGUhsM
例外の内容を戻り値で返そうとしていた時点で察するべき
2017/11/14(火) 13:35:49.40ID:uXnSzNFD0
今月ずっとhResult == IntPtr.Zeroとかresult != 0とか書いてた俺から見れば
例外なんて天国じゃないですか
2017/11/14(火) 13:42:38.82ID:kMJcGUhsM
>>293
その天使を握り潰してリターンで返してエラーハンドリング地獄にしようとしていたのさ。
2017/11/14(火) 13:51:56.33ID:D89+JmTA0
でもファイルが開けないで例外は困る
他のも完全に例外とそうでないのと作った奴との波長が合わないと
仕分けが面倒臭い
いっそ握り潰すは結構わかる
なんかいい手はるのか?
2017/11/14(火) 13:58:20.49ID:QAeRXYyyM
開けないという結果を返したいなら戻り値で返せばいいじゃん
例外の詳細が欲しいとか言うなら例外のまま戻ればいいってなる
2017/11/14(火) 14:04:41.09ID:kMJcGUhsM
>>295
開けないファイルを処理できる場所で例外のキャッチをすれば良いだけだが。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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