草庐IT

匿名管道

全部标签

c# - C# lambda 编译成什么?堆栈框架,匿名类型的实例,还是?

C#lambda编译成什么?堆栈框架、匿名类型的实例,还是?我读过这个question.这主要回答了“为什么”在使用隐式类型功能时不能使用lambda。但是,这个问题旨在回答编译器生成什么结构来实际执行lambda代码。它是匿名类型的方法调用(类似于在Java中实现接口(interface)的匿名类型?)还是它只是一个引用封闭变量并接受参数签名的堆栈框架?一些lambda不会关闭任何东西——因此会有2个不同的编译结果输出。 最佳答案 假设你的意思是“作为一个委托(delegate)”,那么它仍然取决于:p如果它捕获任何变量(包括“t

c# - 此代码返回不同的值。但是,我想要的是返回一个强类型集合而不是匿名类型

我有以下代码:varfoo=(fromdatainpivotedData.AsEnumerable()selectnew{Group=data.Field("Group_Number"),Study=data.Field("Study_Name")}).Distinct();正如预期的那样,这将返回不同的值。但是,我想要的是返回一个强类型集合而不是匿名类型,所以当我这样做时:varfoo=(fromdatainpivotedData.AsEnumerable()selectnewBarObject{Group=data.Field("Group_Number"),Study=data.

c# - 在匿名类型的属性名称中使用异常(exception)字符(减号)

问题我正在尝试使用名为data-maxchars的属性声明一个匿名类型.因为减号是一个运算符,它将我想要的属性名称降级(?)为一个操作,我得到一个编译错误:Invalidanonymoustypememberdeclarator.我知道我可以使用@转义保留字,但我不知道是否有任何方法可以转义减号。objectattributes=(object)new{@class="foo"}//OK起源匿名类型作为object传递TextAreaExtensions.TextArea的参数:.这会生成一个具有传递属性的输入。我想使用JS渐进增强来限制用户可以插入的字符数。所以我正在使用data-我

c# - 在 C# 中应该如何使用匿名类型?

我看过很多关于匿名类型如何工作的描述,但我不确定它们到底有什么用。在设计良好的程序中,可以使用匿名类型来解决哪些场景? 最佳答案 匿名类型与系统设计无关,甚至与类级别无关。它们是开发人员在编码时使用的工具。我什至不将匿名类型视为类型本身。我主要将它们用作方法级匿名元组。如果我查询数据库然后操作结果,我宁愿创建一个匿名类型并使用它,而不是声明一个永远不会在我的方法范围之外使用或知道的全新类型。例如:varquery=fromitemindatabase.Items//...selectnew{Id=item.Id,Name=item.

c# - 匿名委托(delegate)作为函数参数

我正在尝试将匿名委托(delegate)(无输入参数,无返回值)的参数传递给函数。像这样:privatefunctionDoSomething(delegatecmd){cmd();}然后,我想用这个函数来调用函数:DoSomething(delegate{Console.WriteLine("Hooah!");});我想要这种特定的方式,因为它易于使用的写作风格。可能吗? 最佳答案 正是出于此类目的,Microsoft创建了Action和Func.NET框架中的包装器类。这两个类都依赖于anonymousfunctions.如果不

c# - 匿名类型属性 setter

为什么匿名类型没有属性setter?vara=new{Text="Hello"};a.Text="World";//error 最佳答案 匿名类型在设计上是不可变的。匿名类型旨在保存值,表示值的类型不应该是可变的。此外,这会使它们在字典中变得不可靠,因为哈希码在创建后可能会发生变化。许多LINQ方法都使用字典,尤其是在延迟求值的情况下,具有可变类型的LINQ可能会导致微妙的神秘错误。 关于c#-匿名类型属性setter,我们在StackOverflow上找到一个类似的问题:

c# - LINQ vs Lambda vs 匿名方法 vs 委托(delegate)

谁能解释一下LINQ、Lambda、匿名方法和委托(delegate)的含义?这三者有何不同?一个可以替换另一个吗?我在谷歌搜索时没有得到任何具体答案 最佳答案 LINQ是一个宽泛的技术名称,涵盖了.NET3.5的大部分内容和C#3.0的变化;“用语言查询”等等。委托(delegate)相当于函数指针;一个“方法句柄”作为一个对象,如果你愿意的话,即Funcadd=(a,b)=>a+b;是一种编写我随后可以调用的委托(delegate)的方法。委托(delegate)还支持事件和其他回调方法。匿名方法是用于创建委托(delegate

c# - 如何从绑定(bind)到 List<T> 或匿名类型的绑定(bind)源中获取正确的映射名称以用于 DataGridTableStyle?

我正在尝试创建一个DataGridTableStyle对象,以便我可以控制DataGrid的列宽。我创建了一个绑定(bind)到列表的BindingSource对象。实际上,它绑定(bind)到通过Linq以下列方式创建的匿名类型列表(为了清楚我正在做的事情而更改了变量名称):ListmyList=newList(someCapacity);....populatethelistwithqueryfromdatabase....varquery=fromiinmyListselectnew{i.FieldA,i.FieldB,i.FieldC};myBindingSource.Data

c# - 在 C# 中将匿名对象作为参数传递

我在将匿名对象作为参数传递给方法时遇到问题。我想像在JavaScript中一样传递对象。示例:functionTest(obj){returnobj.txt;}console.log(Test({txt:"test"}));但在C#中,它会抛出许多异常:classTest{publicstaticstringTestMethod(IEnumerableobj){returnobj.txt;}}Console.WriteLine(Test.TestMethod(new{txt="test"}));异常(exception)情况:参数1:无法从“AnonymousType#1”转换为'Sy

c# - 我可以在 C# 中将 json 反序列化为匿名类型吗?

我从数据库中读取了一个很长的json。我只想要该json的一个属性。我有两个选择:一种。为该json创建一个接口(interface)并反序列化到该接口(interface)。(这是不是太过分了,因为我只需要一个属性?)b.找到我需要的子字符串(正则表达式?)首选哪个?更新:我正在使用.net3.5 最佳答案 你为什么不反序列化使用JSON.NET的“LINQtoJSON”方法(JObject等)并仅通过名称询问您需要的值?这是足够动态的,因此您不需要为一切创建接口(interface),但它比使用正则表达式要安全得多。JObjec