草庐IT

list_of_strings

全部标签

c# - “不要公开通用列表”,为什么在方法参数中使用 collection<T> 而不是 list<T>

我正在使用FxCop,它显示“不要公开通用列表”的警告,建议使用Collection而不是List.首选它的原因,我知道所有这些东西,如thisSOpost中所述和MSDN以及我浏览过的更多文章。但我的问题是,我很少有方法可以进行如此繁重的计算,并且方法接受List的参数。就性能而言,这应该更快更好。但是FxCop也为此发出警告。所以一个选择是我应该将参数声明为Collection,然后使用ToList()在方法内部,然后使用它。那么优化了哪一个呢?“抑制这种情况下的警告”或“在参数中使用Collection,然后在方法本身内部使用ToList()”。 最佳

c# 修改 List<T> 中的结构

简短的问题:如何修改List中的单个项目?(或者更准确地说,struct的成员存储在List中?)完整解释:首先,下面使用的struct定义:publicstructitemInfo{...(Strings,Chars,boring)...publicStringnameStr;...(yougettheidea,nothingfancy)...publicStringsubNum;//BTWthisistheelementI'mtryingtosorton}publicstructslotInfo{publicCharcatID;publicStringsortName;public

c# - List<T> 的深拷贝

我正在尝试对通用列表进行深度复制,想知道是否还有其他方法可以创建复制方法并一次实际复制每个成员。我有一个看起来有点像这样的类:publicclassData{privatestringcomment;publicstringComment{get{returncomment;}set{comment=value;}}privateListtraceData;publicListTraceData{get{returntraceData;}set{traceData=value;}}}我有上面数据的列表,即List.我想要做的是将List子集的跟踪数据绘制到图形上,可能对数据进行一些缩放

c# - 使用数组作为 string.Format() 的参数

当尝试使用数组作为string.Format()方法的参数时,出现以下错误:FormatException:Index(zerobased)mustbegreaterthanorequaltozeroandlessthanthesizeoftheargumentlist.代码如下:place=newint[]{1,2,3,4};infoText.text=string.Format("Player1:{0}\nPlayer2:{1}\nPlayer3:{2}\nPlayer4:{3}",place);数组包含四个值,String.Format()中的参数也相同。是什么导致了这个错误?(

c# - 面向对象编程 : Separation of Data and Behavior

最近我们讨论了类中的数据和行为分离。通过将域模型及其行为放入单独的类中来实现数据和行为分离的概念。但是,我不相信这种方法的假定好处。尽管它可能是由某个“伟人”创造的(我认为是MartinFowler,尽管我不确定)。我在这里举一个简单的例子。假设我有一个包含Person及其方法(行为)数据的Person类。classPerson{stringName;DateTimeBirthDate;//constructorPerson(stringName,DateTimeBirthDate){this.Name=Name;this.BirthDate=BirthDate;}intGetAge(

c# - C# 3.5 中的 List<int> 初始化

我可以初始化一个ListlikenewList{1,2,3,4,5};然而List没有接受单个参数的构造函数。所以我试图通过调试器运行它,它似乎在调用Add方法。那么编译器如何知道调用哪个方法来添加每个单独的元素。这可能是个愚蠢的问题,但我有点困惑。谢谢 最佳答案 这是一个集合初始化器,一个C#3.0languagefeature.它需要:该类型必须实现IEnumerable(尽管它从未用于初始化)类型必须至少有一个Add方法它只是为每个术语调用Add方法。如果Add接受多个值,例如字典,您也可以使用元组。然后每一项都是{key,v

c# - "Possible multiple enumeration of IEnumerable"与 "Parameter can be declared with base type"

在Resharper5中,以下代码导致list出现警告“Parametercanbedeclaredwithbasetype”:publicvoidDoSomething(Listlist){if(list.Any()){//...}foreach(variteminlist){//...}}在Resharper6中,情况并非如此。但是,如果我将方法更改为以下内容,我仍然会收到该警告:publicvoidDoSomething(Listlist){foreach(variteminlist){//...}}原因是,在这个版本中,list只枚举一次,所以改成IEnumerable不会自动

c# - 为什么 List<T>.Sort 使用 Comparer<int>.Default 比等效的自定义比较器快两倍以上?

结果使用1000万个随机列表ints(每次相同的种子,重复10次的平均值):listCopy.Sort(Comparer.Default)需要314毫秒。使用sealedclassIntComparer:IComparer{publicintCompare(intx,inty){returnxlistCopy.Sort(newIntComparer())需要716毫秒。一些变化:使用structIntComparer而不是sealedclass:771毫秒使用publicintCompare(intx,inty){returnx.CompareTo(y);}:809毫秒评论Compar

c# - 功能 'interpolated strings' 在 C# 5 中不可用。请使用语言版本 6 或更高版本

有一个类似的问题here但我相信这涉及不同的原因。我将一个类从一个较新的项目移到了一个较旧的项目中。两者都以.net4.6为目标,但是在移动之后我在构建时收到以下错误。Feature'interpolatedstrings'isnotavailableinC#5.Pleaseuselanguageversion6orgreater.我尝试在属性窗口中将我的项目设置为使用C#6构建,但没有任何更改。 最佳答案 我终于找到了改变它的地方。有时当您更新目标框架版本时,这似乎并没有改变。 关于c

c# - 为什么 new String ("Hello") 在 C# 中无效?

制作背后的逻辑/原因是什么Strings=newString("HelloWorld");在C#中非法?错误是Thebestoverloadedmethodmatchfor`string.String(char*)'hassomeinvalidarguments我对API文档不感兴趣,我感兴趣的是为什么这是非法的。是因为池静态字符串?像Java将Integer(-128)池化为Integer(127)并产生可怕的结果?(当然还有字符串) 最佳答案 使用构造函数基于另一个现有字符串创建新字符串是毫无意义的-这就是为什么没有构造函数重载