我一直在研究Winforms C#应用程序,我正在使用Twilio来实现SMS功能。 Twilio有一个名为' ListSmsMessages'看起来如下:
public virtual SmsMessageResult ListSmsMessages(
string to, string from, DateTime? dateSent, int? pageNumber, int? count);
文档说每个都是可选的。我可以通过填写任何字段client.ListSmsMessages();
或填写所有字段client.ListSMSMessages("to","from", date, 1,10);
来成功调用该函数,但我无法选择我想要的参数。例如仅client.ListSMSMessages("to",date);
。
我做了一些研究,发现C#4.0应该可以做client.ListSMSMessages(to:"to",datesent: date);
之类的事情但是这不起作用。
我想知道是否因为我是using Twilio;
而不是编写自己的类,如果这会影响我应该如何调用可选参数?或者他们的文档可能不正确,说明它们是可选的。
答案 0 :(得分:8)
那些是可以为空的参数,而不是可选的。如果您想跳过其中一些内容,请将null
作为值传递。
client.ListSMSMessages("to", null, date, null, null);
更多详情:
如果你想要可选的args,那么就在lib中的那个上创建你自己的函数(建立在Robert的答案:) :):
public SmsMessageResult MyListSmsMessages(
string to = null, string from = null, DateTime? dateSent = null, int? pageNumber = null, int? count = null)
{
return client.ListSMSMessages(to, from, date, pageNumber, count);
}
答案 1 :(得分:4)
基于Marcel的回答,如果Twilio确实构建了C#调用可选参数的函数,它会是什么样子:
public virtual SmsMessageResult ListSmsMessages(
string to = null, string from = null, DateTime? dateSent = null,
int? pageNumber = null, int? count = null);
注意每个param如何被赋予一个默认值,当你选择不传入任何内容时,它会被使用。
答案 2 :(得分:4)
Twilio只有两个重载:
SmsMessageResult ListSmsMessages()
SmsMessageResult ListSmsMessages
(string to, string from, DateTime? dateSent, int? pageNumber, int? count)
您可以将null
传递给您不想要的参数,或者,如果您想要最大可读性,请创建自己的扩展方法:
SmsMessageResult ListSmsMessages
(this TwilioRestClient @this,
string to = null, string from = null, DateTime? dateSent = null,
int? pageNumber = null, int? count = null)
{
@this.ListSmsMessages(to, from, dateSent, pageNumber, count);
}
使用此扩展方法,您可以按照自己的方式拨打Twilio:
client.ListSMSMessages(to: "to", dateSent: date);
顺便说一下,您还可以为Twilio创建拉取请求。它在GitHub上,他们似乎接受了它们。 https://github.com/twilio/twilio-csharp