在C#中,我们可以提供参数的默认值:
void Foo(int i =0) {}
Run Code Online (Sandbox Code Playgroud)
但是,当方法签名是:
void FooWithDelegateParam(Func<string,string> predicate)
{}
Run Code Online (Sandbox Code Playgroud)
我们如何传递默认参数:
void FooWithDelegateParam(Func<string,string> predicate = (string,string x)=> {return y;})
{}
Run Code Online (Sandbox Code Playgroud)
但这不会编译.那么,这样做的正确语法是什么?
注意:我正在尝试提供一种通过委托为输出字符串映射器指定输入字符串的方法,如果没有提供,我只想返回输入字符串.因此,对于实现这一目标的任何替代方法的建议也受到高度赞赏.谢谢.
我有一个方法,我想使用Rectangle默认值为(1,1,1,1)的可选参数.
void Method(int i, int j = 1, Rectangle rect = new Rectangle(1,1,1,1)) {} //error
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?(我正在使用XNA,所以它是一个Microsoft.Xna.Framework.Rectangle.)