我有一些代码,当它执行时,它抛出一个IndexOutOfRangeException,说,
指数数组的边界之外.
这是什么意思,我能做些什么呢?
根据使用的类别,它也可以 ArgumentOutOfRangeException
mscorlib.dll中出现"System.ArgumentOutOfRangeException"类型的异常但未在用户代码中处理附加信息:索引超出范围.必须是非负数且小于集合的大小.
我试图比较内联汇编语言和C++代码的性能,所以我写了一个函数,添加两个大小为2000的数组,持续100000次.这是代码:
#define TIMES 100000
void calcuC(int *x,int *y,int length)
{
for(int i = 0; i < TIMES; i++)
{
for(int j = 0; j < length; j++)
x[j] += y[j];
}
}
void calcuAsm(int *x,int *y,int lengthOfArray)
{
__asm
{
mov edi,TIMES
start:
mov esi,0
mov ecx,lengthOfArray
label:
mov edx,x
push edx
mov eax,DWORD PTR [edx + esi*4]
mov edx,y
mov ebx,DWORD PTR [edx + esi*4]
add eax,ebx
pop edx
mov [edx + esi*4],eax
inc esi
loop label
dec edi …Run Code Online (Sandbox Code Playgroud) 我有一些代码,当它执行时,它抛出一个IOException,说
该进程无法访问文件'filename',因为它正由另一个进程使用
这是什么意思,我能做些什么呢?
问题:
我有一个大约120,000个用户(字符串)的文本文件,我想将其存储在一个集合中,然后再对该集合执行搜索.
每次用户更改a的文本时都会发生搜索方法TextBox,结果应该是包含文本的字符串TextBox.
我不必更改列表,只需将结果拉出来并将其放入ListBox.
到目前为止我尝试过的:
我尝试了两个不同的集合/容器,我正在从外部文本文件中转储字符串条目(当然是一次):
List<string> allUsers;HashSet<string> allUsers;使用以下LINQ查询:
allUsers.Where(item => item.Contains(textBox_search.Text)).ToList();
我的搜索事件(用户更改搜索文本时触发):
private void textBox_search_TextChanged(object sender, EventArgs e)
{
if (textBox_search.Text.Length > 2)
{
listBox_choices.DataSource = allUsers.Where(item => item.Contains(textBox_search.Text)).ToList();
}
else
{
listBox_choices.DataSource = null;
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
两者都给了我一个很差的响应时间(每次按键之间大约1-3秒).
题:
你认为我的瓶颈在哪里?我用过的系列?搜索方法?都?
如何获得更好的性能和更流畅的功能?
它在AssemblyInfo.cs中为C#项目说明可以用它指定版本信息 *
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
Run Code Online (Sandbox Code Playgroud)
我改成了这个:
[assembly: AssemblyVersion("1.0.*.*")]
[assembly: AssemblyFileVersion("1.0.*.*")]
Run Code Online (Sandbox Code Playgroud)
这是我从编译器得到的错误:
error CS0647: Error emitting 'System.Reflection.AssemblyVersionAttribute' attribute -- 'The version specified '1.0.*.*' is invalid'
warning CS1607: Assembly generation -- The …Run Code Online (Sandbox Code Playgroud) 在实体框架中更新数据库,代码优先迁移,我收到此错误:
ALTER TABLE语句与FOREIGN KEY约束"FK_dbo.Clients_dbo.MedicalGroups_MedicalGroupId"冲突.冲突发生在数据库"hrbc",表"dbo.MedicalGroups",列"Id"中.
这是我的班级:
public partial class Client
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int? MedicalGroupId { get; set; }
[ForeignKey("MedicalGroupId")]
public virtual MedicalGroups MedicalGroup { get { return _MedicalGroup; } set { _MedicalGroup = value; } }
}
Run Code Online (Sandbox Code Playgroud)
这是我的第二堂课:
public partial class MedicalGroups
{
[Key]
public int Id { get; set; }
public string Name { get; set; } …Run Code Online (Sandbox Code Playgroud) 正如标题所说,我需要知道...在方法参数中是否存在与java相对应的语法,例如
void printReport(String header, int... numbers) { //numbers represents varargs
System.out.println(header);
for (int num : numbers) {
System.out.println(num);
}
}
Run Code Online (Sandbox Code Playgroud)
(代码由维基百科提供)
我有一个C#应用程序,它从一个有点不稳定的环境中托管的SQL Server中获取数据.我无法解决环境问题,所以我需要尽可能优雅地处理它们.
为此,我想重新尝试基础设施故障导致的操作,例如网络故障,SQL服务器脱机,因为它们正在重新启动,查询超时等.同时,我不想要如果逻辑错误失败,则重试查询.我只是希望那些将异常冒泡到客户端.
我的问题是:区分环境问题(丢失连接,超时)和其他类型的异常(即使环境稳定会发生逻辑错误之类的事情)的最佳方法是什么.
C#中有一个常用的模式来处理这样的事情吗?例如,是否有一个属性我可以在SqlConnection对象上检查以检测失败的连接?如果没有,解决这个问题的最佳方法是什么?
对于它的价值,我的代码并不特别:
using (SqlConnection connection = new SqlConnection(myConnectionString))
using (SqlCommand command = connection.CreateCommand())
{
command.CommandText = mySelectCommand;
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
// Do something with the returned data.
}
}
}
Run Code Online (Sandbox Code Playgroud) 我们对代码进行了安全审核,他们提到我们的代码容易受到外部实体(XXE)攻击.我正在使用以下代码 -
string OurOutputXMLString=
"<ce><input><transaction><length>00000</length><tran_type>Login</tran_type></transaction><user><user_id>ce_userid</user_id><subscriber_name>ce_subscribername</subscriber_name><subscriber_id>ce_subscriberid</subscriber_id><group_id>ce_groupid</group_id><permissions></permissions></user><consumer><login_details><username>UnitTester9</username><password>pDhE5AsKBHw85Sqgg6qdKQ==</password><pin>tOlkiae9epM=</pin></login_details></consumer></input></ce>"
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(OurOutputXMLString);
Run Code Online (Sandbox Code Playgroud)
在审计报告中,他们说它失败了,因为XML实体可以包含可以在预期的控制之外解析的URL.XML实体解析器将尝试解析和检索外部引用.如果可以将攻击者控制的XML提交给其中一个功能,则攻击者可以访问有关内部网络,本地文件系统或其他敏感数据的信息.为了避免这种情况,我编写了以下代码,但它不起作用.
MemoryStream stream =
new MemoryStream(System.Text.Encoding.Default.GetBytes(OurOutputXMLString));
XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Prohibit;
settings.MaxCharactersFromEntities = 6000;
XmlReader reader = XmlReader.Create(stream, settings);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(reader);
Run Code Online (Sandbox Code Playgroud)
但我可以在这里看到,读者没有任何值加载到xmlDoc(XmlDocument).任何人都可以帮我错过的地方吗?任何帮助表示赞赏!
我正在开发一个Windows应用程序.这要求用户注册使用它...现在,我将我的许可证信息存储为APpData中的文件.但删除该文件会重置试用版日期.所以,我现在计划将其保存在注册表中.但是,大多数用户在Windows中没有管理权限(受限用户)来访问注册表.我能做什么 ?我在哪里可以保存我的序列号和日期?
c# ×9
.net ×7
sql-server ×2
asp.net ×1
assembly ×1
c ×1
c++ ×1
collections ×1
function ×1
ioexception ×1
java ×1
linq ×1
performance ×1
sql ×1
winforms ×1
xml ×1
xml-parsing ×1