我即将开始一个新的InstallShield项目.项目类型有三种选择:
每个的优点和缺点是什么?我应该选择哪一个?
这篇MSDN文章涉及数据类型.
它说:
对于Java中的每个原始数据类型,核心类库提供了一个包装类,将其表示为Java对象.例如,Int32类包装int数据类型,Double类包装double数据类型.
另一方面,C#中的所有原始数据类型都是System命名空间中的对象.对于每种数据类型,都提供了短名称或别名.例如,int是System.Int32的短名称,double是System.Double的缩写形式.
我跑到Mono代码来读取System.Int32结构的实现.
我发现了几行强迫我提出这个问题:
public const int MaxValue = 0x7fffffff;
public const int MinValue = -2147483648;
// This field is looked up by name in the runtime
internal int m_value;
Run Code Online (Sandbox Code Playgroud)
我假设MS将以相同的方式实现结构.这与包装器有什么不同吗?文件试图传达的究竟是什么?
如果MSDN被认为是System.Int32结构将无限递归,至少对我来说非常困惑.
我正在阅读Don Clugston关于Codeproject 的文章.这是一篇很棒的文章,很有名.在下面的代码片段中,我发现了一个非常难以理解的特定概念:
class A {
public:
virtual int Afunc() { return 2; };
};
class B {
public:
int Bfunc() { return 3; };
};
// C is a single inheritance class, derives only from A
class C: public A {
public:
int Cfunc() { return 4; };
};
// D uses multiple inheritance
class D: public A, public B {
public:
int Dfunc() { return 5; };
};
Run Code Online (Sandbox Code Playgroud)
该片段后跟以下段落:
假设我们为类C创建一个成员函数指针.在这个例子中,Afunc和Cfunc都是C的成员函数,所以允许我们的成员函数指针指向Afunc或Cfunc.但是Afunc需要一个指向C :: A(我称之为Athis)的指针,而Cfunc需要一个指向C的指针(我称之为Cthis).编译器编写者通过一个技巧处理这种情况:他们确保A物理存储在C的开头.这意味着Athis == Cthis.我们只有一个值得担心,而且全世界都很好. …
我试图了解继承如何在C#中工作.我写了以下代码:
class Program
{
static void Main(string[] args)
{
Animal animal = new Dog();
animal.OverRideMe();
//animal.NewMethod();
Dog dog = (Dog)animal;
dog.OverRideMe();
dog.NewMethod();
Console.Read();
}
}
public abstract class Animal
{
public Animal()
{
Console.WriteLine("Base Constructor");
}
public virtual void OverRideMe()
{
Console.WriteLine("In Base Class's OverRideMe");
Console.Read();
}
}
public class Dog : Animal
{
public Dog()
{
Console.WriteLine("Derived Constructor");
}
public override void OverRideMe()
{
Console.WriteLine("In Derived Class's OverRideMe");
Console.Read();
}
public void NewMethod()
{
Console.WriteLine("In Derived Class's NewMethod");
Console.Read(); …Run Code Online (Sandbox Code Playgroud) 我有一个数据库"D:\ MDF CONNECTION SAMPLE\BIN\DEBUG\HARMDATABASE.MDF".我试图使用以下代码分离或重命名它:
SqlConnection conn = new SqlConnection("Data Source=.\\MSSQLSERVER2008;database=Master;Integrated Security=True;");
SqlCommand cmd = new SqlCommand("", conn);
cmd.CommandText = @"sys.sp_detach_db D:\MDF CONNECTION SAMPLE\BIN\DEBUG\HARMDATABASE.MDF";
conn.Open();
cmd.ExecuteNonQuery();
cmd.Dispose();
conn.Dispose();
Run Code Online (Sandbox Code Playgroud)
但是得到一个错误:
'\'附近的语法不正确.
一周前我开始使用C++进行冒险.我已经阅读了很多关于C++的内容.我正在试验以下内容:
char * String1 = "abcdefgh";
Run Code Online (Sandbox Code Playgroud)
然后,我尝试以下列方式修改其值:
String1[2] = 'f';
Run Code Online (Sandbox Code Playgroud)
这导致了UNHANDLED EXCEPTION.但以下结果是正确执行:
char String2[9]="abcdefgh";
String2[7]='s';
Run Code Online (Sandbox Code Playgroud)
我尝试使用DUMPBIN提取有关使用上述代码生成的二进制文件的信息.DUMPBIN是一个Visual Studio工具.我使用/ ALL选项提取二进制文件中包含的每个信息.
我可以在RAWDATA部分看到两个"abcdefgh"实例.我理解为什么.
我的问题如下:
1)虽然String1和String2都是指向同一字符序列的两个不同实例的指针,但为什么String1操作不合法呢?
2)我知道编译器生成一个SYMBOL TABLE来映射变量名及其值.有没有可以在Windows操作系统中可视化SYMBOL TABLE的工具?
3)如果我有一个整数数组而不是字符序列,可以在RAWDATA中找到吗?
我还可以在RAWDATA中看到以下内容:
Unknown Runtime Check Error.........
Stack memory around _alloca was corrupted.......
....A local variable was used before it was initialized.........
....Stack memory was corrupted..
........A cast to a smaller data type has caused a loss of data.
If this was intentional, you should mask the source of the cast with the appropriate bitmask. …Run Code Online (Sandbox Code Playgroud)