我有这个C#2.0源代码的摘录:
object valueFromDatabase;
decimal result;
valueFromDatabase = DBNull.Value;
result = (decimal)(valueFromDatabase != DBNull.Value ? valueFromDatabase : 0);
result = (valueFromDatabase != DBNull.Value ? (decimal)valueFromDatabase : (decimal)0);
Run Code Online (Sandbox Code Playgroud)
第一个结果评估抛出,InvalidCastException而第二个结果评估不抛出.这两者有什么区别?
我在Visual C++ DLL中有此功能
char * __stdcall GetMessage(int id) {
char buffer[250];
.
.
.
strcpy(buffer, entry); // entry is a char * that has allocated 250 chars
return (char *)buffer;
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用以下代码从C#导入此函数
[DllImport("mydll.dll", CharSet=CharSet.Ansi)]
public static extern string GetMessage(int id);
Run Code Online (Sandbox Code Playgroud)
我试图在MessageBox中呈现它,它总是在字符串的末尾有奇怪的符号.有什么建议如何克服这个问题?