[過去ログ] C#, C♯, C#相談室 Part96 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
69
(5): デフォルトの名無しさん (ワッチョイ 37e6-n5CG) [sage] 2022/02/11(金) 22:10:25.35 ID:dtTIM78z0(2/2) AAS
>>66,67
66(2): デフォルトの名無しさん (アウアウウー Sa9b-icCT) [sage] 2022/02/11(金) 20:57:51.73 ID:vdb8lbDWa(1/2) AAS
適当な関数宣言をもったinterface作って、それ派生のclassで実装して
dictionary<string, interfacename>?
67(1): デフォルトの名無しさん (ワッチョイ 1736-Jms/) [sage] 2022/02/11(金) 21:24:52.36 ID:Wnuvjl9G0(2/3) AAS
適当だが書き方の話なら

どこかに書く
bool func(int n) { if (n <= 3) { return true; } else { return false; } }

var a = new Dictionary<string, Func<int, bool>>();

a.Add("test2", func);
bool b2_t1 = a["test2"](1);
bool b2_t3 = a["test2"](3);
bool b2_f5 = a["test2"](5);

ラムダ
a.Add("test1", x => { if (x == 1) { return true; } else { return false; } });
bool b_t1 = a["test1"](1);
bool b_f3 = a["test1"](3);
bool b_f5 = a["test1"](5);

Funcを加工するなら>>66のようにinterface、他オブジェクト型とか識別子渡して型チェックとか?
すみませんありがとうございます
Tが色々な型のFuncを登録したいのですがinterfaceの書き方がわかりません
72: デフォルトの名無しさん (アウアウウー Sa9b-icCT) [sage] 2022/02/11(金) 22:26:34.03 ID:vdb8lbDWa(2/2) AAS
>>69
実際どんなのが欲しいのか知らないけどこんな感じでいいんじゃないの?
interface aaa
{
TRESULT bbb<T, TRESULT>(T n);
}

class AAA : aaa
{
public TRESULT bbb<T, TRESULT>(T n)
{
throw new NotImplementedException();
}
}
73: デフォルトの名無しさん (ワッチョイ 17d2-EiVI) [sage] 2022/02/11(金) 22:30:29.44 ID:Wu/zW80b0(1) AAS
>>69
欲しいのは本当にinterfaceか?って疑問が出るが

ジェネリクスinterfaceの定義方法は(System.Collections.Generic.)IEnumerableの定義を見に行けばなんとなく分かるとは思う

あとinterfaceはinterfaceからしか継承できない

>>65
65(1): デフォルトの名無しさん (ワッチョイ 37e6-n5CG) [sage] 2022/02/11(金) 20:38:37.22 ID:dtTIM78z0(1/2) AAS
Dictionary<string, Func<T, TRESULT>>
みたいな事をやりたいのですが
どう書くのが正解でしょうか?
の書き方だとジェネリクスclassになりそう
81
(2): デフォルトの名無しさん (ワッチョイ 3302-rCQD) [sage] 2022/02/13(日) 12:57:34.90 ID:5Mv4IyiB0(1/7) AAS
>>69
Genericだとコンパイル時点で型決定する必要があるから、色々な型に対応させたいとかなると
>>74
74(1): デフォルトの名無しさん (ワッチョイ 372f-aqmw) [sage] 2022/02/11(金) 22:34:33.50 ID:w2aWSXHv0(2/2) AAS
Dictionary<string, Func<object, object>>ではだめなのか
が言ってるみたいにobjectにするか、dynamicにでもするしかない
86: デフォルトの名無しさん (テテンテンテン MMde-gtE8) [sage] 2022/02/13(日) 14:46:43.73 ID:ifSJDHUhM(1/2) AAS

>>69はDictionaryいっこにいろんな引数型/戻り値のFuncを入れたいと言ってるみたいだから>>81しかないと思うんだけど・・・
引数型/戻り値型毎に別々のDictionaryにするだけなら、たとえば
var dic1 = new Dictionary<string,Func<int, string>>();
var dic2 = new Dictionary<string,Func<int, int>>();
var dic3 = new Dictionary<string,Func<string, string>>();
みたいにT/TResultの組み合わせに応じて別変数にするだけで解決するような・・?
なんでわざわざ>>85
85(3): デフォルトの名無しさん (ワッチョイ b7d2-fdHv) [sage] 2022/02/13(日) 14:40:38.46 ID:3OIdnfKh0(2/4) AAS
いろんな型のFuncを受け付けるようにするならそれ用のclassを作ってしまった方が手っ取り早い

public class MyDictinary<T, TResult> : Dictinary<string, Func<T, TResult>{...}

Funcをなんでも受け付けるようにするなら
public class MyDictinary<TDelegate> : Dictinary<string, Func<T, TResult> where TDelegate: Delegate {...}

どうしてもinterfaceにしなくちゃいけないなら
public interface IMyDictinary<T, TResult> : IDictinary<string, Func<T, TResult>{...}

ごちゃ混ぜのFuncを受け付けるようにするとFunc呼び出し時に大変な思いをするだけだからやらん方がいい
みたいなclassなりinterfaceなりを作る必要があるのかわからない
97: デフォルトの名無しさん (ワッチョイ 3302-rCQD) [sage] 2022/02/13(日) 17:24:19.17 ID:5Mv4IyiB0(7/7) AAS
さすがにそれは判るわw
>>69でinterfaceが判らんって書いてるからサンプルで出しただけ
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.042s