在C#中将别名转换为指针(byte *)

5

能否为不安全指针类型创建别名,即我想使用以下内容:using bytePtr = System.Byte*

未来版本中,.net开发人员是否会引入指向和数组类型的别名这一功能?

3个回答

4

不,它不是。

如果它确实是,那么语法应该是:

using BytePtr = System.Byte*;

但是需要说明的是,不可以使用using别名指向指针。

另外,在我看来,byte*BytePtr更加简洁明了。


我需要这个别名不仅仅是为了代码的简洁和清晰,而且还要用于多用途的代码。在我的情况下,既可以用于 Script# 中的 using byteAr = PixelArray,也可以用于普通的 .NET 中的 using byteAr = byte*using byteAr = byte[] - Ivan Kochurkin
我也理解你。这个限制很遗憾,因为 #if #else #endif 块会使代码变得混乱。 - Ivan Kochurkin

2
不,使用别名只能用于命名空间和类型名称。您无法将其用于“派生”类型。
为了比较,以下内容也无法编译:
 using NullDate = System.DateTime?;

错误(在“?”上)只是期望有一个分号';'

2

不可能。如果您坚持,可以定义一个包装类或结构体,这样可以得到非常接近的东西。然而,我不建议这样做,因为它似乎没有增加太多价值。

类似于以下内容:

unsafe struct BytePtr
{
    public BytePtr(byte *value)
    {
        _value = value;
    }

    private byte* _value;

    public byte* Value
    {
        get { return _value; }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接