我继承了一个 C++ DLL 及其相关头文件,其函数声明如下
int func1(int i);
int func2(char* s);
Run Code Online (Sandbox Code Playgroud)
我还继承了一个参考VC++参考类,它包装了上面的DLL以便在C#环境中使用
public ref class MyWrapperClass
{
int func1_w(int i)
{
return func1(i);
}
int func2_w(char* s)
{
return func2(s);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的 C# 应用程序中,我可以使用 func1_w(int i),但我不明白如何将字符串传递给 func2_w(sbyte* s):我收到一条关于无法获取指向 sbyte 的指针的错误。我将 C# 项目设置为不安全,并将该函数声明为不安全。
如何将 sbyte* 参数传递给函数 func2_w?
我有一个函数将double值转换为sbyte并返回其十六进制表示:
string convertToSByte(double num, double factor)
{
double _Value = num * factor;
if (_Value > 127)
{
_Value = 127;
}
else if (_Value < -127)
{
_Value = -127;
}
return Convert.ToSByte(_Value).ToString("X2");
}
Run Code Online (Sandbox Code Playgroud)
计算出的_Value值应该在[-127 ; 127]if 的范围内,那么这些值必须设置为默认值.
问题:如何简化这两个条件和默认值的设置?
编辑:
我尝试使用条件运算符,?但实际上它并不简单(甚至更难读),也没有更少的代码
PS.这个问题更多的是教育目的.找到一种不同的方法来检查变量的范围