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


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

C#, C♯, C#相談室 Part93



1 名前:デフォルトの名無しさん(ワッチョイ 1e06-m8Mb) mailto:sageteoff [2017/04/22(土) 08:52:00.93 ID:iVvswOrb0.net]
■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
www.visualstudio.com/downloads/

■コードを貼る場合はこちら
ideone.com/

■前スレ
C#, C♯, C#相談室 Part92
echo.2ch.net/test/read.cgi/tech/1485589613/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

876 名前:デフォルトの名無しさん mailto:sage [2018/12/12(水) 21:46:33.67 ID:Lm9ykMW+0.net]
先月も変なのが沸いてたけど同一人物だな

877 名前:デフォルトの名無しさん [2018/12/14(金) 16:44:56.02 ID:nWTWWp6e0.net]
質問いいでしょうか
webapiにて
var task = Task.Factory.StartNew
これで重い処理をバックグラウンドで処理させています。
このtask開始時にDBにProcessThread.IdとProcessThread.StartTimeを落として
別のwebapiでDBに落としたIdとStartTimeを使って
GetCurrentProcess().Threadsを検索して定期的に生きてるかのチェックを行っています。
これがけっこう不安定みたいで、バックグラウンドの処理が終わる前に
ProcessThreadが検索できなくなる場合があります。
最初にStartNewさせた際のProcessThreadが生きてる正しい確認方法はないでしょうか?
ブラウザを閉じた場合を考慮してProcessThreadで確認を行いたいです。

878 名前:デフォルトの名無しさん [2018/12/14(金) 17:44:35.68 ID:nWTWWp6e0.net]
すいません。
変な質問ですね。
var taskを見るのではなく、その他の方法で
バックグラウンド処理が動いてるかの確認が行いたいです。

879 名前:デフォルトの名無しさん [2018/12/14(金) 18:14:11.54 ID:nWTWWp6e0.net]
すいません。
自己解決です。
static public Task wkTaskを宣言しておいて

wkTask= Task.Factory.StartNewで作成したあと、ブラウザを閉じて
開き直してもwkTaskは生きてますね。

スレ汚しすいませんでした。

880 名前:デフォルトの名無しさん mailto:sage [2018/12/14(金) 21:29:27.54 ID:OUs3lGdw0.net]
自己解決できるやつは偉いぞ

881 名前:デフォルトの名無しさん mailto:sage [2018/12/15(土) 02:43:07.58 ID:LeOuIFUL0.net]
>>845
そのTaskが必ず1つしか動かないって保証があるならいいけどね。
ブラウザ閉じる->開くを繰り返したらどうなるんや

882 名前:デフォルトの名無しさん mailto:sage [2018/12/15(土) 16:24:19.51 ID:U8VjJ+lV0.net]
ブラウザ閉じて開いて、サーバの同じスレッドに接続して同じタスク拾う保証どうやってるんだ

883 名前:デフォルトの名無しさん mailto:sage [2018/12/26(水) 11:49:06.15 ID:yRPOvGGU0.net]
Action.Invokeでvoidと比べてstatic voidの方が遅いのってC#7だと改善されたの?

884 名前:デフォルトの名無しさん mailto:sage [2019/01/09(水) 13:31:28.35 ID:C73LM3okM.net]
javaのtry-with-resouceみたいにusing書けるようにしてくれないかな
どうしてもネスト深くなるの辛い



885 名前:デフォルトの名無しさん mailto:sage [2019/01/09(水) 15:23:40.58 ID:c4aAB3Aqd.net]
>>850
C#8.0

886 名前:デフォルトの名無しさん [2019/02/10(日) 17:55:21.67 ID:Y+0FbWW50.net]
メソッドへのオブジェクト引数で、参照渡し(refをつける)、とオブジェクトの値渡し(refなしの値渡し。つまり、ポインター(アドレス)渡し)の違いがわかりません。
同じと思ってますが・・・・・。事実は違うようです。参照だと

887 名前:渡し元も変更される、っていう違いは分かります。
それ以外の違いはあるんでしょうか?
[]
[ここ壊れてます]

888 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 18:14:21.76 ID:vpLDyodj0.net]
>>852
オブジェクトの値渡しってどういうこと?
参照型なら全部参照渡しになると思うが

889 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 18:17:54.37 ID:Mw20IJUM0.net]
refだと渡し元が変更されるって十分な違いだろ
どうあって欲しいんだよ一体

890 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 18:43:21.99 ID:vOpxNkmL0.net]
>>852
ここらへんを見てみればいいかと
https://dobon.net/vb/dotnet/beginner/byvalbyref.html#section3

かんたんに言うとどっちでも渡されたオブジェクトの中身は変えられるけど、ref付けないと新しいオブジェクトを設定して呼び出し元に返せないってこと

891 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 18:57:09.81 ID:ynO2ssbq0.net]
参照値でも、refつけない値渡しとref付ける参照渡しできる。
で、参照値以外の値...とりあえず非参照値と呼ぶと
非参照値でも、refつけない値渡しとref付ける参照渡しできる。

全部で4パターンあるってこと 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b)


892 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 19:18:44.11 ID:zgWWffC0a.net]
>>852
簡単なので難しく考えてはだめ。すごくシンプルな話。

その型の値(その型の変数に格納される値)を渡すのが値渡し。
その型の変数の「場所」を渡すのが参照渡し。
さらっと書いたけど、「その型の値 = その型の変数に格納される値」なのはよく理解する必要がある。
つまり、参照型の変数に格納される値って何だったか要再考。

変数とはメモリ上に割り当てられた特定の領域のこと。
だからその領域のバイト列のコピーを渡すのが値渡しで、
領域の先頭アドレスを渡すのが参照渡しだと思えばいい。

参照渡しでメソッドが受け取る情報は「変数の」場所なので、参照渡しの引数に
リテラルや式を渡すことは出来ない。

893 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 19:59:44.58 ID:xbk//Ba50.net]
多分だけど参照渡しと値渡しの挙動自体は理解しているものの、
デフォ参照型とデフォ値型の区別がついておらずにデフォ参照型で実験をしてrefでも素渡しでも変わらないやんってことじゃないか

894 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 20:36:28.11 ID:3Dzzkr73a.net]
tuple使えるならrefは忘れていいと思う



895 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 20:53:04.89 ID:OiPWe/iEa.net]
TryParseみたいなのだと成否と値がtupleで返って来てもifの中でめんどい

896 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 21:03:14.46 ID:c1xIq/Nm0.net]
メソッド内で中身を変更するって理由で参照型のもref渡ししてるのみてイラッとしたことはある。イランヤン

897 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 08:03:59.18 ID:RCleUAyA0.net]
それVB6からの移植とかじゃない?
オフショアが移植したコードがそんなんばっかし

898 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 15:02:26.65 ID:RVSdpjZja.net]
ref の使いどころってライブラリから複数の返値欲しい時だから
他の手段使えるならそっちでいいわな
未初期化変数指定できんのも地味にイラッと来るし

899 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 15:22:08.28 ID:xSGeZZ3R0.net]
>>863
そういう場合はrefではなくoutを使う

900 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 15:23:06.12 ID:MkFOBvt90.net]
>>863
> 未初期化変数指定できんのも地味にイラッと来るし
out使えよ

901 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 15:23:27.15 ID:MkFOBvt90.net]
被った…

902 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 16:36:40.92 ID:2icS/4sTa.net]
引数いじるの好きじゃないわ
返り値だけで判別させて

903 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 16:54:38.75 ID:I8dqqL3E0.net]
まあ参照型はoutの制約で十分かつ安全なのでrefはほぼ出番ないんじゃねえのん
Swap関数を定義する時くらしか適切な例が思い付かねえ

904 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 18:26:18.92 ID:2ERt5pT00.net]
そのswapがな、MVVMでお決まりのBindableBaseなりのSetPropertyでプロパティの値交換するときに使いまくりで、
androidでもMVVM使いまくってるけどrefないkotlinやjavaでやると...



905 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 19:50:18.92 ID:u96ReIy/0.net]
プロパティの値交換するときってのが想像つかんが
どういうときにそれを使いまくるんだ?

906 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 21:01:30.06 ID:KFZGfstbM.net]
プロパティの値をソートする時じゃね?(適当)

907 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 23:51:08.44 ID:HQcd2HqP0.net]
BindableBase SetPropertyとかでぐぐってみれ
有り体に言えば自身のプロパティ(のバックストア)を差し替えるジェネリックメソッドを基底クラスで定義するのに使うだけ

908 名前:デフォルトの名無しさん mailto:sage [2019/02/13(水) 00:40:04.33 ID:6JezjdzR0.net]
WPFとかUWPとか使ってればBindableBaseのありがたさはよくわかる

関係ないけどstaticメソッドって呼び出すときにいちいちインスタンスを生成する必要がないって以外のメリットあるのかな?

909 名前:デフォルトの名無しさん mailto:sage [2019/02/13(水) 01:53:30.80 ID:sK/raQIQa.net]
>>873
まあメリットって発想がそもそもおかしい。
例えばDouble.Parseがstaticなのはその方が意味的に自然だから
インスタンスメソッドである必然性がないし、インスタンスメソッドでは不自然だから

910 名前:デフォルトの名無しさん mailto:sage [2019/02/13(水) 04:15:53.43 ID:VGvE+KfY0.net]
>>873
パフォーマンス

911 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 21:00:36.96 ID:YtWtNE43a.net]
dictionaryとかのcollection系が手抜きなのなんで?
特にdictionaryとか拡張必須だし
割とc#好きだけどこれはほんとアカン

912 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 22:13:27.13 ID:qKlS4dB9d.net]
>>876
何がどうあかんのか具体的に

913 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 22:45:20.23 ID:tlcLfILV0.net]
テンプレート系はデータが増えればC++にでも勝てるのに
何が問題?

914 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 00:22:49.50 ID:dIP2EtTm0.net]
Collection系はJavaの方がしっかりしてるよね。



915 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 00:39:22.49 ID:2WeUN81J0.net]
>>879
Javaは何が違うん?

916 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 03:04:36.23 ID:l1U6kYAka.net]
Queue以外は不満持ったことないね

917 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 21:54:02.82 ID:kAPwBxa3M.net]
queueは空っぽの時取り出そうとすると落ちやがるの許せん勝田
今はTryあるからいいけど

918 名前:デフォルトの名無しさん [2019/02/15(金) 22:47:38.37 ID:izkrr7dEa.net]
いやチェックしとけよそこは

919 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 08:41:04.77 ID:q1DAaOKG0.net]
例外が発生することを落ちるって表現する男の人って…

920 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 10:36:35.40 ID:8cj+4+Hl0.net]
例外っていろんな種類あるけど具体的に何を使えばいいのかよくわからなくて
とりあえずcatch(Exception e)とかしちゃってるけど本来はこんなのダメだよな……

921 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 11:09:50.80 ID:mveZudXk0.net]
別にいいと思うぞ。下位の呼び出しのどこかで失敗したということに対して適切に処置するなら。

922 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 12:03:59.89 ID:mmBt6tnL0.net]
>>885
例外は握りつぶしてこそ華

923 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 12:43:39.03 ID:LCZTEEhT0.net]
catch(Exception e){

924 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 13:08:53.78 ID:q1DAaOKG0.net]
>>885
> 例外っていろんな種類あるけど具体的に何を使えばいいのかよくわからなくて
投げる方で悩むのはわかるけど
> とりあえずcatch(Exception e)とかしちゃってる
受ける方はどれ受けるべきかはわかってる



925 名前:ナしょ
最終手段としてよくわからんけどエラーが発生したから終了するね
って言うならcatch(Exception e)もありだと思うが
[]
[ここ壊れてます]

926 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 13:37:31.27 ID:mveZudXk0.net]
終了というのがプログラムの終了のことなら逆にcatchしちゃだめだろう。

927 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 14:43:51.47 ID:NIO8UzEI0.net]
>>889
catch { }ではw
>>890
例外一つでプログラム終了していたら大概困るw

928 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 15:01:00.34 ID:NEtPpdWW0.net]
例外はありえない事態なんだからプログラム終了しなきゃまずいだろう

929 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 15:02:54.74 ID:PR5Tb5Rba.net]
>>891
それは逆で、プログラマが想定してない例外が発生したら
プログラムは停止してもらわないと困る。これが正しい考え方。

そもそも例外機構というのはそのためにある

930 名前:デフォルトの名無しさん [2019/02/16(土) 15:03:48.09 ID:uy2P96bkM.net]
最近部活の後輩が黒魔術みたいなコードを書くようになって困ってるんだが対策ない?

こんな感じのコードを後輩が書いてくるんだよ↓

public interface IMessenger {
__public MessageReceived();
}
public abstract class Messenger : IMessenger{
__public abstract void MessageReceived();
__public abstract void Retry();
}

931 名前:デフォルトの名無しさん [2019/02/16(土) 15:04:05.72 ID:uy2P96bkM.net]
public class Mail : Messenger {
__public override void MessageReceived(){
____//処理
__}
__public override void Retry(){
____//処理
__}
}
public class Alarm : Messenger {
__public override void MessageReceived(){
____//処理
__}
__public override void Retry(){
____//処理
__}
}
public class Communication {
__public void SendMessage(IMesssenger message){
____SendMessage(message);
__}
__public void Received(){
____var received = GetMessage() as IMessage;
____received?.MessageReceived();
__}
}

932 名前:デフォルトの名無しさん [2019/02/16(土) 15:04:31.94 ID:uy2P96bkM.net]
こんなんだったから

public class Communication{
__public void SendMessage(string message){
____SendMessage(message);
__}
__public void Received(){
____var received = GetMessage();
______switch(received.First()){
_______case "0":
_________MailEvent(received);
_________break;
_______case "1":
_________AlermEvent(received);
_________break
____}
__}
}

こんな感じで書くように矯正しといた
CSVで2文字で分けるって言ってるんだから
何が起こってるかわかるように書くことを意識してもらわないと

933 名前:デフォルトの名無しさん [2019/02/16(土) 15:06:36.58 ID:8cj+4+Hl0.net]
まあ例外でプログラムは終了させるべきだよな
ただ客は例外が起きてもcatchで握りつぶしてスルーした方が文句言わないんだよな……

934 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 15:14:21.65 ID:auHH3gBua.net]
>>894
酷いな
MediatoRを使うようにアドバイスしてあげなよ



935 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 15:19:24.61 ID:PR5Tb5Rba.net]
>>894
2chのシステムは先頭の半角スーペースは除去するけど全角スペースは除去しない。
だから字下げは後者で

936 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 15:41:54.82 ID:q1DAaOKG0.net]
>>891
> catch { }ではw
ごめん、何を言いたいのかわかん
処理部分も当然必要だけど何を受けるかの話だから(Exception e)の方が重要だろ?

937 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 22:53:53.99 ID:gbHoDgK/0.net]
>>893
ちょっとMSに例外じゃなくエラーコード戻す設計にするようお前から言ってきてくんね?
W32APIはそうなってんのにFrameworkの方そうなってないじゃん

938 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 00:48:25.53 ID:0sFVNd3o0.net]
宗教戦争を見物now

939 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 14:42:24.50 ID:QIeMqQFm0.net]
byte*からbyte[]にする方法ってない?
new byte[64];みたいに新規確保してコピーしか方法ないんだろうか
Unsafe.As等で新規確保無しで出来るかと思って色々試してみたけど上手くいかない

940 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 15:01:42.36 ID:99sHKv96a.net]
「byte[]にする」が「byte[]とみなして扱えるようにする」って意味なら
全然別の型なんだしあるわけないでしょう。
そういう危なっかしい機能を排除してるのがC#の売りの一つだったはずなわけで

コピーする機能ならMarshalあ

941 名前:スりにあるんじゃない? []
[ここ壊れてます]

942 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 15:16:25.11 ID:QIeMqQFm0.net]
>>904
>「byte[]にする」が「byte[]とみなして扱えるようにする」って意味なら
そういうことです

あるわけないと言いますが、その逆はあるので出来るかなと思い
(byte*やref byteで先頭を指定し自作のstructとして読ませる。少しずらせばbyte[]を自作クラスとして読ませることも可能)

943 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 15:21:31.28 ID:Ox4HquXb0.net]
>>905
>(byte*やref byteで先頭を指定し自作のstructとして読ませる。少しずらせばbyte[]を自作クラスとして読ませることも可能)
具体的なコード希望

944 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 15:23:52.52 ID:UNDanSNQ0.net]
その逆がマネージドじゃ難しいからね
無理じゃないかなあ

やっぱこれからはSpanですよスパンスパン



945 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 15:27:09.29 ID:QIeMqQFm0.net]
>>906
public struct MyStruct { public int Value1, Value2, Value3, Value4 };
byte[] data = new byte[16] { 1,0,0,0, 2,0,0,0, 3,0,0,0, 4,0,0,0 };
ref var myStruct = ref Unsafe.As<byte, MyStruct>(ref data[0]);
これでmyStruct .Value1は1、myStruct .Value2は2, myStruct .Value3は3, myStruct .Value4は4と余計なコピー無しに直接読み書きできる

byte[]からclassの場合はFieldOffset指定して各フィールドを4バイト後ろにづらないと出来ないから実用は難しいけど一応可能

946 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 15:31:55.60 ID:QIeMqQFm0.net]
fixed (byte* ptr = &data[0]) *(MyStruct*)ptr;
と大体同じではあります

947 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 15:40:47.44 ID:QIeMqQFm0.net]
やっぱりこういうことやりたければC++に池ってことなのでしょうか
記憶力悪いのでVSがC#ほど助けてくれないC++に行くのは億劫なため質問させてもらいました

948 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 16:16:49.38 ID:rf6p5Xt1a.net]
Span使え

949 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 16:27:59.23 ID:tKx1WgvG0.net]
byte[]も参照型だからね、オブジェクトヘッダが付いてなければ扱えない
Span<T>でなければ、具体的なシナリオにも依るけど元からbyte[]で作って
TypeHandleとlengthのsizeof(IntPtr)*2分ずらした所を使い回す方が賢明
結局fiexdと一緒な訳だが、P/Invokeならbyte[]渡してもゼロコピーの筈だし

abstract class Union<T> where T : struct {
internal readonly IntPtr length;
public T Value;
}
みたいなオレオレ実装をILキャストした事もあったな…後はSafeBufferとか

950 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 12:35:31.38 ID:78/oBfjca.net]
self containedって完全に依存なしになるわけじゃないのね
alpine用にself containedでビルドしても動かなかった
libstdc++とか色々インストールしたら動いたけどさ
dotnetコマンド同梱と比較してコンテナサイズも殆ど変わらないし意味あるのかなこれ

951 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 12:44:14.85 ID:IWeqLQBdd.net]
>>913
おばか

952 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 14:33:57.39 ID:XSMrGlqdp.net]
SCDは.NETのランタイムを別途インストールじゃなくて同梱するってだけの話だしね
公式ドキュメントにも注釈あるけどLinuxは仕様上完全に断ち切るのは難しいんじゃない?
Windowsだと同梱のファイルだけでそのまま動くけど

953 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 17:41:05.62 ID:DKuxuLxMa.net]
>>915
Windows配布用と割り切った方がいいのかもしれない
Linuxだと管理下のサーバーかコンテナが多いからSCに拘る必要もない

954 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 18:56:24.09 ID:IWeqLQBdd.net]
最近のバッチはみんなSCDにしてる
らくちんらくちん



955 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 19:03:47.82 ID:DKuxuLxMa.net]
Goのように1バイナリにはならんものかね

956 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 19:11:19.09 ID:IWeqLQBdd.net]
>>918
https://github.com/dotnet/designs/pull/52

957 名前:デフォルトの名無しさん [2019/02/26(火) 16:27:59.06 ID:jgGxVc0K0.net]
ちょくちょくポインタ代替機能についての質問があるけどさ
どんな用途でポインタを使いたいのかわかんないけど、大抵の場合はストリームで代用できるんじゃないのかな

958 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 19:45:51.64 ID:KXA/2sKca.net]
ID3タグとかバイナリ使うにゃ要るだろ

959 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 22:52:44.40 ID:cz3vAcnh0.net]
>>921
バイナリデータもストリームで扱える

960 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 23:01:06.66 ID:w0dNr8TE0.net]
バイナリ弄るならSpanでよくね?

961 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 22:56:28.74 ID:0yfFFlZD0.net]
ポインタなんかアンマネージとのやり取りとBitmapdataでしか使ったことないな
アンマネージとのやり取りだとrefとかoutにしとけばあとは何も考えなくていいから助かる

962 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 10:07:34.38 ID:yMVoU8j+0.net]
「変数aが1,4,5,7のいずれかである場合」
という論理式を書く場合
 (a==1) || (a==4) || (a==5) || (a==7)
とswitch文以外でもっと手っ取り早く書く方法ありますか?

963 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 10:20:00.75 ID:Ud+LwFnR0.net]
>>925
その表現が一番端的でわかりやすいのではないですか?

964 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 10:21:50.56 ID:Vr07loEY0.net]
>>925
()いらない



965 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 11:05:26.20 ID:heck9gfNa.net]
new [] {1, 4, 5, 7}.Contains(a)

966 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 11:08:41.04 ID:Co1I1oSR0.net]
>>925
その程度ならその書き方が一番わかりやすいと思うが比較対象がもっと多いとか可変にしたいとかなら
var C = new HashSet<int>(){1, 4, 5. 7};
if(C.Contains(a)){ … }
とかもある

967 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 14:06:20.64 ID:yMVoU8j+0.net]
>>926
数が少ないうちはいいんですが

>>927
カッコの上でShift+Ctrl+}すると
式部分を一発選択できるのであえてそうしてる

>>928
これがいい感じです
少しオーバーヘッドが気になりますが

968 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 14:59:32.01 ID:AX9YyrwL0.net]
SQLみたく
a IN (1,4,5,7)
てかければいいなとおもうが、aが右側になっちゃうのが若干違和感

969 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 15:04:48.62 ID:Nsc0DUxH0.net]
拡張メソッド作れば解決

970 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 19:46:04.84 ID:5yoALKCSa.net]
>>929以上の書き方ねーべ
オーバーヘッドなんぞ無きに等しい

971 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 20:18:35.52 ID:zHCAEP8E0.net]
>>930
HashSetやDictionaryは要素の数に左右されない方法でアクセスを行うから
含まれてるか否かといったような検索用途に限定すれば1個だろうが1万個だろうが常に高速にアクセス出来る
Listや配列は要素数に比例してアクセス時間かかるようになるが

972 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 21:00:42.79 ID:RzDDiNewd.net]
なぜ要素数が増えることがある
という大前提を最初の質問時に明記しないのか

973 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 22:03:38.03 ID:CQ1ng92ga.net]
>>928
これ、new[]の部分を()で括らなくていいのは何か直感に反するけど、
newもnew[]もドット演算子と同じ優先順位なのかw

キャスト演算子も同じ扱いにしてくれたらよかったのに

974 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 01:24:26.71 ID:5kU0Dorz0.net]
>>934
もとの要素がどこにあるかよくわからんけどな
HashSet作成して要素セットするオーバーヘッドがあるだろう
格納時にハッシュ値計算するから比較のコストが低いわけで、その分格納にコストがかかるんだぜ



975 名前: []
[ここ壊れてます]

976 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 02:51:31.92 ID:0iBtFMi0a.net]
使い捨てなら配列のほうが安そうな気はするが
それが差となって現れるようなユースケースとも思えんしなあ






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

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

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