我一遍又一遍地得到同样的问题,我想要引用的对象被复制,或者我想要复制的对象被引用.当我使用=运算符时会发生这种情况.
例如,如果我将对象发送到另一个表单,即:
SomeForm myForm = new SomeForm();
SomeObject myObject = new SomeObject();
myForm.formObject = myObject;
Run Code Online (Sandbox Code Playgroud)
...然后修改表单中的对象,原始对象不会被修改.就好像复制了对象而没有引用对象.然而,当我这样做时:
SomeObject myObject = new SomeObject();
SomeObject anotherObject = new SomeObject();
anotherObject = myObject;
Run Code Online (Sandbox Code Playgroud)
...然后修改anotherObject,也myObject进行修改.
最恶化的情况是当我尝试克隆我定义的一个对象时:
public class SomeObject
{
double value1, value2;
//default constructor here
public SomeObject(val1, val2)
{
value1 = val1;
value2 = val2;
}
public void Clone(SomeObject thingToCopy)
{
this.value1 = thingToCopy.value1;
this.value2 = thingToCopy.value2;
}
}
Run Code Online (Sandbox Code Playgroud)
当我这样做的时候......
SomeObject obj1 = new SomeObject(1, 2);
SomeObject obj2 = new …Run Code Online (Sandbox Code Playgroud) 我已经找到了关于这方面的文档,一无所获.我安装了MinGW,效果很好.我只是不知道如何使用调试器.
给出一些简单的代码,比如名为"mycode.cpp"的文件:
int main()
{
int temp = 0;
for (int i = 0; i < 5; ++i)
temp += i;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
...我该怎么调试呢 我在Windows中使用MinGW和GDB调试代码的命令是什么?我可以像在Visual Studio中那样通过命令行单步执行代码吗?如果是这样,我用什么命令来做到这一点?
有没有关于在那里使用GDB的教程?我找不到任何东西,但是如果有人能指引我去做一件很棒的话.我厌倦了编写大量的std::cout语句来调试复杂的代码.
在VS C/C++中你可以使用extern "C" __declspec(dllexport) -function declaration-.
如何在C#dll中完成此操作?C#代码是否与上面的代码相同?
编辑:更多信息
我正在尝试为Notepad ++创建一个插件,我想使用C#,但到目前为止我看到的常见方法是使用传统的C++代码和上面的调用来导出Notepad ++期望导入的一些函数和呼叫.有一个使用C#的示例应用程序,但这仍然需要一个加载器DLL,我从下面的评论/答案中假设是C#的唯一方法.
当涉及到web开发和javascript/jQuery编程时,我仍然非常"绿色",所以任何帮助都表示赞赏.这就是我想要做的.
我想做一个jQuery UI对话框所做的事情,它将半透明图像放在整个页面上,并禁用单击下面的任何控件.
我想知道如何在顶部放置某种微调器覆盖以显示该网站在后台运行.如果我可以使用一个很好的动画GIF文件,但我不太确定最好的方法.
下面是一个带有对话框的灰显效果示例: jQuery UI示例.我想知道如何在没有顶部对话框的情况下产生这种效果.我没有关于微调器行为的好例子.
所有建议,网站推荐和代码表示赞赏.
编辑:我不是指"旋转控制".我将尝试通过微调器找到我想到的一个例子.
编辑:我的意思是"旋转器"是一个加载的GIF,如本网站上的"指标大"GIF:http://ajaxload.info/
我想做的是以下几点:
using System.Data.SQLite;
using System.IO;
//My SQLite connection
SQLiteConnection myCon;
public void ReadAndOpenDB(string filename)
{
FileStream fstrm = new FileStream(filename, FileMode.Open);
byte[] buf = new byte[fstrm.Length];
fstrm.Read(buf, 0, (int)fstrm.Length);
MemoryStream mstrm = new MemoryStream(buf);
//Do some things with the memory stream
myCon = new SQLiteConnection(/*attach to my memory stream for reading*/);
myCon.Open();
//Do necessary DB operations
}
Run Code Online (Sandbox Code Playgroud)
我不打算写入内存数据库,但我需要能够在连接到程序之前在程序的内存中对文件做一些事情.
这是一个示例函数:
public void DrawSquare(int x, int y, Color boxColor = Color.Black)
{
//Code to draw the square goes here
}
Run Code Online (Sandbox Code Playgroud)
编译器不断给我错误: Default parameter value for 'boxColor'must be a compile-time constant
我试过了
Color.Black,
Color.FromKnownColor(KnownColor.Black), and
Color.FromArgb(0, 0, 0)
Run Code Online (Sandbox Code Playgroud)
如何使Color.Black成为默认颜色?另外,我不想使用字符串Black来指定它(我知道它可以工作).我想要的Color.Black价值.
我提前为这个问题道歉.我不喜欢"解释此代码"的问题,但我找不到任何关于我的具体示例的文档.
背景
我的问题是这个.我试图将一些MATLAB代码翻译成C#,但我同时还要学习MATLAB.我不与任何知道MATLAB代码的人合作,我无法访问MATLAB,所以我无法测试任何代码,我找不到任何关于以下问题的文档.所以...
问题(S)
在某处可以使用免费的在线/桌面MATLAB编译器/解释器来测试MATLAB代码吗?
...要么...
是否有人可以解释以下代码段:
someVar.member1=myValue1;
someVar.member2=myValue2;
if (myCondition)
for i=1:myTotal
someVar(i).member3=myValue3;
end;
end;
Run Code Online (Sandbox Code Playgroud)
这是否someVar成为一个数组?难道我失去了member1和member2或者它救什么我已不知何故?
我有一个VS 2010 C#.NET 4项目.问题是程序在调试期间没有破坏'NullReferenceException'错误.
输出窗口将显示以下内容:
A first chance exception of type 'System.NullReferenceException' occurred in myProgram.exe
...但是调试器将退出该函数并继续运行该程序的其余部分.
如何更改此行为以便调试器在这些异常中中断?
c# debugging break visual-studio-2010 nullreferenceexception
我有一个使用COM DLL的VB6应用程序.DLL是用C#编写的.在C#项目属性中,我选中了"Register for COM interop"选项.VB6应用程序在我的开发机器上运行良好.C#代码完全遵循以下格式:CodeProject C#COM示例
当部署到其他计算机时,Regsvr32.exe在我尝试注册DLL时出现以下错误:
The module "MyCOM.dll" was loaded but the entry-point DLLRegisterServer was not found.
Run Code Online (Sandbox Code Playgroud)
这是什么意思?没有教程/文档我读过关于COM DLL的任何关于"入口点DLLRegisterServer"的内容.
我们在不同的机器上使用RegAsm.exe时遇到了MAJOR问题,因此我们真的需要一个解决方案,我们可以运行regsvr32.exe,它将适用于我们部署到的任何机器(即XP,Vista,Windows 7,x86机器,x64)机器等)
我需要将哪些内容添加到我的C#代码中才能使其可以使用regsvr32.exe进行注册?
我有一个自定义设置文件,我使用一个序列化/反序列化XmlSerializer.我的对象定义中没有定义架构且没有序列化标签,只是直接对象序列化(尽管如果需要我会添加它们).
我的问题是我需要向对象添加数据成员.如果我这样做,我知道旧的设置文件不会反序列化.
有没有办法为添加的成员指定默认值,或者如果XML中缺少这些默认值,可以采用一些简单的方法来忽略它们?