我有一个可以包含1-10条记录的循环....
在我循环的那个循环中:
ThreadStart processTaskThread = delegate { ProcessTasks(myParam ); };
new Thread(processTaskThread).Start();
Run Code Online (Sandbox Code Playgroud)
我的问题是:这会工作,还是我需要编写代码,以便使用唯一的变量名声明线程?
我正在尝试编写一个输入 - 十六进制,八进制和小数 - 的程序,将它们存储在整数变量中,并将它们与它们转换为十进制形式一起输出.例如:
用户输入:0x43,0123,65
方案产出:
0x43 hexadecimal converts to 67 decimal
0123 octal converts to 83 decimal
65 decimal converts to 65 decimal
Run Code Online (Sandbox Code Playgroud)
显然我需要一种解释数字的方法,但我不知道如何去做.我已经尝试了各种方法,例如将它们读入函数并将它们转换为字符串,反之亦然(请参阅此处查看代码示例),但解释数字始终需要转换为某种格式来破坏原始输入.
我唯一能想到的是重载一个>>运算符,它一次读取一个字符,如果它在输入的开头看到0x或0,那么它在将整个输入读入int之前将其存储到一个字符串中.然后程序将以某种方式在输出期间确定正确的操纵器.
不确定是否有更简单的方法,任何帮助表示赞赏.
编辑:这已经解决,但我决定发布代码,如果有人有兴趣.
#include "std_lib_facilities.h"
void number_sys(string num, string& s)
{
if(num[0] == '0' && (num[1] != 'x' && num[1] != 'X')) s = "octal";
else if(num[0] == '0' && (num[1] == 'x' || num[1] == 'X')) s = "hexadecimal";
else s = "decimal";
}
int main()
{
cout << "Input numbers …Run Code Online (Sandbox Code Playgroud) 我正在使用STL std :: multiset <>作为指针的排序列表.排序顺序由指向的项的属性确定,这与此简化示例的行相似:
struct A
{
int x;
};
bool CompareAPointers(const A* lhs, const A* rhs)
{ return lhs->x < rhs->x; }
std::multiset<A*, CompareAPointers> sorted_set;
Run Code Online (Sandbox Code Playgroud)
复杂的是,用于对集合进行排序的属性值可以更改(您可以在上面的示例中更改Ax),这可能会使排序顺序不正确:
A a1, a2;
a1.x = 1;
a2.x = 2;
sorted_set.insert(&a1);
sorted_set.insert(&a2);
a1.x = 3;
Run Code Online (Sandbox Code Playgroud)
当相关属性发生变化时,我可以通过擦除和重新插入元素来保持列表排序,但是簿记会变得有点痛苦.我觉得我这一切都错了.任何人都可以建议一种更好的方法来保持列表排序时排序顺序可以动态更改?这些变化在可预测的时间以可预测的方式发生,但我目前的方法感觉不对.
考虑一种情况,您想要检索一个List或IEnumerable多个所选复选框的值<asp:CheckBoxList>.
这是当前的实现:
IEnumerable<int> allChecked = (from item in chkBoxList.Items.Cast<ListItem>()
where item.Selected
select int.Parse(item.Value));
Run Code Online (Sandbox Code Playgroud)
问题:如何使用lambda表达式或lambda语法改进此LINQ查询?
编辑2015这个问题及其答案已不再适用.它在C#6出现之前被问到,它具有空传播的opertor(?.),它避免了在这个问题和随后的答案中讨论的hacky-workarounds.截至2015年,在C#中,您现在应该使用Form.ActiveForm?.ActiveControl?.Name.
我一直在考虑.NET中的空传播问题,这常常导致丑陋的重复代码,如下所示:
尝试#1常用代码:
string activeControlName = null;
var activeForm = Form.ActiveForm;
if (activeForm != null)
{
var activeControl = activeForm.ActiveControl;
if(activeControl != null)
{
activeControlname = activeControl.Name;
}
}
Run Code Online (Sandbox Code Playgroud)
StackOverflow上有一些关于Maybe <T> monad的讨论,或者使用某种"if not null"扩展方法:
尝试#2,扩展方法:
// Usage:
var activeControlName = Form.ActiveForm
.IfNotNull(form => form.ActiveControl)
.IfNotNull(control => control.Name);
// Definition:
public static TReturn IfNotNull<TReturn, T>(T instance, Func<T, TReturn> getter)
where T : class
{
if (instance != null ) return getter(instance);
return null;
}
Run Code Online (Sandbox Code Playgroud)
我认为这更好,然而,重复的"IfNotNull"和lambdas会有一些语法混乱.我现在正在考虑这个设计:
尝试使用扩展方法#3,可能<T>
// Usage:
var activeControlName …Run Code Online (Sandbox Code Playgroud) 我试图通过向其他开发人员提供代码片段来补充我的代码的帮助功能。这些生成的代码骨架演示了如何使用/调用我的类或方法。
我创建了一个.snippet文件并将其放置在“ %Visual Studio Folder%\Code Snippets\Visual Basic\My Snippets ”文件夹中。我使用了代码片段管理器并确保它包含此文件夹,以便我可以访问代码片段。
当我在根 CodeSnippets 标签中有 1 个 CodeSnippet 标签时,一切都会正常工作......
当我向文件添加多个 CodeSnippet 标签(每个标签都有自己的标题和自己的代码示例)时,我遇到了一些奇怪的情况。
我添加的第一个 CodeSnippet 包含用于向系统添加某些内容的代码,第二个包含用于编辑系统中某些内容的代码,第三个包含用于从系统中删除某些内容的代码。
当我通过右键单击并选择“插入代码片段”来使用代码片段时,只有文件中的第一个代码片段显示为选项。当我选择它时,第一个 CodeSnippet 中的代码被插入......但其他 CodeSnippet 标签中的代码也是如此。
您是否必须为您想要提供的每个代码片段拥有一个单独的 XML .snippet文件?
在阅读完 MSDN 有关创建代码片段的内容后,我的印象是这一切都可以在一个文件中完成。
看来我在这里不理解一些非常基本的东西,并且很想找到答案,但显然代码片段未得到充分使用,因此事实证明找到答案比我最初想象的要棘手一些。
谢谢,
-弗林尼
我知道Microsoft SOAP工具包已经被弃用了一段时间(.NET内置了所有这些东西)但是我想知道任何人都有关于设置一个使用它的简单应用程序的快速信息.我被提到了 http://www.devarticles.com/c/a/Cplusplus/Building-A-SOAP-Client-With-Visual-C-plus/, 但示例中的服务已不再有效,我可以'似乎在网上找到任何文件.
我已经研究了gSoap,但是对于我必须要做的事情似乎过于复杂,尽管无法使其工作,但SOAP工具包似乎(相对)优雅.
我有一个Java系统托盘UI,需要一个计划数据库轮询.生成新线程并通知UI的最佳方法是什么?
我是Swing的新手,也是它的线程模型.
我在这里问过几个问题,但我仍然遇到问题.如果你能在我的代码中告诉我我做错了什么,我将不胜感激.我从ASP.Net页面运行上面的代码并获得"无法访问封闭的流".
var doc = new Document();
MemoryStream memoryStream = new MemoryStream();
PdfWriter.GetInstance(doc, memoryStream);
doc.Open();
doc.Add(new Paragraph("First Paragraph"));
doc.Add(new Paragraph("Second Paragraph"));
doc.Close(); //if I remove this line the email attachment is sent but with 0 bytes
MailMessage mm = new MailMessage("username@gmail.com", "username@gmail.com")
{
Subject = "subject",
IsBodyHtml = true,
Body = "body"
};
mm.Attachments.Add(new Attachment(memoryStream, "test.pdf"));
SmtpClient smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
Credentials = new NetworkCredential("username@gmail.com", "my_password")
};
smtp.Send(mm); //the "Cannot Access …Run Code Online (Sandbox Code Playgroud) Postgres中的work_mem选项如何工作?以下是http://www.postgresql.org/docs/8.4/static/runtime-config-resource.html中的描述:
Specifies the amount of memory to be used by internal sort operations and hash tables before switching to temporary disk files. The value defaults to one megabyte (1MB). Note that for a complex query, several sort or hash operations might be running in parallel; each one will be allowed to use as much memory as this value specifies before it starts to put data into temporary files. Also, several running sessions could be doing such operations concurrently. …
c# ×4
c++ ×3
asp.net ×1
concurrency ×1
email ×1
intellisense ×1
itextsharp ×1
java ×1
linq ×1
monads ×1
numbers ×1
optimization ×1
pdf ×1
postgresql ×1
soap ×1
sorting ×1
stl ×1
swing ×1
swingworker ×1
vb.net ×1
webforms ×1