Tag: return value

当用作函数的返回值时,C#结构是否曾被装箱?

一个简单的问题,但我还没有在Stack Overflow上找到明确的答案。 struct foo { int x; int y; int z; } foo Func() { return new foo(); } void Func2() { foo f = Func(); // did boxing and unboxing occur? } 从函数返回时,C#struct(值类型)是否总是复制到堆栈中,无论它有多大? 我不确定的原因是,对于除MSIL之外的某些指令集(例如x86),返回值通常需要适合处理器寄存器,并且不直接涉及堆栈。 如果是这样,那么调用站点是否为CLR堆栈预先分配了(预期)值返回类型的空间? [编辑:回复摘要:]对于原始问题的意图,答案是否定的; CLR永远不会(默默地)将结构化为仅仅为了将其作为返回值发送。

WCF服务应该返回普通的旧对象,还是您正在使用的实际类?

我正在从另一家公司使用WCF服务,它正在返回一个object类型的object 。 有没有理由不返回实际的类,并返回一个必须强制转换为正确forms的对象? 例如,如果Web服务返回OrderStatus类型的对象,为什么要返回一个普通的旧object ? 如果我错了,请纠正我,但这需要我手动(通过电子邮件或其他)获取OrderStatus类的定义,并将其放入我的解决方案中。 另外,我必须将对象显式地转换为OrderStatus对象。 更不用说公司可以更改服务以返回另一种类型的对象,我的代码将停止工作。 如果服务的返回值是OrderStatus类型的对象,那么该类会自动为我生成吗?

为什么我在这种情况下打印出System.char ?

我想弄清楚我在这里做错了什么,但我似乎无法做到。 我有这个方法,它接受一个字符串并反转它。 但是,当我从调用方法打印出反向字符串时,我只得到“System.Char []”而不是实际的反向字符串。 static string reverseString(string toReverse) { char[] reversedString = toReverse.ToCharArray(); Array.Reverse(reversedString); return reversedString.ToString(); }

T-SQL:将新的INSERT标识返回给C#

我正在使用存储过程将值放入SQL Server。 过程将向添加的行添加ID。 我需要将此ID返回到我的代码中。 目前我可以在Visual Studio的OUTPUT窗口中看到输出ID,但似乎无法在我的代码中捕获它。 以下是proc的摘要版本: SQL : CREATE PROCEDURE dbo.DoSomething ( @var1 INT = NULL, @var2 INT = NULL, @var3 DATE = NULL ) AS BEGIN INSERT INTO atable ( vara, varb, varc ) VALUES ( @var1, @var2, @var3 ) RETURN SCOPE_IDENTITY() END C#: int result = 0; /// create command SqlCommand cmd […]

Filestream.Read的返回值是什么意思? 如何以块的forms读取数据并进行处理?

我对C#很新,所以请耐心等待。 我正在读取(使用FileStream)数据(固定大小)到小数组,处理数据然后再读取,依此类推到文件末尾。 我想过用这样的东西: byte[] data = new byte[30]; int numBytesToRead = (int)fStream.Length; int offset = 0; //reading while (numBytesToRead > 0) { fStream.Read(data, offset, 30); offset += 30; numBytesToRead -= 30; //do something with the data } 但我检查了文档及其示例,他们表示上述读取方法的返回值为: “类型:System.Int32读入缓冲区的总字节数。如果该字节数当前不可用 ,则可能小于请求的字节数,如果到达流末尾则为零。” 它们目前不可用是什么意思,这在读取少量数据时是否真的会发生,或者这只是大量数据? 如果只是为了大,大约有多大,因为我也会在其他地方阅读更大的块。 如果这种情况随时可能发生,我应该如何更改代码,以便代码仍能有效执行? 谢谢你的时间和答案。

通过EventHandler传回返回值

我试图写入API,我需要在从表中获取数据时调用eventhandler。 像这样的东西: public override bool Run(Company.API api) { SomeInfo _someInfo = new SomeInfo(); if (_someInfo.Results == 1) return true; else return false; using (MyTable table = new MyTable(api)) { table.WhenData += new EventHandler<DataEventArgs>(table_WhenData); table.WhenDead += new EventHandler(table_WhenDead); table.Start(); } public void table_WhenData(object sender, DataEventArgs e) { return true; } 我遇到的问题是我不知道如何将返回值从table_WhenData传递回Run方法。 我尝试了很多方法(比如尝试将_someInfo传递给方法),但我似乎无法正确使用语法。 任何建议都非常感谢。