小编Joh*_*ers的帖子

.NET中的多图

我需要一个等同std::multimap<K, V, Comp, Alloc>于C-sharp的c ++ .它是否存在于标准库中?

c# multimap

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

你对Clojure有什么看法?

你们对Clojure有什么看法?我正在考虑接下来学习它,目前正在使用Erlang并且除了记录惨败之外总体上对它很满意...... Clojure和LISP一样强大吗?

lisp clojure

51
推荐指数
8
解决办法
2万
查看次数

将数组写入Excel范围

我目前正在尝试使用以下代码将对象数组中的数据写入Excel中的范围,其中objData只是一个字符串数组:

private object m = System.Type.Missing;
object[] objData = getDataIWantToWrite();

Range rn_Temp;
rn_Temp = (Range)XlApp.get_Range(RangeName, m);
rn_Temp = rn_Temp.get_Resize(objData.GetUpperBound(), 1);
rn_Temp.value2 = objData;
Run Code Online (Sandbox Code Playgroud)

这几乎可以工作,问题是范围被填满但是每个单元格都获得了第一个项目的值objData.

逆向工作,即

private object m = System.Type.Missing;
object[] objData = new object[x,y]

Range rn_Temp;
rn_Temp = (Range)XlApp.get_Range(RangeName, m);
rn_Temp = rn_Temp.get_Resize(objData.GetUpperBound(), 1);
objData = (object[])rn_Temp.value2;
Run Code Online (Sandbox Code Playgroud)

将返回一个包含工作表中所有值的数组,所以我不确定为什么阅读和赋值的工作方式不同.

有没有人成功地做过这件事?我目前正逐个单元地编写阵列,但它需要处理很多(> 50,000)行,因此非常耗时.

c# excel interop

51
推荐指数
3
解决办法
11万
查看次数

在.NET中,处理事件的线程是什么?

我试图在c#中实现生产者/消费者模式.我有一个监视共享队列的消费者线程,以及一个将项放入共享队列的生产者线程.生产者线程被订阅接收数据...也就是说,它有一个事件处理程序,只是坐着等待OnData事件触发(数据从第三方api发送).当它获取数据时,它会将其粘贴在队列中,以便消费者可以处理它.

当OnData事件在生产者中触发时,我原本期望它由我的生产者线程处理.但这似乎并不是正在发生的事情.OnData事件看起来好像是在新线程上处理的!这是.net始终如何工作...事件是在自己的线程上处理的?我可以控制什么线程在它们被引发时处理事件?如果几乎同时发生了数百个事件......每个事件都有自己的线程怎么办?

.net c# events multithreading delegates

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

如何克隆对象

当我做了某乙以下..任何人修改一个(我以为这样做会克隆从人,将B).我也不知道如果更改Person a将在链接后更改Person b.由于我的代码现在,我只能在一个方向看到这个.

Person a = new Person() { head = "big", feet = "small" };
Person b = a; 

b.head = "small"; //now a.head = "small" too   
Run Code Online (Sandbox Code Playgroud)

现在如果我这样做了.人a变得完全分开.

Person b = new Person() { head = a.head, feet = a.feet };
Run Code Online (Sandbox Code Playgroud)

现在,将此行为与C#中的其他内容进行比较时,这种方法很有意义.但是,对于大型物体,这可能会非常烦人.

有没有办法简化这个?

如:

Person b = a.Values;

c# object

51
推荐指数
7
解决办法
15万
查看次数

使用LINQ to SQL有助于防止SQL注入

我正在建立一个公共站点,我首先想到的是SQL注入.我有一些文本字段我正在保存并使用linq更新/写入数据库.我使用linq安全吗?

此示例是创建用户帐户.

Data.MemberRegistrationDataContext context = new MemberRegistrationDataContext();
Data.tbl_Member_UserProfile profile = new tbl_Member_UserProfile();
profile.SSN = Convert.ToDecimal(Session["tempMemberSSN_Registration"]);
profile.UserName = userName;
profile.Password = password;
profile.EmailAddress = email;
profile.QuestionID = qID;
profile.QuestionResponse = securityAnswer;
profile.LastModDt = DateTime.Now;
profile.LastModBy = "web";
context.tbl_Member_UserProfiles.InsertOnSubmit(profile);
context.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

此示例正在更改密码

   MemberRegistrationDataContext dc = new MemberRegistrationDataContext();
   var mProfileRecord = dc.tbl_Member_UserProfiles.Single(c => c.SSN == sSSN);
   mProfileRecord.Password = sNewPassword;
   dc.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

这些安全吗?LINQ参数化它自动生成的SQL吗?

c# linq asp.net linq-to-sql

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

.NET DateTime到SqlDateTime转换

在将.NET DateTime(默认为(DateTime)时)转换为SqlDateTime时,我应始终检查.NET日期是否在SqlDateTime.MinValue和SqlDateTime.MaxValue之间[或]是否有一种好方法可以执行此操作.

.net c# datetime sqldatetime

50
推荐指数
1
解决办法
12万
查看次数

.NET中的通用方法不能推断其返回类型.为什么?

鉴于:

static TDest Gimme<TSource,TDest>(TSource source) 
{ 
    return default(TDest); 
}
Run Code Online (Sandbox Code Playgroud)

为什么我不能这样做:

string dest = Gimme(5);
Run Code Online (Sandbox Code Playgroud)

没有得到编译器错误:

error CS0411: The type arguments for method 'Whatever.Gimme<TSource,TDest>(TSource)' cannot be inferred from the usage. Try specifying the type arguments explicitly.

5可以推断为int,但有编译器将不会/无法解决的返回类型的限制string.我在几个地方读到这是设计但没有真正的解释.我在某处读过这可能会在C#4中发生变化,但事实并非如此.

任何人都知道为什么不能从泛型方法中推断出返回类型?这是其中一个问题,答案是如此明显,它正盯着你的脸?我希望不是!

.net c# type-inference

50
推荐指数
4
解决办法
5556
查看次数

C#清除会话

问题#1

我想知道我什么时候应该使用:

Session.Abandon() //当我在跟踪期间和调用它之后使用它时 - 我发现会话仍然有一个值.

什么时候我应该使用:

Session.Clear()

我应该何时使用每种特定方法?


  • 一般来说?
  • 在我的具体情况?

我在页面加载中检查会话是否不等于null.如果session等于null,我想清除会话并重定向到登录页面?

我应该使用这样的东西:

private void initSession()
{
    Session.Clear();
    Session.Abandon();
    Response.Redirect("LoginPage.aspx");
}
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net session page-lifecycle

50
推荐指数
1
解决办法
10万
查看次数

在单独的程序中将控制台输出重定向到文本框

我正在开发一个Windows窗体应用程序,它要求我调用一个单独的程序来执行任务.该程序是一个控制台应用程序,我需要将标准输出从控制台重定向到我的程序中的TextBox.

从我的应用程序执行程序没有问题,但我不知道如何将输出重定向到我的应用程序.我需要在程序使用事件运行时捕获输出.

在我的应用程序停止并且文本以随机间隔不断变化之前,控制台程序并不意味着停止运行.我试图做的只是从控制台挂钩输出以触发事件处理程序,然后可以使用它来更新TextBox.

我使用C#编写程序代码并使用.NET框架进行开发.原始应用程序不是.NET程序.

编辑:这是我正在尝试做的示例代码.在我的最终应用程序中,我将用代码替换Console.WriteLine来更新TextBox.我试图在我的事件处理程序中设置断点,甚至没有达到.

    void Method()
    {
        var p = new Process();
        var path = @"C:\ConsoleApp.exe";

        p.StartInfo.FileName = path;
        p.StartInfo.UseShellExecute = false;
        p.OutputDataReceived += p_OutputDataReceived;

        p.Start();
    }

    static void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
    {
        Console.WriteLine(">>> {0}", e.Data);
    }
Run Code Online (Sandbox Code Playgroud)

.net c# console textbox winforms

49
推荐指数
2
解决办法
5万
查看次数