急!急!急! C++ 结构体带构造函数的在C#中改如何定义

急!急!急! C++ 结构体带构造函数的在C#中改如何定义

问题描述:

struct THFI_Param
{
int nMinFaceSize;
int nRollAngle;
bool bOnlyDetect;
DWORD dwReserved;
THFI_Param()
{
nMinFaceSize=50;
nRollAngle=30;
bOnlyDetect=false;
dwReserved=NULL;
}
};

public class THFI_Param {
public int nMinFaceSize { get; set; }
public int nRollAngle { get; set; }
public bool bOnlyDetect { get; set; }
public uint? dwReserved { get; set; }
public THFI_Param() {
        this.nMinFaceSize = 50;
            this.nRollAngle = 30;
            this.bOnlyDetect = false;
            this.dwReserved = null;
    }
}

struct 改 class
属性前加 public

直接改成你的C#类不就完了?

 class THFI_Param
{
    int nMinFaceSize;
    int nRollAngle;
    bool bOnlyDetect;
    DWORD dwReserved;
    public THFI_Param()
    {
        nMinFaceSize = 50;
        nRollAngle = 30;
        bOnlyDetect = false;
        dwReserved = NULL;
    }
};

把struct理解为类,在C#中定义定义就可以

其实在c++本身,你也可以吧struct当做类理解,一般struct是用于纯数据(不会带其他的一些操作函数)
c#语法上和c++比较类似

[StructLayout(LayoutKind.Sequential)]
public struct ControllerState
{
// Common
public int handle;
public int timestamp;
public int frameCount;
public int state_mask;
// Gamepad
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public float[] axes;
public int buttons;
// Motion
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public float[] position;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public float[] rotation;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public float[] accelerometer;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public float[] gyroscope;
}

            对照下以上的