1

好的,我的老板使用 VB 制作了这个函数,当我将它转换为 C# 时,它似乎并不想正常工作。我收到“无法将类型 'int' 转换为 'System.Net.NetworkInformation.IPStatus' 错误。我似乎无法纠正它。

static void SetConnectionString(string IpOrHostname)
    {
        try
        {
            System.Net.NetworkInformation.Ping MyPing = new System.Net.NetworkInformation.Ping();
            System.Net.NetworkInformation.PingReply Myreply = MyPing.Send(IpOrHostname);
            switch (Myreply.Status)
            {
                case 11010:
                    SetConnectionString("10.40.2.x");
                    break;
                //SetText("Connection timeout.")
                //SetVisible(True)
                case 11003:
                    ConnectionName = "ATRTS09AltAddress";
                    strConn = "server=10.40.2.x;User Id=blab;password=xxxx;database=xxxx";
                    strConn_del = "server=10.40.2.x;User Id=blah;password=xxx;database=xx";
                    UserConn = "server=10.40.2.x;User Id=glab;password=xxx;database=xxx";

                    break;
                case 0:
                    ConnectionName = IpOrHostname;
                    strConn = "server=" + IpOrHostname + ";User Id=blab;password=xxx;database=xx";
                    strConn_del = "server=" + IpOrHostname + ";User Id=blah;password=xxx;database=xx";
                    UserConn = "server=" + IpOrHostname + ";User Id=glab;password=xx;database=xxx";
                    break;
                default:
                    ConnectionName = "ATRTS09";
                    strConn = "server=atrts09;User Id=foox;password=xx;database=xxx";
                    strConn_del = "server=atrts09;User Id=gaaa;password=xxx;database=xx";
                    UserConn = "server=atrts09;User Id=asdfef;password=xxx;database=xxx";
                    break;
            }
        }
        catch (Exception ex)
        {
        }

    }
4

2 回答 2

1

我相信您缺少演员表;

 switch ((int)Myreply.Status)

抛出错误是因为Status它是一个 Enum 类型IPStatus,也许 VB 在 C# 需要显式转换的地方进行了隐式转换。

另一种选择是更改案例以使用IPStatuslikecase IPStatus.Success:而不是case 0:或任何 int 映射到成功的值。

于 2013-09-23T16:33:05.717 回答
0

Myreply.Status不是整数;它是IPStatusF12打开IPStatus并使用枚举值而不是硬编码的整数(例如,IPStatus.TimedOut而不是11010)。

于 2013-09-23T16:39:34.267 回答