小编jad*_*son的帖子

.NET类型转换问题:简单但困难

好,

问题有点简单.

我有一个对象定义为:

public class FullListObject : System.Collections.ArrayList, IPagedCollection
Run Code Online (Sandbox Code Playgroud)

当我尝试:

IPagedCollection pagedCollection = (IPagedCollection)value;
Run Code Online (Sandbox Code Playgroud)

它不起作用... value是一个FullListObject ...这是我的新代码试图解决"is"运算符的问题.当系统测试时,(value is IPagedCollection)它永远不会对FullListObject成真.

如何使用接口类型将对象转换为另一个对象?

编辑:

仅供记录:bugger代码

if (value is IPagedCollection)
{
    IPagedCollection pagedCollection = value as IPagedCollection;
Run Code Online (Sandbox Code Playgroud)

if永远不会成真,并且迫使转换也不起作用.所以问题是类的双重定义.现在我在"Commom"项目中为整个系统使用的类定义了FullObjectList.问题消失了!

.net types casting type-conversion

2
推荐指数
1
解决办法
306
查看次数

将子网掩码“ /”表示法转换为Cisco 0.0.0.0标准

我已经搜索了SO以寻求帮助,但找不到我的问题的答案。

情况:我需要将“ / NN”子网掩码表示法(认为IPTABLES)转换为0.0.0.0的cisco表示法。

NN是子掩码中从最低八位字节到较高八位字节的数字“ 1”。每个八位位组是8位整数。

可能的解决方案:

制作一个由32个“ 0”组成的数组,并用“ 1”填充最后一个NN数字,然后分组4个八位字节并转换为int ... / 23掩码应类似于0.0.1.255。

我的问题是如何在.NET中执行此操作...我从未使用过二进制操作和转换。

你们能帮我解决这个问题吗?

更新-斯蒂芬回答正确!

这是移植到.NET的代码

        if (p.LastIndexOf("/") < 0 ) return p;
        int mask= Convert.ToInt32("0"+p.Substring(p.LastIndexOf("/")+1,2));

        int zeroBits = 32 - mask; // the number of zero bits
        uint result = uint.MaxValue; // all ones

        // Shift "cidr" and subtract one to create "cidr" one bits;
        //  then move them left the number of zero bits.
        result &= (uint)((((ulong)0x1 << mascara) - 1) << zeroBits);
        result = ~result;
        // …
Run Code Online (Sandbox Code Playgroud)

.net cisco iptables mask subnet

1
推荐指数
1
解决办法
2404
查看次数

标签 统计

.net ×2

casting ×1

cisco ×1

iptables ×1

mask ×1

subnet ×1

type-conversion ×1

types ×1