opcional - optional parameter c# int
Error del compilador "Los especificadores de parámetros predeterminados no están permitidos" (2)
A continuación está mi código.
public class PItem
{
public String content;
public int count;
public int fee;
public int amount;
public string description;
// Default values
public PItem(String _content = "", int _count = 0, int _fee = 0, string _description = "", int _amount = 0)
{
content = _content;
count = _count < 0 ? 0 : _count;
fee = _fee;
description = _description;
amount = _amount < 0 ? 0 : _amount;
}
}
Esto está dentro de una clase. Cuando intento ejecutar un programa, aparece este error:
Los especificadores de parámetros predeterminados no están permitidos
¿Cómo puedo resolver este error?
El problema es que no puede tener parámetros opcionales en la versión C # inferior a 4.
Puede encontrar más información sobre esto aquí .
Puedes resolverlo así:
public class PItem
{
public String content;
public int count;
public int fee;
public int amount;
public String description;
// default values
public PItem(): this("", 0, 0, "", 0) {}
public PItem(String _content): this (_content, 0, 0, "", 0) {}
public PItem(String _content, int _count): this(_content, _count, 0, "", 0) {}
public PItem(String _content, int _count, int _fee): this(_content, _count, _fee, "", 0) {}
public PItem(String _content, int _count, int _fee, string _description): this(_content, _count, _fee, _description, 0) {}
public PItem(String _content, int _count, int _fee, string _description, int _amount)
{
content = _content;
count = _count < 0 ? 0 : _count;
fee = _fee;
description = _description;
amount = _amount < 0 ? 0 : _amount;
}
}
Si su proyecto parece estar configurado como .NET 4.0, cámbielo a, por ejemplo, 3.5 y luego vuelva a cambiar a 4.0. Obtuve este error cuando incluí un proyecto de biblioteca de clase de mi antigua solución de solución a una nueva cuando quería tener el proyecto en mi nuevo software. Ambas soluciones fueron .NET 4 pero obtuve el error "los especificadores de parámetros predeterminados no están permitidos". Acabo de hacer lo que expliqué.