Alex Rivera | Logout

Default parameter specifiers are not permitted

Asked 2011-10-19T13:57:29.060
9

I have the following code that gives the error

Default parameter specifiers are not permitted

How can this be fixed?

bool listSubscribe(string apikey,
                   string id, 
                   string email_address,
                   string [] merge_vars,
                   string email_type="html",
                   bool double_optin=false,
                   bool replace_interests=true,
                   bool send_welcome=false);

bool listUnsubscribe(string apikey, 
                     string id, 
                     string email_address, 
                     bool delete_menber=false,
                     bool send_goodbye=true,
                     bool send_notify=true);
Edit
Report

4 Answers

20

As per your error message, you can't do that in v3.5.

The work around is multiple constructors:

bool listUnsubscribe(string apikey, 
                     string id, 
                     string email_address) {
  return listUnsubscribe(apikey, id, email_address, false, true, true);
}

bool listUnsubscribe(string apikey, 
                     string id, 
                     string email_address, 
                     bool delete_menber,
                     bool send_goodbye,
                     bool send_notify) {
  return whatever;
}
answered 2011-10-19T15:37:29.290
9

I just now encountered this error and my project is also targeting 4.0 and not 3.5 or below.

I toggled it to 3.5 and then back to 4.0 and then the error went away. Hopefully these steps will work for you, or someone else.

answered 2012-01-28T04:13:49.983
7

The application/class library is not set to target .NET 4 Framework. Adjust in the project's settings page.

enter image description here

answered 2011-10-19T14:10:30.607
5

Optional parameters are a feature of C# 4, not present in earlier versions. Since you're using .NET 3.5, you can't use optional parameters.

Either switch to .NET 4.0, or use overloaded methods instead.

answered 2011-10-19T15:43:07.000

Your Answer