Con mi código me sale 3 mensajes todos diciendo inicialización de objetos se puede simplificar
y en mi creciente sed de conocimiento (y mi TOC) Me gustaría "fix" mi código para que estos mensajes no aparecen. Sé que puedo configurarlo para que no aparezcan, pero seguiré pensando que están ahí en segundo plano, lo cual no me parece bien. Si alguien puede indicar cómo "simplificar la inicialización" que sería genial para que pueda mejorar mis habilidades. Si se requiere más código que me haga saber y puedo añadir en.
1st:
TreeNode node = new TreeNode(drive.Substring(0, 1), driveImage, driveImage);//issue on this line
node.Tag = drive;
2nd:
DirectoryInfo di = new DirectoryInfo(dir);
TreeNode node = new TreeNode(di.Name, 0, 1); //this line
Sospecho que con los treenodes es porque les he dado el mismo nombre, pero he intentado cambiar el nombre, pero no hizo ninguna diferencia.
3rd:
OleDbCommand select = new OleDbCommand();//this line
select.Connection = cnDTC;
select.CommandText = string.Format("SELECT MAX(VERSION_NO) AS MAX_VERSION FROM ({0})", strSQL2);
Antes:
TreeNode node = new TreeNode(drive.Substring(0, 1), driveImage, driveImage);
node.Tag = drive;
Después:
var node = new TreeNode(drive.Substring(0, 1), driveImage, driveImage) {
Tag = drive
};
Antes:
DirectoryInfo di = new DirectoryInfo(dir);
TreeNode node = new TreeNode(di.Name, 0, 1); //this line
Después:
var node = new TreeNode((new DirectoryInfo(dir)).Name, 0, 1);
Antes:
OleDbCommand select = new OleDbCommand();//this line
select.Connection = cnDTC;
select.CommandText = string.Format("SELECT MAX(VERSION_NO) AS MAX_VERSION FROM ({0})",
strSQL2);
**Después.
var select = new OleDbCommand(
String.Format("SELECT MAX(VERSION_NO) AS MAX_VERSION FROM ({0})", strSQL2),
cnDTC);
3ª (con interpolación de cadenas):
var select = new OleDbCommand($"SELECT MAX(VERSION_NO) AS MAX_VERSION FROM ({strSQL2})",
cnDTC);
BTW: siempre que aparezca este tipo de mensaje, trate de poner el cursor en esa línea y pulse Ctrl+. (o haga clic en la bombilla que aparece) - que se abre "quick-Fix / quick-refactor";
Leer más sobre var (realmente no es malo 😉) y algo más de documentación sobre Inicializadores de objetos y colecciones
Tuve un problema similar con este código:
Customer oCust = new Customer();
oCust.Address = txtAddress.Text;
oCust.City = txtCity.Text;
oCust.State = txtState.Text;
Y lo solucioné con este código:
Customer oCust = new Customer()
{
Address = txtAddress.Text,
City = txtCity.Text,
State = txtState.Text
};
Así que...para desactivar el mensaje de advertencia (IDE0017)(en VS 2017/2019):
Haz clic en la pestaña Herramientas. Luego baje a Opciones...
Luego | TextEditor | C# | CodeStyle | General |
En Preferencias de Expressoin cambie Preferir Inicializador de Objetos a No.
Alternativamente puede dejar la Preferencia como Sí y cambiar la Gravedad de Advertencia a Sugerencia. Ahora sólo se mostrará como un mensaje en la Lista de Errores.
El compilador quiere que utilices la siguiente sintaxis:
var select = new OleDbCommand
{
Connection = cnDTC,
CommandText = string.Format("SELECT MAX(VERSION_NO) AS MAX_VERSION FROM ({0})", strSQL2)
};
Esto es para su 3er caso.