小编Adr*_*tti的帖子

什么是IndexOutOfRangeException/ArgumentOutOfRangeException以及如何解决?

我有一些代码,当它执行时,它抛出一个IndexOutOfRangeException,说,

指数数组的边界之外.

这是什么意思,我能做些什么呢?

根据使用的类别,它也可以 ArgumentOutOfRangeException

mscorlib.dll中出现"System.ArgumentOutOfRangeException"类型的异常但未在用户代码中处理附加信息:索引超出范围.必须是非负数且小于集合的大小.

.net c# indexoutofrangeexception

178
推荐指数
4
解决办法
15万
查看次数

内联汇编语言比本机C++代码慢吗?

我试图比较内联汇编语言和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)

c c++ performance assembly

174
推荐指数
14
解决办法
5万
查看次数

IOException:进程无法访问文件"文件路径",因为它正由另一个进程使用

我有一些代码,当它执行时,它抛出一个IOException,说

该进程无法访问文件'filename',因为它正由另一个进程使用

这是什么意思,我能做些什么呢?

.net c# language-agnostic ioexception

152
推荐指数
5
解决办法
42万
查看次数

搜索字符串集合的最快方法

问题:

我有一个大约120,000个用户(字符串)的文本文件,我想将其存储在一个集合中,然后再对该集合执行搜索.

每次用户更改a的文本时都会发生搜索方法TextBox,结果应该是包含文本的字符串TextBox.

我不必更改列表,只需将结果拉出来并将其放入ListBox.

到目前为止我尝试过的:

我尝试了两个不同的集合/容器,我正在从外部文本文件中转储字符串条目(当然是一次):

  1. List<string> allUsers;
  2. 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秒).

题:

你认为我的瓶颈在哪里?我用过的系列?搜索方法?都?

如何获得更好的性能和更流畅的功能?

c# linq collections string-search winforms

79
推荐指数
10
解决办法
2万
查看次数

AssemblyInfo版本信息星号

它在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)

.net c#

49
推荐指数
4
解决办法
3万
查看次数

实体框架ALTER TABLE语句与FOREIGN KEY约束冲突

在实体框架中更新数据库,代码优先迁移,我收到此错误:

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)

.net c# sql sql-server entity-framework

49
推荐指数
6
解决办法
4万
查看次数

具有可变数量参数的函数

正如标题所说,我需要知道...在方法参数中是否存在与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# java function

44
推荐指数
6
解决办法
4万
查看次数

知道从C#调用SQL Server时何时重试或失败?

我有一个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)

.net c# sql-server

30
推荐指数
3
解决办法
2万
查看次数

如何防止XXE攻击(.net中的XmlDocument)

我们对代码进行了安全审核,他们提到我们的代码容易受到外部实体(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).任何人都可以帮我错过的地方吗?任何帮助表示赞赏!

.net c# xml asp.net xml-parsing

29
推荐指数
2
解决办法
3万
查看次数

我在哪里可以存储(和管理)应用程序许可证信息?

我正在开发一个Windows应用程序.这要求用户注册使用它...现在,我将我的许可证信息存储为APpData中的文件.但删除该文件会重置试用版日期.所以,我现在计划将其保存在注册表中.但是,大多数用户在Windows中没有管理权限(受限用户)来访问注册表.我能做什么 ?我在哪里可以保存我的序列号和日期?

.net c#

27
推荐指数
1
解决办法
2万
查看次数