相关疑难解决方法(0)

C#的隐藏功能?

在我从这个问题中学到以下内容后,我想到了这一点:

where T : struct
Run Code Online (Sandbox Code Playgroud)

我们C#开发人员都知道C#的基础知识.我的意思是声明,条件,循环,运算符等.

我们中的一些人甚至掌握了Generics,匿名类型,lambdas,LINQ等......

但是C#粉丝,瘾君子,专家几乎都不知道C#最隐藏的功能或技巧是什么?

以下是到目前为止显示的功能:


关键词

属性

c# hidden-features

1475
推荐指数
230
解决办法
68万
查看次数

什么是.NET中的'闭包'?

什么是关闭?我们在.NET中有它们吗?


如果它们确实存在于.NET中,您能否提供一个代码片段(最好用C#)来解释它?


编辑:我浏览了Jon Skeet的文章,了解什么是闭包以及如何在.NET中使用它们.

.net closures

190
推荐指数
4
解决办法
4万
查看次数

哪里与foreach与if - 为什么不同的结果?

这段代码

using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApplication
{
    internal class Program
    {
        public static void Main()
        {
            var values = new[] {1, 2, 3, 3, 2, 1, 4};
            var distinctValues = GetDistinctValuesUsingWhere(values);
            Console.WriteLine("GetDistinctValuesUsingWhere No1: " + string.Join(",", distinctValues));
            Console.WriteLine("GetDistinctValuesUsingWhere No2: " + string.Join(",", distinctValues));
            distinctValues = GetDistinctValuesUsingForEach(values);
            Console.WriteLine("GetDistinctValuesUsingForEach No1: " + string.Join(",", distinctValues));
            Console.WriteLine("GetDistinctValuesUsingForEach No2: " + string.Join(",", distinctValues));
            Console.ReadLine();
        }

        private static IEnumerable<T> GetDistinctValuesUsingWhere<T>(IEnumerable<T> items)
        {
            var set=new HashSet<T>();
            return items.Where(i=> set.Add(i));
        }

        private static IEnumerable<T> GetDistinctValuesUsingForEach<T>(IEnumerable<T> …
Run Code Online (Sandbox Code Playgroud)

.net c# closures

7
推荐指数
2
解决办法
248
查看次数

将参数传递给委托 c#

我有一个问题,我希望向委托添加函数调用,但每个函数调用都有一个唯一的参数。我无法弄清楚或在其他地方找到解决方案,所以我转向你们:)

下面一些伪..

(所以基本上,我正在创建一个委托和一个事件,并且 AddToDelegate 函数应该将函数调用添加到事件(具有唯一值),然后 GetData 函数返回一个字符串中的所有响应 -问题出在AddToDelegate 函数作为该行a += new A(SomeFunc)(i.ToString());实际上应该只是一个+= new A(SomeFunc);)

有没有办法与代表一起做到这一点 - 或者我是否在错误的树上咆哮?

public delegate string A(string s);
public event A a;

public void AddToDelegate()
{
    for (int i = 0; i < DelegateList.Length; i++)
    {
        a += new A(SomeFunc)(i.ToString());
    }
}

public string GetData()
{
    StringBuilder _sb = new StringBuilder();
    if (a != null)
    {
        Delegate[] DelegateList = a.GetInvocationList();
        for (int i = 0; i < DelegateList.Length; i++)
        {
            _sb.Append(((A)DelegateList[i])); …
Run Code Online (Sandbox Code Playgroud)

c# delegates

5
推荐指数
1
解决办法
7775
查看次数

有没有办法在泛型方法中提供任意数量的类型?

我的意思是我有一个这样的方法:

public static void CrossThreadUpdate<T1, T2, T3>(this Form form, Action<T1, T2, T3> action, object[] parms)
{
    form.BeginInvoke(action, parms);
}
Run Code Online (Sandbox Code Playgroud)

但我不想创建相同的功能,因为<T1>, <T1, T2>, <T1, T2, T3>, <T1, T2, T3, T4>, etc.我正在想象类似于Foo(params string[] bar).

c#

0
推荐指数
1
解决办法
87
查看次数

标签 统计

c# ×4

.net ×2

closures ×2

delegates ×1

hidden-features ×1