草庐IT

int_container

全部标签

c# - 调用使用 yield 返回的方法时出现错误 'Iterator cannot contain return statement '

我希望有更好的方法来编写此方法和重载,同时减少代码重复。我想返回列表中项目之间的一系列增量。这个方法:-publicstaticIEnumerableCalculateDeltas(thisIEnumerablesequence){decimalprev=default(decimal);foreach(variteminsequence){varcurrent=item;decimaldiff=current-prev;prev=item;yieldreturndiff;}}工作得很好。然后我想到了一个允许绝对增量的重载,但如果不需要绝对值,则会调用原始方法:-publicstati

c# - 如何在 int 列表中找到满足某些条件的项目的索引?

我有一个包含项目{10、11、23、34、56、43}的int列表,我想找出所有大于23的项目的索引。这些值可以是任何顺序,所以我这样做不想对它们进行排序。Listmylist=newList{10,11,23,34,56,43};我对满足条件的所有项目的索引感兴趣,而不仅仅是满足条件的第一个项目。所以这行代码对我不起作用。intindex=mylist.FindIndex(x=>x>23); 最佳答案 varindexes=mylist.Select((v,i)=>new{v,i}).Where(x=>x.v>23).Select

c# - 为什么这个从 short 到 int 的转换会失败?

我们有一些代码可以将MicrosoftAccess数据库中的数据归档到MSSQLServer数据库中。假设我们已经从Access表中填充了一个数据读取器,并且我们正在向SqlCommand添加一个参数以准备插入,那么我们有一个失败的类型转换。这是代码:oSqlServerDbCmd_ForInsert.Parameters.AddWithValue("@Duration",(int)oReader["Duration"]);oReader中的字段实际上是一个AccessInteger,在C#中是一个short。如果我们在这里转换为short就没有问题。但是,如果我们转换为int,代码将

c# - Json Serialize Dictionary<Enum, Int32> 的问题

每当我尝试序列化字典时,我都会得到异常:System.ArgumentException:Type'System.Collections.Generic.Dictionary`2[[Foo.DictionarySerializationTest+TestEnum,Foo,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null],[System.Int32,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089]]'isnotsupportedfors

c# - 在字符串末尾找到匹配项时,使用 .Contains() 和 .ToLowerInvariant() 的 EF 查询结果没有匹配项

是否可以进入linq查询?我有一个最简单形式的EntityFramework4查询的linq:List=List.Where(f=>f.Value.ToString().ToLowerInvariant().Contains(filter.ToLowerInvariant()));这是针对EntityFrameworkDbContext的查询,我无法理解为什么它适用于类似的东西:搜索001的列表不会针对以下列表产生任何结果测试001测试002测试003测试004但是任何其他搜索都会产生结果(例如t00或Test)更新基本上,我在寻找为什么当我使用contains并且值匹配字符串的结尾而

c# - 无法将类型 'T' 隐式转换为 'Int'

当尝试在我的代码中调用此函数时,出现标题错误。此外,运算符'+='不能应用于'int'和'T'类型的操作数publicintChange(Statstype,Tvalue){Dictionarytemp=newDictionary();temp=sql.Query(string.Format("SELECT{0}FROMplayerWHEREfbId='{1}'",type.ToString(),FBId));if(typeof(T)==typeof(int)){intt=Convert.ToInt16(temp[type.ToString()]);t+=value;if(t我使用以下

c# - 将 BYTE 数组转换为 INT

我有这种代码staticvoidMain(string[]args){byte[]array=newbyte[2]{0x00,0x1f};Console.WriteLine(BitConverter.ToInt32(array,0));}但是它不起作用。它抛出异常:Destinationarrayisnotlongenoughtocopyalltheitemsinthecollection.Checkarrayindexandlength.怎么了? 最佳答案 顾名思义,一个Int32是32位,即4个字节,所以如果要将字节数组转换为I

c# - 编译器错误 : "error CS0307: The variable ' int' cannot be used with type arguments"

如果我有以下代码:privatevoidCheck(boola,boolb){}privatevoidCheck(inta,intb,intc,boolflag){Check(a(flag?c:b-10));}我在调用Check(int,int)时遇到编译时错误:errorCS0307:Thevariable'int'cannotbeusedwithtypearguments我也遇到了这些错误:errorCS0118:'b'isavariablebutisusedlikeatypeerrorCS0118:'a'isavariablebutisusedlikeatype为什么会出现这些错

c# - 是否需要在替换 StringBuilder 中的字符串之前进行检查(使用 "Contains"或 "IndexOf"等函数)?

C#中是否有IndexOf或Contains方法。下面是代码:varsb=newStringBuilder(mystring);sb.Replace("abc","a");stringdateFormatString=sb.ToString();if(sb.ToString().Contains("def")){sb.Replace("def","aa");}if(sb.ToString().Contains("ghi")){sb.Replace("ghi","assd");}正如您可能已经注意到的那样,我在上面一次又一次地使用ToString(),我想避免这种情况,因为它每次都会创建

c# - 在 C 和 C# 中将 int 提升为 unsigned int

看看这段C代码:intmain(){unsignedinty=10;intx=-2;if(x>y)printf("xisgreater");elseprintf("yisgreater");return0;}/*Output:xisgreater.*/我明白为什么输出的x更大,因为当计算机比较两者时,x被提升为无符号整数类型。当x提升为无符号整数时,-2变为65534,这肯定大于10。但为什么在C#中,等效代码会给出相反的结果?publicstaticvoidMain(String[]args){uinty=10;intx=-2;if(x>y){Console.WriteLine("x