我有一个基类
public class A
{
public string s1;
public string s2;
}
Run Code Online (Sandbox Code Playgroud)
我也有一个派生类:
public class B : A
{
public string s3;
}
Run Code Online (Sandbox Code Playgroud)
假设我的程序创建了A类的实例.
A aClassInstance = new A();
Run Code Online (Sandbox Code Playgroud)
设置了一些参数:
aClassInstance.s1 = "string 1";
aClassInstance.s2 = "string 2";
Run Code Online (Sandbox Code Playgroud)
此时我想创建一个B类实例.但我希望B已经拥有了我的A类实例的值.
这不行:
public B bClassInstance = new B():
bClassInstance = (B)aClassInstance;
Run Code Online (Sandbox Code Playgroud)
没有这个:
在A类中制作克隆方法
public B cloneA() {
A a = new A();
a = (A)this.MemberwiseClone()
return(B)a;
}
Run Code Online (Sandbox Code Playgroud)
VS代码采用上述两种方法 - 但我得到了运行时错误
请帮忙
我需要不断发布一个新的可执行文件,并进行修改以发送给最终用户.设置项目属性设置为
RemovePreviousVersion = True
DetectNewerInstalledVersion = True
Run Code Online (Sandbox Code Playgroud)
当我发布新版本时,我会增加版本并更改产品代码.
(由于我使用的是Visual Studio 2010 - 当您增加版本时,它会自动更改产品代码,但我也尝试手动更改它).
构建完成后 - 以前的版本不会卸载.
设置如下:

编辑:经过一些研究后,我发现项目的fileVersion也需要增加.我在AssemblyInfo.cs中这样做了
[assembly: AssemblyVersion("0.0.0.2")]
[assembly: AssemblyFileVersion("0.0.0.2")]
Run Code Online (Sandbox Code Playgroud)
两个版本都是0.0.0.1.重建后 - 同样的问题.
有关如何使这项工作的任何想法?
我在C#中有一个远程sql连接,需要执行查询并将其结果保存到用户的本地硬盘.这个东西可以返回相当大量的数据,因此需要考虑一种有效的存储方式.我之前已经读过,先将整个结果放入记忆中,然后写出来并不是一个好主意,所以如果有人可以提供帮助,那就太好了!
我目前正在将sql结果数据存储到DataTable中,虽然我认为它可以更好地做一些事情while(myReader.Read(){...}
下面是得到结果的代码:
DataTable t = new DataTable();
string myQuery = QueryLoader.ReadQueryFromFileWithBdateEdate(@"Resources\qrs\qryssysblo.q", newdate, newdate);
using (SqlDataAdapter a = new SqlDataAdapter(myQuery, sqlconn.myConnection))
{
a.Fill(t);
}
var result = string.Empty;
for(int i = 0; i < t.Rows.Count; i++)
{
for (int j = 0; j < t.Columns.Count; j++)
{
result += t.Rows[i][j] + ",";
}
result += "\r\n";
}
Run Code Online (Sandbox Code Playgroud)
所以现在我有了这个巨大的结果字符串.我有数据表.必须有一个更好的方法吗?
谢谢.
我有一个在线程上运行的Windows窗体UI Thread1.我有另一个线程,Thread2通过需要更新Windows UI的外部事件获取大量数据.(它实际上更新了多个UI线程.)
我有第三个线程,Thread3我用作之间的缓冲线程Thread1,Thread2因此Thread2可以继续更新其他线程(通过相同的方法).
我的缓冲线程Thread3看起来像这样:
public class ThreadBuffer
{
public ThreadBuffer(frmUI form, CustomArgs e)
{
form.Invoke((MethodInvoker)delegate { form.UpdateUI(e); });
}
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是ThreadBuffer检查我的表单当前是否正在忙于执行以前的更新.如果是的话,我希望它等到它释放然后再调用它UpdateUI(e).
我在考虑:
一个)
//PseudoCode
while(form==busy)
{
// Do nothing;
}
form.Invoke((MethodInvoker)delegate { form.UpdateUI(e); });
Run Code Online (Sandbox Code Playgroud)
我该form==busy怎么检查?另外,我不确定这是一个好方法.
b)在form1中创建一个事件,通知ThreadBuffer它已准备好处理.
// psuedocode
List<CustomArgs> elist = new List<CustomArgs>();
public ThreadBuffer(frmUI form, CustomArgs e)
{
from.OnFreedUp += from_OnFreedUp();
elist.Add(e);
}
private form_OnFreedUp()
{
if …Run Code Online (Sandbox Code Playgroud) 我们有很多旧的遗留Perl脚本,它们连接到MS SQL db进程的一些记录和make文件.随着时间的推移,每日交易规模增加,这些脚本变得越来越昂贵.
此外,数据库随着越来越多的表而增长,修改旧的Perl脚本非常麻烦.正在考虑重做.NET下的一些主要脚本(在C#中)
在运行Windows Server的机器上使用一个与另一个相比,是否有速度优势?
这个想法再一次
执行查询
通过一些基本格式处理结果
将结果写入文件
所以我们正在迁移服务器.Arghh.一台机器上有很多Perl的东西,我们需要在另一台机器上设置.
有没有办法导出/导入已安装的所有软件包的列表,以便我可以在新服务器上安装它们而不是逐个查找?(使用Active Perl)
谢谢.
有什么区别:
if (myObject != null && myObject.someint == 0)
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
和
if (myObject != null)
{
if (myObject.someint == 0)
{
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
我一直认为它会评估第一个条件,如果为false,它会跳过第二个条件的评估.但是我在null-reference的运行时遇到错误.myObject是空的,它试图检查myObject.someint
该对象可以在外部进行修改,是否检查了对象存在的第一个条件,但是当它进入下一个条件时,有什么东西杀死了myObject中的引用?
如果是后者,任何避免的方法(在我看来,上述两种方式都做了if检查都是一样的).只有我可以想象的是try/catch
c# ×5
perl ×2
.net ×1
activestate ×1
file-writing ×1
if-statement ×1
inheritance ×1
performance ×1
polymorphism ×1
winforms ×1
writetofile ×1