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

■ このスレッドは過去ログ倉庫に格納されています
2017/10/09(月) 19:00:56.93ID:Y4203ffV0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

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

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

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

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part131
http://mevius.5ch.net/test/read.cgi/tech/1504861931/
■関連スレ
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
http://mevius.5ch.net/test/read.cgi/tech/1492843013/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2017/11/01(水) 14:07:25.95ID:vhfog6b10
>>744
x86なC++というかILP32ね、LLP64でもlongは32bitだから、Windowsに限り常に32bit
C#は常にintが32bit、longが64bit、IntPtrがポインターサイズでCIL名native int
2017/11/01(水) 14:12:57.28ID:a3/dOAjga
バイオレンスww
2017/11/01(水) 14:36:04.02ID:wgMqyCilM
>>745
IntPtrは64bitと32bitで自動的にサイズが変わる罠があるよね
2017/11/01(水) 14:53:25.19ID:58WxqpRI0
罠じゃなくてそれをマネージド上で扱うことを目的とした型やねんで
749デフォルトの名無しさん (ワッチョイ 1be7-DNJs)
垢版 |
2017/11/01(水) 15:34:33.63ID:DJIAeWHo0
>>725
当分出来ねえから期待しないでおけ
750デフォルトの名無しさん (ワッチョイ 13f7-cyx1)
垢版 |
2017/11/01(水) 15:53:44.71ID:dB2PwCEI0
>>738
すいません高度すぎてちょっとよくわからないです
FindWindowでウィンドウハンドルを取得して画面をキャプチャするプログラムは作れたのですが
ウインドウハンドルしか取得してないのでウインドウの大きさが設定できなくて困っています
(現在ピクセル数で設定)
GetWindowRectやGetClientRectを使おうとしてもRECT構造体の定義がよくわからなくて出来ません。

GetProcessesByNameで取得したProcessオブジェクトからハンドルとオブジェクトの大きさを取り出すにはどうしたら良いでしょうか?
2017/11/01(水) 16:36:24.43ID:4v6bi03L0
>>750
http://www.pinvoke.net/
2017/11/01(水) 16:43:34.62ID:wgMqyCilM
>>750
https://msdn.microsoft.com/ja-jp/library/a5ch4fda.aspx
753デフォルトの名無しさん (ワッチョイ 13f7-cyx1)
垢版 |
2017/11/01(水) 17:06:28.99ID:dB2PwCEI0
>>751
よくわからないですが後で読んでおきます
>>752
そのページは見たことあるんですが意味がよくわからないです…

すごく低レベルな質問だと思うのですが
Process[] ps = Process.GetProcessesByName("notepad");
foreach (System.Diagnostics.Process p in ps)
{
textBox1.Text = p.MainWindowTitle;
}
だと問題ないのに
Process[] ps = Process.GetProcessesByName("notepad");
textBox1.Text = ps[0].MainWindowTitle;
では動作しないのは何故でしょうか?
2017/11/01(水) 17:12:20.00ID:a3/dOAjga
>>753
後者だけ動かない理由はないから何か勘違いしてるんでしょう
2017/11/01(水) 17:29:00.13ID:wgMqyCilM
>>753
動作しないの内容が曖昧です。
756デフォルトの名無しさん (ワッチョイ 13f7-cyx1)
垢版 |
2017/11/01(水) 17:35:15.46ID:dB2PwCEI0
すいません動きました!
メモ帳開いていなかっただけでした…
2017/11/01(水) 17:37:14.82ID:qqAk/1TWM
勉強用トイプログラムで抽象クラスを継承したクラスにインタフェースを継承したのですが、実務の世界ではよくやる事でしょうか?
抽象クラス側にインタフェースのメソッドを書くとか美しく無いので邪道な事をしてるかもと心配になりまして
2017/11/01(水) 17:46:07.56ID:xAl8OFsq0
>>744
公式にアンマネージとマネージでのデータ形式のリファレンスがあるからそこ見ておいた方がいい
https://msdn.microsoft.com/ja-jp/library/ac7ay120(v=vs.110).aspx
C#でlongは紛らわしいから使わない方がいいと思う
>>753
構造体がわからないとWinAPI使えないよ
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/using-structs
759デフォルトの名無しさん (ワッチョイ 1be7-DNJs)
垢版 |
2017/11/01(水) 17:55:43.82ID:DJIAeWHo0
ボールとか壁に当たって反転させるときに
int speed=1;
更新処理
position.x+=speed;
if(800<position.x)
{
speed*=-1;
}
こうゆう反転っておkなの?+=って無駄じゃねえかとか言われない?
760デフォルトの名無しさん (ワッチョイ 13f7-cyx1)
垢版 |
2017/11/01(水) 19:13:00.27ID:dB2PwCEI0
https://ideone.com/gKjIFo
見よう見まねでRECT構造体を使おうとしているのですが
17行目の&rectWinという所で以下の2つのエラーが出てしまいます
何が間違っているのでしょうか?

ポインターおよび固定サイズ バッファーは、unsafe コンテキストでのみ使用することができます。
引数 2 はキーワード 'out' と共に渡す必要があります。
2017/11/01(水) 19:18:35.70ID:JgbY2jhcM
>>760
その文面でググれば多分わかる

というよりメッセージどおりだよ
引数に out 付けよう
意味が分からないなら調べよう
2017/11/01(水) 19:18:49.98ID:C3RJkmbpd
>>757
人間クラスと継承した社員クラスがあるとして
体重身長インターフェイスは人間クラスに、入社日退職日インターフェイスは社員クラスにってのが普通だと思うけど
抽象クラスだから付けないって考え方は美しくないんじゃないかな?
763デフォルトの名無しさん (ワッチョイ 13f7-cyx1)
垢版 |
2017/11/01(水) 19:22:01.17ID:dB2PwCEI0
>>761
できました!有難う御座います!!!!!!!
2017/11/02(木) 04:46:41.42ID:leSyCza7a
なにこれ
http://www.bityet.us/FVNN6-t6.jpg
https://goo.gl/kLNWUT
2017/11/02(木) 07:15:17.22ID:pmQPnNAeM
>>762
なるほどその通りですね
営業志望の未経験者なのにC#開発しろと言われ正しくOOしてるか不安でした
参考になります
OOとは徹頭徹尾ヴァーチャルマシーンと言われてもピンと来なくて。。。
2017/11/02(木) 13:32:08.71ID:wZG1ntZl0
みなさんありがとうございました。

C++側で void test(long aa[2]);

みたいに定義されてるやつをC#から使うときも IntPtr でやりくりするしかないんですよね。
2017/11/02(木) 14:07:36.43ID:RiVwOr7+M
c#はインタープリタなので遅いって言われたw
768デフォルトの名無しさん (ガックシ 0626-zraI)
垢版 |
2017/11/02(木) 15:50:21.67ID:i1tOzlAd6
バイナリプログラムもCPUがインタープリットしてるしインタープリタだなw
2017/11/02(木) 16:06:47.45ID:/X9eIi7aM
>>766
いやintを2つ並べただけの構造体を用意してrefかout使えばいい
2017/11/02(木) 16:12:10.17ID:KloAouzuM
>>767
コンパイラ型なんだけど。。
あほなの?
2017/11/02(木) 16:17:55.02ID:wZG1ntZl0
>>769
pack意識したうえで配列という手もありますね
どっちにしろコード量は増えますね

C# 側で ref を付けるだけで
勝手にIntPtrやらマーシャル確保・代入・解放してくれたらいいのに・・・
char * → string みたいな超絶ラクチンな方法でさ
2017/11/02(木) 16:20:47.53ID:wZG1ntZl0
ちょっと早合点で書き込んでしまいましたが

[StructLayout(LayoutKind.Sequential, Pack = 4)
struct struct_aa
{
public int aa1;
public int aa2;
}
struct_aa aa;

としたうえで

test(ref aa);

で出来ちゃうんですか!?
2017/11/02(木) 16:43:51.34ID:/X9eIi7aM
>>772
それでいけるはず
2017/11/02(木) 17:08:27.57ID:hwMc8ywnM
>>770
昭和のおっさんなので仕方ない
2017/11/02(木) 17:12:38.78ID:oE5JXb4z0
配列でそのまま渡せばいいのにわざわざ変な方法使うとか
>>766
C#から渡すときはvoid test(int[] aa);でいいんだよ。Visual Studio以外なら知らん
>>772>>773
アンマネージ側で定義されていない構造体を勝手に作って渡すって考え方がおかしい
アンマネージ側で要求されている引数の形式に合わせるのが基本だろ
2017/11/02(木) 17:42:00.04ID:wZG1ntZl0
ググって最初のほうに出てくるサイトで char * 以外は全てマーシャってるので
てっきり IntPtr を駆使すると思い込んでました。
配列じゃないポインタ渡しは ref/out で何の造作もなく出来ました。
(マーシャル関連のコードを大量に書いていたのが馬鹿らしくなるほど)

んで配列ですが

// C++(x86)
extern "C" __declspec(dllexport) void test(long a[2]);

// C#
[DllImport("usrbatch.dll", CallingConvention = CallingConvention.Cdecl)]
static extern void test(out int[] a);

int[] a = new int[2];
test(out a);

で、バイオレーションエラー出ちゃいます。。。
2017/11/02(木) 17:52:53.60ID:oE5JXb4z0
>>776
C++側からC#にoutする形で返したいのならC#からポインタにして渡す
そのコードのC#側のout(ref)だと変な動きにしかならない。消せ
2017/11/02(木) 18:01:00.66ID:wZG1ntZl0
うわぁ、ありがとうございます。

先方で値が書き換わる場合には ref/out を付けないといけない
(付けなかったら配列だろうが値渡しになる)

だと先入観で思い込んでました。
配列だったらC++と同じくポインタ渡しになるんですね!

// C#
[DllImport("usrbatch.dll", CallingConvention = CallingConvention.Cdecl)]
static extern void test(int[] a);

int[] a = new int[2];
test(a);


で、うまくいきました。
(C++側で設定された値が戻ってきた)
2017/11/02(木) 18:34:34.93ID:OVuNv67Pa
>>778みたいな場合、アンマネージド関数の宣言の仮引数にOutAttributeを付ける必要が
あるのかないのか、MSDN読んでもいまいちよく分からん

https://msdn.microsoft.com/ja-jp/library/75dwhxf7(v=vs.90).aspx
を読むとBittableな型の一次元配列の場合不要のようにも思えるが、

https://msdn.microsoft.com/ja-jp/library/hk9wyw21(v=vs.90).aspx
のサンプルでは属性がついてる
2017/11/02(木) 22:14:18.55ID:FJPOLiu40
>>779
そのリンク先に書いてあるぞ

これらの型は、呼び出し元と呼び出し先が同じアパートメントに属する場合には、In/Out パラメータとしてマーシャリングされるように見えることがあります。
ただし、そのような型は実際には In パラメータとしてマーシャリングされるため、引数を In/Out パラメータとしてマーシャリングする必要がある場合には、InAttribute 属性と OutAttribute 属性を適用する必要があります。

Outがないと保証されない
2017/11/02(木) 22:48:20.45ID:uoctVHYW0
>>778
ref/outは書き換え云々というより変数の参照で初期化の必要があるかどうか、P/Invokeでは構造体くらいにしか使わぬ
配列は参照型なので参照の参照になるし、そのままでもオブジェクトヘッダ+要素数を含むのでネイティブ配列へはちょっとズラしている

>>779
上のページに>>780の通りずばり書いてないか?コピーと固定 # 書式指定された Blittable クラスのメモとかにも。そういう事ではなく?


既定のマーシャリング動作を理解し、MarshalAs属性とIn/Out属性を駆使すれば、Marshalメソッドの出番はあまりなくなる
Marshal.UnsafeAddrOfPinnedArrayElementとかもArrayWithOffsetというお誂え向きな構造体がある
手動でIntPtrを捏ね回すのが有効なケースもあるが。ちぃと古いけど↓の記事はよく纏められている
https://msdn.microsoft.com/ja-jp/library/ff647812.aspx#scalenetchapt07_topic4
2017/11/02(木) 22:54:42.83ID:vimPIuS6M
GCがうざいならstackallocを使う手もあるよ
unsafeになるけど、マネージ配列のマーシャリング使ったとしても境界外へアクセスしたら普通にクラッシュするんだし
むしろ危険な操作は明らかに危険とわかったほうがマシ
2017/11/02(木) 23:07:34.82ID:OVuNv67Pa
>>780-781
レスどうも

よく分からない箇所は結局、>>780に引用してある部分の
>同じアパートメントに属する場合には

この但し書きかな。
同じアパートメントって何だ?

>>778のケースでは結局Out属性なしでも期待通り動くみたいだけど、
逆にBittableであっても明示的にOutを付けないといけないのはどういう
場合なんだろうか
2017/11/03(金) 01:31:28.84ID:zjyHgUY90
>>782
stackallocはスタックを理解していなければ危険すぎないか、少量で確保速度が最重要ならアレだけど
unsafeポインターを使うならfixedでも境界チェックは外れるし、そのあたりで…

>>783
アーその辺はCOMの話かな、COMマーシャリングが挟まれると固定では済まなくなるという
https://msdn.microsoft.com/ja-jp/library/eaw10et3.aspx#marshaling_and_com_apartments
具体例については…直接COM使った経験がC++でちょろっとしか無いのでわっかんないや(無能
785デフォルトの名無しさん (ワッチョイ 2ee8-zAbU)
垢版 |
2017/11/03(金) 04:43:40.14ID:ZqwqQq4y0
Parallelの動きがわからん
10個のZIPを同時に解凍する処理するとして

Parallel.Forで実行したらどうなる?
ちなcore i7
エラー?
2017/11/03(金) 09:51:59.78ID:wXWM393Ar
1.5倍(適当)くらい速くなる
2017/11/03(金) 10:02:10.84ID:YKGzMcXY0
>>785
同時実行数はCPUのスレッド数だから8個同時に展開して、2個は待ちになるんじゃね
CPUより展開後ファイルサイズによってはHDD書き込みがネックになりそうな気もするけど
2017/11/03(金) 11:00:02.96ID:QTbHfBOQ0
>>787
オイ!
2017/11/03(金) 15:48:21.85ID:m874gEkx0
>>786
1.5ってすごくいいよ

>>787
動き知りたいんよ
どうなるか
2017/11/03(金) 15:52:47.69ID:OoLmNkMra
何を期待してるか知らないけどやればいいじゃないか
791デフォルトの名無しさん (ワッチョイ c2f7-48Ez)
垢版 |
2017/11/03(金) 17:10:18.04ID:bRMk/YPf0
c#で画像の黄色部分だけを白にして残りを黒にする様なことはできますか?
2017/11/03(金) 17:32:15.18ID:tw8puOLsM
>>791
ProcessでImageMagick呼べば一瞬でできる
似た色はどこまで許容するのかとかいちいち個別に作ってたらキリがない
2017/11/03(金) 18:22:36.00ID:QTbHfBOQ0
DataTable dt = new DataTable();

bool foofunc(ref DataTable dt)
{
  ・・・・
  adapter.Fill(dt);

こんなコード見たんだが何かメリットあるのか?
2017/11/03(金) 18:28:01.91ID:tw8puOLsM
>>793
それ書いた奴が参照型を理解してないんだと思う
何の意味もないので絶対に真似してはいけない
2017/11/03(金) 18:37:57.11ID:QTbHfBOQ0
>>794
c#歴10年のヤツのコードなのだ。
当然foofunc内でtry/catchがあり戻り値にエラー有無が返る。
愚痴ってスマヌ。
2017/11/03(金) 18:41:43.76ID:lrZzjWeI0
>>792
そういうのって、C#でって言うのかな。
2017/11/03(金) 19:35:14.12ID:Xp/sMfFK0
>>791
最低限の要件だけ勝手に解釈してこんな感じ
https://ideone.com/j4HMm8
798デフォルトの名無しさん (ワッチョイ 2ee8-zAbU)
垢版 |
2017/11/03(金) 19:43:53.45ID:ZqwqQq4y0
imagemagickってソースに組み込める何か提供してるん?
2017/11/03(金) 19:44:48.34ID:EmHaDWp+0
大昔にマスク画像を作っていたのを思い出した
2017/11/03(金) 20:02:57.12ID:Xp/sMfFK0
ついでに補足しておくとMarshal.ReadInt32でなくMarshal.Copyでバイト配列で4バイトずつ読めば
Blue,Green,Red,Alphaが取れるから許容範囲設定とかしたかったらそっちで
2017/11/03(金) 20:15:49.55ID:WHWgtK+kr
経験年数と理解度?にどれだけの相関関係があるのか
疑問が生じている今日この頃
2017/11/03(金) 20:20:24.80ID:aVxxhWTE0
相関関係はある
但し個人差は大きい
2017/11/03(金) 20:26:05.42ID:QTbHfBOQ0
>>798
https://www.imagemagick.org/script/develop.php
2017/11/03(金) 22:49:49.36ID:om2fc3b00
>>793-794
refで渡せば、呼び出し先の関数で、呼び出し元の変数のインスタンスを変更できる

これをやりたい状況がどれだけあるかとか、やるべきかどうかとかはおいといて
なんの意味もないわけではない
2017/11/04(土) 00:09:44.98ID:3cC+jj+w0
>>793のケースで意味がなさそうって>>793,794は言ってるのに、
>これをやりたい状況がどれだけあるかとか、やるべきかどうかとかはおいといて
とか一般論を言い出してそのつっこみよくわからん。
806デフォルトの名無しさん (ワッチョイ c2f7-48Ez)
垢版 |
2017/11/04(土) 01:46:45.24ID:qZ8I6rgd0
>>797
ありがとうございます。
ほぼ真っ黒になってしまったのでRGB値で範囲指定できる様にやってみます。
2017/11/04(土) 04:11:36.08ID:MnNwpnC60
>>804
君も参照型を理解してないね。
2017/11/04(土) 08:41:31.55ID:sTeHaJ1X0
>>807
この話の流れに>>804がふさわしいかどうかはおいとくとして...

> 君も参照型を理解してないね。
ちょっと説明してみ
2017/11/04(土) 09:02:47.97ID:5h9DYzfZ0
DataTable dt = new DataTable();

bool foofunc(ref DataTable dt)
{
  DataTable dt = new DataTable();
  ・・・・
  adapter.Fill(dt);

「なんの意味もないわけではない」のコードにはなったが
更に輪をかけた馬鹿コードに進化させてみた。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
2017/11/04(土) 09:17:38.08ID:5h9DYzfZ0
DataTable dt = new DataTable();

bool foofunc(ref DataTable dt)
{
  dt = new DataTable();
  ・・・・
  adapter.Fill(dt);

間違えてたw
2017/11/04(土) 09:19:39.29ID:flyq3nv80
それじゃただのoutじゃんrefの意味じゃないじゃん(難癖
2017/11/04(土) 09:48:23.86ID:5h9DYzfZ0
>>811
そう、参照型にrefは無意味なのです。

参照型が分かってないよりこのコードが問題なのは、
検査結果を引数に返して実行エラーの有無を戻り値で返していること。

参照型も理解していないが例外処理はもっと理解していない糞野郎のコード。
2017/11/04(土) 09:51:19.52ID:5h9DYzfZ0
×検査結果
○検索結果

スマン、寝ぼけてるわ
2017/11/04(土) 10:16:12.92ID:q474DaJy0
>>812
Dictionary.TryGetValue()とかあるし、そこはケースバイケースかな。
参照型にref付けてるくらいだから、何も考えてないのかも知れないけど。
2017/11/04(土) 10:20:08.20ID:5h9DYzfZ0
>>814
public bool TryGetValue (
  TKey key,
  out TValue value
)

refじゃなくてoutやないかい!
2017/11/04(土) 10:29:08.52ID:q474DaJy0
そうだった。>>811とまざった。
こっちも寝ぼけてるねw
2017/11/04(土) 10:29:22.28ID:fyiwYE9E0
つまり
>>793

DataTable dt = new DataTable();

bool foofunc(DataTable dt)
{
  ・・・・
  adapter.Fill(dt);


とは同じ結果になると
2017/11/04(土) 10:37:55.56ID:q474DaJy0
>>815
まぁ、outにする必要はあるけど、
「検査結果を引数に返して実行エラーの有無を戻り値で返していること」
自体に問題はないな。
2017/11/04(土) 10:38:05.17ID:OcSSsXSe0
この手のメンバ変数に検索結果をセットする時はこんな感じにして、例外処理は基本呼出側に任せちゃうんだけど問題あるのかね?
前はエラーコードのEnum返してたけど、エラーケースの殆どが例外処理で扱われる物ばかりだったので止めちゃった

DataTable dt = new DataTable();

Void SetHoge(DataTable dt){
    ・・・・
    adapter.Fill(dt);
}
2017/11/04(土) 10:56:19.06ID:q474DaJy0
>>819
それで良いと思う。
上のみたいに成功したかどうかを返り値で返すのは、
正常運用の範囲内で失敗する場合があるのを想定している場合。
2017/11/04(土) 12:23:07.70ID:5h9DYzfZ0
>>819
自分ならこうするけど。

DataTable GetHoge()
{
  var dt = new DataTable();
  ・・・・
  adapter.Fill(dt);
  return dt;
}
2017/11/04(土) 13:59:17.12ID:dOyJdliUp
>>821に1票
2017/11/04(土) 14:56:00.76ID:ePC4mkkA0
参照型にrefは無意味って言ってるやつは
呼び出し元変数のインスタンスを変更「できる」
ってことをどう評価してるのか
2017/11/04(土) 15:15:02.21ID:Vg1Izipf0
型がわからない変数と同じ型の変数を用意したいときってなんか記述方法ある?
型を調べるとかじゃなくてプログラミング的に解決する手法あったら教えて
2017/11/04(土) 15:24:28.88ID:m6ZusNHm0
型引数で解決できるならそれで
2017/11/04(土) 15:24:47.55ID:Yg7qqeZtd
>>824
ヴァーか?
2017/11/04(土) 15:41:42.41ID:WuSfeAlZa
>>824
var y = 謎の変数x;

っていうか、たぶん何か勘違いしてると思うw

「型が分からない変数」っていうのは実行時に型が決まるって意味なんだろうけど、
変数の型は静的に(コンパイル時に)確定しているのでそれはありえない

それとも匿名型のことを言ってる?
2017/11/04(土) 15:49:14.84ID:jl0ZLZ4q0
dynamic型ならコンパイル時の型チェックは行なわれず実行時に解決するね
2017/11/04(土) 15:52:54.75ID:WuSfeAlZa
>>828
いや、「変数の型」は静的に決まるでしょ。自分でdynamic型って書いてるじゃんw
2017/11/04(土) 15:55:26.19ID:tIYipYwe0
>>824
var x1 = new X();
var x2 = Activator.CreateInstance( x1.GetType() );
2017/11/04(土) 16:13:39.02ID:sTeHaJ1X0
>>823
まあそれが必要なケースがほとんどないし
2017/11/04(土) 16:19:15.36ID:2EEZfJvra
引数のnullチェックして必要ならインスタンスをnewしてつけられる
2017/11/04(土) 16:41:13.06ID:tIYipYwe0
バットノウハウっぽい
2017/11/04(土) 16:43:39.78ID:FXv0ObyH0
>>833
バットは関係ないやろ
2017/11/04(土) 16:53:42.21ID:/YBu7JsUM
>>832
出来るが引数がnullな時点でArgumentException飛ばすんで実用価値はほぼないな。
2017/11/04(土) 16:58:31.41ID:tIYipYwe0
>>834
関係ないな。しょぼい誤字だ。

>>824
何をやりたいか分からないが、ジェネリックメソッドでは目的に沿わないかな。
2017/11/04(土) 17:05:47.97ID:83ZjnaGFa
javascriptみたいなのを想定してるんだろうけど
まあ普通はない
2017/11/04(土) 17:44:10.96ID:SXZaCuwQ0
ベッドノウハウ
しかし俺は未経験
2017/11/04(土) 17:51:46.51ID:sTeHaJ1X0
>>832
だからそんなことが必要になったことがどれだけあるんだ?
2017/11/04(土) 18:10:38.00ID:WuSfeAlZa
なんかしょうもないことで争ってるけど、>>823の方が正しいね

エイリアスの機能がいらないならそもそもrefってキーワードも用意されてないでしょ
負け惜しみでくだらない意地を張るのは子供っぽいよ
2017/11/04(土) 18:13:38.30ID:wTKOoVxtr
ペットノウハウ
ボトルじゃないよ
2017/11/04(土) 18:17:18.92ID:wTKOoVxtr
MSらしく反則技が用意してあるだけ
初心者は使わない方が無難
返り値が二つ以上欲しい時は今なら名前付タプルを使う
2017/11/04(土) 18:26:59.70ID:flyq3nv80
返値代わりに使うのはoutだし今ならって言ってるとおり昔はなかったんだし
ちょっと何言ってるのか分からない
2017/11/04(土) 18:35:14.75ID:sTeHaJ1X0
>>840
> エイリアスの機能がいらないならそもそもrefってキーワードも用意されてないでしょ
???
refって参照型じゃなくても使えるんだが...
参照型にrefを使うことがほぼないだろって話だと思うけどな

> 負け惜しみでくだらない意地を張るのは子供っぽいよ
自己紹介は要らんよ w
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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