c# - 委托(delegate)操作不接受 3 个参数

标签 c#

Action showTasks = (String name, String gender, String id) =>
        {
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("Name: " + name);
            stringBuilder.Append(System.Environment.NewLine);
            stringBuilder.Append("Gender: " + gender);
            stringBuilder.Append(System.Environment.NewLine);
            stringBuilder.Append("Id: " + id);

            var builderGoogle = new AlertDialog.Builder (this);
            builderGoogle.SetTitle ("Logged in");
            builderGoogle.SetMessage (stringBuilder.ToString());
            builderGoogle.SetPositiveButton ("Ok", (o, e) => { });
            builderGoogle.Create().Show();
        };

如何将 3 个输入参数传递给委托(delegate) Action?

最佳答案

使用 Action<string, string, string> 而不是 Action .

记住 - 有一组 Action代表们。所有这些委托(delegate)都封装了不返回值的方法(即具有 void 返回类型)。但是 void 方法有不同数量的输入参数。因此有 17 个不同的 Action委托(delegate),它封装了具有不同数量输入参数(从 0 到 16)的方法;

Action
Action<T1>
Action<T1,T2>
Action<T1,T2,T3>
...
Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>

所以,你应该选择合适的代表

关于c# - 委托(delegate)操作不接受 3 个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23605507/

相关文章:

c# - 为什么 graphql-dotnet 会为此模式返回 "Expected non-null value"错误?

c# - 如何在 C# (Unity) 中引用 "SpaceBar" key ?

c# - 将包含 HTML 标记的字符串移动到资源文件

c# - iOS websocket 连接即时断开

c# - 安装程序顶部或应用程序关闭后是否显示消息框?

c# - BindingError 会降低应用程序性能吗?

c# - 在调用 ASMX Web 服务时保持 session

c# - 如何更改 Xamarin 导航标题中所有工具栏项目的字体

c# - 如何初始化二维数组?

c# - 如何从 DLL 中读取显示名称?