草庐IT

c# - Activator.CreateInstance(string) 和 Activator.CreateInstance<T>() 的区别

不,这不是关于泛型的问题。我有一个工厂模式,其中包含几个带有内部构造函数的类(如果不通过工厂,我不希望它们被实例化)。我的问题是CreateInstance失败并出现“没有为此对象定义无参数构造函数”错误,除非我在非公共(public)参数上传递“true”。例子//FailsActivator.CreateInstance(type);//WorksActivator.CreateInstance(type,true);我想使工厂通用化以使其更简单一些,如下所示:publicclassGenericFactorywhereT:MyAbstractType{publicstaticTG

c# - C#中的工程符号?

是否有任何代码(或内置函数)允许以工程符号输出float?例如,1.5e-4将显示为150µ,5e-3将显示为5m。 最佳答案 这可能需要重构:privatestaticstringToEngineeringNotation(thisdoubled){doubleexponent=Math.Log10(Math.Abs(d));if(Math.Abs(d)>=1){switch((int)Math.Floor(exponent)){case0:case1:case2:returnd.ToString();case3:case4:ca

C#比较不同大小写的字符串

这个问题在这里已经有了答案:HowcanIdoacaseinsensitivestringcomparison?(9个回答)关闭9年前。我正在读取一个用户名,然后检查是否存在于另一个数据库表中,问题是虽然用户名相同但大小写可能不同并且阻止它找到匹配示例jsmith和JSmith或JSMITH。我该如何解决这个问题?我应该在写入第一个数据库时降低大小写,还是在比较两者时更改下面的代码?drUser["Enrolled"]=(enrolledUsers.FindIndex(x=>x.Username==(string)drUser["Username"])!=-1);更新:仍在努力解决这个

c# - Dapper 中的映射实体

我刚开始使用Dapper,我似乎没有找到像将实体映射到数据库中的表这样非常简单的事情:我有一个存储过程:CREATEPROCEDURE[dbo].GetUserById(@UserIdint)ASbeginSELECTUserId,LastName,FirstName,EmailAddressFROMusersWHEREUserID=@UserIdendgo然后是一个实体:publicclassUser{publicintId{get;set;}publicstringLastName{get;set;}publicstringFirstName{get;set;}publicstri

c# - 数据库连接字符串信息

在.Net中是否有一个类,您可以在其中获取数据库名称和所有连接字符串信息,而无需在连接字符串上实际执行子字符串?编辑:我不是在创建连接,而是在尝试从连接字符串中获取信息。所以我基本上是在寻找接受连接字符串arg并具有dbName、连接类型等访问器的东西.... 最佳答案 如果需要,您可以使用特定于提供程序的ConnectionStringBuilder类(在适当的命名空间内)或System.Data.Common.DbConnectionStringBuilder抽象连接字符串对象。您需要知道用于指定您要查找的信息的特定于提供商的关

c# - 有没有比 String.Replace 更好的方法来从字符串中删除退格符?

我有一个从另一个来源读取的字符串,例如“\b\bfoo\bx”。在这种情况下,它将转换为单词“fox”,因为前2个\b被忽略,最后一个“o”被删除,然后被“x”替换。另外一种情况是“patt\b\b\b\b\b\b\b\b\b\bfoo”应该被翻译成“foo”我想出了一些使用String.Replace的方法,但它很复杂,我担心它不能正常工作,而且它会创建很多我想避免的新字符串对象。有什么想法吗? 最佳答案 可能最简单的方法就是遍历整个字符串。根据您的输入,以下代码可以在1-pass中完成此操作publicstringReplace

c# - String.Format 与 ToString 和使用 InvariantCulture

我在这里有点困惑。我应该用什么Console.WriteLine((val/1085).ToString("N"));VSConsole.WriteLine(String.Format("{0:N}",(val/1085)));另外,如何适应InvariantCulture?任何最佳实践:)? 最佳答案 其实我更喜欢第三种形式:Console.WriteLine("{0:N}",val/1085);Console.WriteLine可以为您完成String.Format。Console.WriteLine不允许您提供文化。如果那是您

c# - 如何在线程中调用带多个参数的方法?

我正在构建一个C#桌面应用程序。如何在线程中调用采用多个参数的方法。我有一个名为Send(stringarg1,stringarg2,stringarg3)的方法,我需要使用一个名为SendingThread的线程来调用此方法。谁能帮忙解决这个问题?任何帮助将不胜感激。 最佳答案 Threadthread=newThread(()=>Send(arg1,arg2,arg3));thread.Start(); 关于c#-如何在线程中调用带多个参数的方法?,我们在StackOverflow上

C# 字典 : faster access but less memory footprint

我需要一些关于以最小内存占用和最大访问性能进行存储和访问的最佳方式的建议。例如。对于每辆车,我想存储型号和名称。我有以下几点想法:选项1:Dictionary>values=newDictionary>();Dictionarylist=newDictionary();list.Add("2001","JettaS");list.Add("2002","JettaSE");list.Add("2002","JettaLE");values.Add("VolksWagen",list);选项2:Dictionary>>values2=newDictionary>>();List>list

c# - 如何将 Action<string> 添加到界面?

正如问题标题所暗示的,我想添加一个Action到一个界面。这可能吗?目前它说Interfacescannotcontainfields 最佳答案 您需要将其添加为属性:publicinterfaceIYourInterface{ActionYourAction{get;set;}}没有get/set它只是一个字段,正如编译器指出的那样,接口(interface)不能包含字段。这确实意味着当您实现此接口(interface)时,您还需要提供实际属性(尽管很明显它可以是一个简单的自动属性):publicclassFoo:IYourInt