C# IDE0090 '新增'表达式可以简化Visual Studio 2022

xdnvmnnf  于 2022-11-17  发布在  C#
关注(0)|答案(2)|浏览(186)

我正在改编this snmp program from a user here on stackoverflow。我在Visual Studio 2022中做了一个新项目,添加了所有依赖项。
当我编译时,我得到6个IDE0090消息,但我看不到问题出在哪里。我已经将LangVersion设置为10。
https://i.stack.imgur.com/BF5P1.jpg
有人能看出问题出在哪里吗?

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using SnmpSharpNet;

namespace Exemple2
{
    class Program
    {
        static void Main(string[] args)
        {
            /* Get an SNMP Object
             */
            SimpleSnmp snmpVerb = new SimpleSnmp("192.168.1.121", 161, "public");
            if (!snmpVerb.Valid)
            {
                Console.WriteLine("Seems that IP or comunauty is not cool");
                return;
            }

            /* Sample of simple Get usage on ifSpeed on interface 10
             * TODO : for sure you have to detect the right interface
             */
            Oid oidifSpeed = new Oid(".1.3.6.1.2.1.2.2.1.5.10");

            /* Getting ifSpeed
             */
            Dictionary<Oid, AsnType> snmpDataS = snmpVerb.Get(SnmpVersion.Ver2, new string[] { oidifSpeed.ToString() });
            if (snmpDataS != null)
                Console.WriteLine("Interface speed \"{0}\" : {1}", oidifSpeed.ToString(), snmpDataS[oidifSpeed].ToString());
            else
                Console.WriteLine("Not Glop!");

            /* Sample of simple Get usage on ifInOctets on interface 10
             * TODO : for sure you have to detect the right interface
             */
            Oid oidifInOctets = new Oid(".1.3.6.1.2.1.2.2.1.10.10");
            Dictionary<Oid, AsnType> snmpData1;

            /* Getting it for the first time
             */
            snmpData1 = snmpVerb.Get(SnmpVersion.Ver2, new string[] { oidifInOctets.ToString() });
            if (snmpData1 != null)
                Console.WriteLine("Number of In octets \"{0}\" : {1}", oidifInOctets.ToString(), snmpData1[oidifInOctets].ToString());
            else
                Console.WriteLine("Not Glop!");

            int missed = 0;
            while (true)
            {
                if (missed == 0)
                {
                    /* When you detect a non refesh data, keep the last one
                     */
                    snmpData1 = snmpVerb.Get(SnmpVersion.Ver2, new string[] { oidifInOctets.ToString() });
                    if (snmpData1 != null)
                        Console.WriteLine("Number of In octets \"{0}\" : {1}", oidifInOctets.ToString(), snmpData1[oidifInOctets].ToString());
                    else
                        Console.WriteLine("Not Glop!");
                }

                /* Some Wait (less aproximative)
                 */
                int duration = 5;
                System.Threading.Thread.Sleep(duration * 1000); // duration seconds

                /* Getting it for the Second time
                 */
                Dictionary<Oid, AsnType> snmpData2 = snmpVerb.Get(SnmpVersion.Ver2, new string[] { oidifInOctets.ToString() });
                if (snmpData2 != null)
                    Console.WriteLine("Number of In octets \"{0}\" : {1}", oidifInOctets.ToString(), snmpData2[oidifInOctets].ToString());
                else
                    Console.WriteLine("Not Glop!");

                Counter32 I1 = new Counter32();
                I1.Set(snmpData1[oidifInOctets]);
                Counter32 I2 = new Counter32();
                I2.Set(snmpData2[oidifInOctets]);
                Counter32 speed = new Counter32();
                speed.Set(snmpDataS[oidifSpeed]);

                if (I2.Value == I1.Value)
                {
                    missed += 1;
                    continue;
                }
                decimal bandWithUsage = (((decimal)(I2.Value - I1.Value) * 8) * 100) / (speed * duration * (1 + missed));
                Console.WriteLine("BandWith usage : {0}%", bandWithUsage);
                missed = 0;
            }
        }
    }
}
xn1cxnb4

xn1cxnb41#

编译器建议,因为您显式指定了字段类型,而不是使用var snmpVerb = ...,所以不需要构造函数名称,并使用以下缩短的语法:

SimpleSnmp  snmpVerb = new ("192.168.1.121", 161, "public");

如果您右键单击对SimnpleSnmp构造函数的调用并选择Quick Actions and Refactorings,它将为您提供一些建议,这是其中之一。

b4wnujal

b4wnujal2#

IDE0090 docs所示,您可以使用C# 9 target-typed new expressions并简化示例创建。例如:

SimpleSnmp snmpVerb = new SimpleSnmp("192.168.1.121", 161, "public");
Oid oidifSpeed = new Oid(".1.3.6.1.2.1.2.2.1.5.10");

收件人:

SimpleSnmp snmpVerb = new("192.168.1.121", 161, "public");
Oid oidifSpeed = new(".1.3.6.1.2.1.2.2.1.5.10");

或者只使用var

var snmpVerb = new SimpleSnmp("192.168.1.121", 161, "public");
var oidifSpeed = new Oid(".1.3.6.1.2.1.2.2.1.5.10");

请注意,这些不是错误,而是信息性消息,不会影响程序的正确性/编译。

相关问题