相关疑难解决方法(0)

C#泛型中是否有合理的"默认"类型参数方法?

在C++模板中,可以指定某个类型参数是默认值.即除非明确指定,否则它将使用类型T.

可以用C#完成或近似吗?

我正在寻找类似的东西:

public class MyTemplate<T1, T2=string> {}
Run Code Online (Sandbox Code Playgroud)

这样一个没有明确指定的类型的实例T2:

MyTemplate<int> t = new MyTemplate<int>();
Run Code Online (Sandbox Code Playgroud)

基本上是:

MyTemplate<int, string> t = new MyTemplate<int, string>();
Run Code Online (Sandbox Code Playgroud)

最后,我正在研究一个案例,其中有一个相当广泛使用的模板,但我正在考虑使用其他类型参数进行扩展.我想,我可以继承,但我很好奇是否还有其他选择.

c# generics parameters types default

80
推荐指数
4
解决办法
3万
查看次数

将具有默认值的方法分配给没有这些参数的Func <>?

我希望能够做到以下几点:

Func<int,bool> tryMethodFunc = TryMethod;
Run Code Online (Sandbox Code Playgroud)

TryMethod的签名如下:

bool TryMethod(int value, int value2 = 0, double value3 = 100.0)
Run Code Online (Sandbox Code Playgroud)

我并不反对将方法分解为一种curry格式,但如果没有这种方法可以做到这一点,那将会更有效.

.net c# functional-programming func

13
推荐指数
1
解决办法
3091
查看次数

使用Action和Func委托的可选和命名参数

为什么不可能执行以下操作:

Func<int, int, int> sum = delegate(int x, int y = 20) { return x + y; };

Action<string, DateTime> print = 
    delegate(string message, DateTime datetime = DateTime.Now) 
    { 
        Console.WriteLine(message);
    };

sum(x: 20, y: 40);
print(datetime: DateTime.Now, message: "Hello");
Run Code Online (Sandbox Code Playgroud)

只有命名参数的情况:

Func<int, int, int> sum = delegate(int x, int y) { return x + y; };

Action<string, DateTime> print = 
    delegate(string message, DateTime datetime) 
    { 
        Console.WriteLine("{0} {1}", message, datetime);
    };

Console.WriteLine(sum(y: 20, x: 40));
print(datetime: DateTime.Now, message: "Hello");
Run Code Online (Sandbox Code Playgroud)

只有可选参数的情况:

Func<int, int, …
Run Code Online (Sandbox Code Playgroud)

c# delegates

7
推荐指数
1
解决办法
8203
查看次数

如何为 Action&lt;T1,T2&gt; 获取可选参数

我有一个目前看起来像这样的课程:

public Action<string> Callback { get; set; }

public void function(string, Action<string> callback =null)
{
   if (callback != null) this.Callback = callback;
   //do something
}
Run Code Online (Sandbox Code Playgroud)

现在我想要的是采用一个可选参数,如:

public Action<optional, string> Callback { get; set; }
Run Code Online (Sandbox Code Playgroud)

我试过:

public Action<int optional = 0, string> Callback { get; set; }
Run Code Online (Sandbox Code Playgroud)

这是行不通的。

有没有办法允许Action<...>采用一个可选参数?

.net c# generics delegates optional-parameters

2
推荐指数
1
解决办法
5823
查看次数