草庐IT

ref-parameters

全部标签

c# - 无效方差 : The type parameter 'T' must be contravariantly valid on 'UserQuery.IItem<T>.ItemList' . 'T' 是协变的

这个问题在这里已经有了答案:Tmustbecontravariantlyvalid(3个答案)关闭3年前。为什么方法可以编译,属性却报错?publicinterfaceIFoo{}publicinterfaceIBarwhereT:IFoo{}publicinterfaceIItemwhereT:IFoo{//IEnumerable>GetList();//worksIEnumerable>ItemList{get;set;}//Error!}错误:Invalidvariance:Thetypeparameter'T'mustbecontravariantlyvalidon'UserQ

c# 在 SqlDataAdapter 中使用 Parameters.AddWithValue

如何将Parameters.AddWithValue与SqlDataAdapter结合使用。在搜索代码下方。varda=newSqlDataAdapter("SELECT*FROMannotationsWHEREannotationLIKE'%"+txtSearch.Text+"%'",_mssqlCon.connection);vardt=newDataTable();da.Fill(dt);我重写了这样的代码:SqlDataAdapterda;da=newSqlDataAdapter("SELECT*FROMannotationsWHEREannotationLIKE'%@sear

c# - 使用 LINQ 在列表中查找项目但得到 "Value cannot be null. Parameter name: source"

当使用LINQ从列表中获取数据时,我遇到了这个错误。如何解决?Valuecannotbenull.Parametername:sourcevarnCounts=fromsaleinsalselectnew{SaleID=sale.OrderID,LineItem=fromsliinsale.LineItemsgroupslibysli.ItemintoItemGroupselectnew{Item=ItemGroup.Key,Weeks=ItemGroup.Select(s=>s.Week)}};foreach(variteminnCounts){foreach(varitmssini

c# - 无法在扩展方法中对第一个 ("this") 参数使用 ref 和 out?

为什么禁止使用ref修饰符调用ExtensionMethod?这是可能的:publicstaticvoidChange(refTestClasstestClass,TestClasstestClass2){testClass=testClass2;}而这个不是:publicstaticvoidChangeWithExtensionMethod(thisrefTestClasstestClass,TestClasstestClass2){testClass=testClass2;}但为什么呢? 最佳答案 您必须明确指定ref和out。

c# - 是否可以将属性作为 "out"或 "ref"参数传递?

如果不能,我可以将属性作为“out”或“ref”参数传递吗?为什么不呢?例如Personp=newPerson();...publicvoidTest(outp.Name); 最佳答案 很抱歉回答很简短,但是不行,C#语言规范不允许这样做。查看此answer到另一个问题,看看当你尝试时会发生什么。它还说明了为什么您不应该将该属性设置为公共(public)字段来绕过限制。希望对你有帮助编辑:你问为什么?您将变量传递给out或ref参数,您实际上传递的是变量的地址(或内存中的位置)。在函数内部,编译器知道变量的实际位置,并获取值并将值写

c# - 与 Parameters.Add 和 Parameters.AddWithValue 的区别

基本上Commands有Parameters,参数有Add、AddWithValue等函数。在所有教程中我已经看到,我通常注意到他们使用的是Add而不是AddWithValue。.Parameters.Add("@ID",SqlDbType.Int)对比.Parameters.AddWithValue("@ID",1)是否有理由不使用AddWithValue?我更愿意使用它Parameters.Add("@ID",SqlDbType.Int,4).Value=1因为它节省了我的编码时间。那么哪个更好用呢?哪个使用安全?它会提高性能吗? 最佳答案

C#:如何将 null 传递给需要 ref 的函数?

我有以下功能:publicstaticexternuintFILES_GetMemoryMapping([MarshalAs(UnmanagedType.LPStr)]stringpPathFile,outushortSize,[MarshalAs(UnmanagedType.LPStr)]stringMapName,outushortPacketSize,refMappingoMapping,outbytePagesPerSector);我想这样调用它:FILES_GetMemoryMapping(MapFile,outsize,MapName,outPacketSize,null,

c# - "Parameter not valid"加载System.Drawing.Image异常

为什么我的代码中出现“参数无效”异常:MemoryStreamms=newMemoryStream(byteArrayIn);System.Drawing.ImagereturnImage=System.Drawing.Image.FromStream(ms);byteArrayIn的长度是169014。尽管其中没有任何值大于255,但我得到了这个异常。 最佳答案 我遇到了同样的问题,现在显然已经解决了,尽管这个和其他一些gdi+异常非常具有误导性,但我发现实际上问题在于发送到Bitmap构造函数的参数无效。我有这段代码:using

c# - C# 4.0 的新功能 - "Optional Parameters"CLS 兼容吗?

这个新功能真的很方便。最近看了《MicrosoftAll-In-OneCodeFramework》的文档,里面提到“OptionalParameters”不符合CLS。所以我通过在公共(public)API中使用“可选参数”对其进行了测试,并打开了FxCop,然后我进行了编译,FxCop没有提示任何事情。与此同时,当我添加一个返回类型为uint的API时,FxCop确实报告了一个警告。所以现在我很困惑,“可选参数”是否符合CLS?确定新语言功能是否符合CLS的最佳方法是什么? 最佳答案 可选参数“有点”符合CLS。带有可选参数的方法

C# "Parameter is not valid."创建新位图

如果我尝试创建大于19000像素的位图,我会收到错误消息:参数无效。我该如何解决这个问题??System.Drawing.Bitmapmyimage=newSystem.Drawing.Bitmap(20000,20000); 最佳答案 请记住,您正尝试使用该位图分配大量内存。引用http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/37684999-62c7-4c41-8167-745a2b486583/.NET可能会拒绝创建一个一次性耗尽那么多连续内存的图像。