Tag: c# 4.0

使用管理员权限运行cmd命令

如何在Windows窗体的幕后运行命令**cd..** ? (即用户看不到它) 谢谢。

为什么列表在没有引用的情况下传递给一个像ref一样传递的函数?

如果我没有得到这个非常错误,这种行为对我来说很奇怪。 而不是解释,我将在下面发布一个示例代码,请告诉我为什么我得到输出x而不是y。 private void button1_Click(object sender, EventArgs e) { List l = new List() { 1, 2, 3 }; Fuss(l); MessageBox.Show(l.Count.ToString()); } private void Fuss(List l) { l.Add(4); l.Add(5); } 输出应该,我假设是3.但我得到输出为5.我理解输出可以是5如果我这样做: private void button1_Click(object sender, EventArgs e) { List l = new List() { 1, 2, 3 }; Fuss(ref l); MessageBox.Show(l.Count.ToString()); } private void Fuss(ref […]

使用c#获取Chrome浏览器标题

假设我打开了多个镀铬窗口(不是标签), 如何查看浏览器标题? 我尝试了以下方法: Process[] p = Process.GetProcessesByName(“chrome”); foreach (Process item in p) { Console.WriteLine(item.MainWindowTitle); } 但它只返回我最后一个打开的窗口名称,所有其他都是空白..

列出线程安全

我使用以下代码 var processed = new List(); Parallel.ForEach(items, item => { processed.Add(SomeProcessingFunc(item)); }); 上面的代码线程安全吗? 处理后的列表是否有可能被破坏? 或者我应该在添加之前使用锁? var processed = new List(); Parallel.ForEach(items, item => { lock(items.SyncRoot) processed.Add(SomeProcessingFunc(item)); }); 谢谢。

通过C#连接到Oracle数据库?

我需要通过Visual Studio 2010连接到Oracle DB(外部)。但我不想在我的机器上安装Oracle。 在我的项目中,我引用了: System.Data.OracleClient 。 但它没有满足需要。 我有一个“Oracle SQL Developer IDE” ,我在其中运行针对oracle db的SQL查询。 到目前为止我有这个代码: private static string GetConnectionString() { String connString = “host= serverName;database=myDatabase;uid=userName;pwd=passWord”; return connString; } private static void ConnectingToOracle() { string connectionString = GetConnectionString(); using (OracleConnection connection = new OracleConnection()) { connection.ConnectionString = connectionString; connection.Open(); Console.WriteLine(“State: {0}”, connection.State); Console.WriteLine(“ConnectionString: {0}”, connection.ConnectionString); OracleCommand […]

如何在嵌套括号之间获取文本?

用于获取文本的Reg表达式在括号()之间,我曾尝试过,但我没有得到RegEx。 对于这个例子 Regex.Match(script, @”\((.*?)\)”).Value 例:- add(mul(a,add(b,c)),d) + e – sub(f,g) Output => 1) mul(a,add(b,c)),d 2) f,g

通过挂钩直接向另一个进程发送击键

我想知道,在摆弄了SendInput,SendKeys,PostMessage,SendMessage,SendNotifyMessage,keybd_event等等各种问题之后。 为了找到这个…尝试将键盘输入发送到另一个非前台进程是非常挑剔和不可靠的。 我尝试了一种SendInput的方法,我在其中欺骗Z顺序(保持当前窗口在顶部)并快速前进第三方窗口,发送输入,并重新前景我的窗口。 其中最终失败了,而且,不知何故,不确定为什么,设法同时也在我的窗口上触发击键而不是前景(导致在两个窗口之间发送和接收的无限循环,直到我设法关闭该过程)。 我尝试过SendMessage和PostMessage的不同组合。 一个用于向下,一个用于向上,因为同时使用向下和向上导致问题,例如PostMessage用于两者,导致密钥在接收窗口上复制。 或两者的SendMessage,这导致文本输入问题,但其他function正常。 用于keydown的SendMessage和用于keyUp的PostMessage适用于所有function,但可靠性率急剧下降,并且在关键事件中增加了延迟。 只有用于keydown的PostMessage和用于keyup的SendMessage的组合设法做了一些有用的事情,可能有5-10%的密钥注册失败率。 对于SentNotifyMessage也是如此(就可靠性而言,其行为与SendMessage基本相同)。 基本上,我已经结束了,我想知道直接在目标窗口中注入一个钩子,并做一些伏都教以这种方式向它发送击键,绕过消息队列等。这样做将会不会触发全局键事件,只会影响目标窗口。 唯一的问题是,当涉及到注射/挂钩等时,我是不可知的。所以我转向你,社区。 哇呢?

为什么C#(4.0)不允许generics类型中的共同和逆变?

这种限制的真正原因是什么? 这只是必须完成的工作吗? 概念上难吗? 这不可能吗? 当然,人们不能在字段中使用类型参数,因为它们总是可读写的。 但这不是答案,可以吗? 这个问题的原因是我在C#4上写了一篇关于方差支持的文章,我觉得我应该解释为什么它仅限于委托和接口。 只是为了逆转举证责任。 更新:埃里克问了一个例子。 怎么样(不知道这是否有意义,但是:-)) public class Lookup where T : Animal { public T Find(string name) { Animal a = _cache.FindAnimalByName(name); return a as T; } } var findReptiles = new Lookup(); Lookup findAnimals = findReptiles; 在一个类中拥有它的原因可能是类本身中保存的缓存。 请不要将您的不同类型的宠物命名为相同! 顺便说一下,这让我想到了C#5.0中的可选类型参数 🙂 更新2:我没有声称CLR和C#应该允许这个。 只是想了解是什么导致它没有。

创建动态变量名称

我们可以在C#中创建动态变量吗? 我知道我的下面的代码是错误和编码很差。 但是这段代码有很小的逻辑,比如创建动态变量 var name=0; for(i=0;i<10;i++)// 10 means grid length { name+i=i; } var xx1=name1; var xx2=name2; var xx3=name3; 在c#中有可能吗? 在c#中创建动态变量? 并在c#中更改变量名称? 并在c#中连接变量名称( 就像我们可以连接任何控件ID或名称 )… 为什么我需要动态变量名称(方案): var variablename=”” var variablename0=No; var variablename1=Yes; var variablename2=No; 。 。 。 我有一个多行的gridview 。 我需要为每一行分配服务器端变量。 所以我需要服务器端的变量集。 我唯一可以为每个模板字段设置Text= 。 此rowCount表示每个网格行索引。 如果网格有2行,则rowCount值为0,1,2 现在我需要动态地将variablename0,variablename1,variablename2更改为variablename0,variablename1,variablename2以用于单独的行。

为什么我们的项目需要接口层/抽象类?

我们通常在项目中使用抽象函数/接口。 为什么真的需要它? 为什么我们不能只去商业逻辑层,数据访问层和表示层 表示层中的function: abc(); 业务逻辑层中的function: public void abc() { //Preparing the list } 数据访问层中的function: public abstract void abc(); 数据访问SQLServer层中的function: public override void abc() { //Connection with database } 问题是:为什么需要数据访问层?