标签: lambda

C#Action Lambda代码块的局限性

C#.NET 3.5.我试图理解C#Action对象的内在限制.在lamda(实际上是那些lamdas?)中,我们可以执行赋值,调用函数,甚至执行三元运算,但是我们不能执行多语句操作.

这是因为单语句执行只是将它包装在委托中的语法糖吗?为什么下面的第一个例子不起作用?

public class MyClass
{
    private int m_Count = 0;

    public void Test()
    {
        int value = 0;

        // Does not work, throws compile error
        Action action = () => { if(m_Count < 10) m_Count++; value = m_Count; }

        // Works
        Action action2 = () => value = delegate(){ 
            if(m_Count < 10) 
                m_Count++; 

            return m_Count;
        };

        // Works
        Action action3 = () => value = m_Count;

        // Works
        Action action4 = () => value = m_Count < 10 …
Run Code Online (Sandbox Code Playgroud)

c# lambda .net-3.5

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

C++中的简单文本菜单

我正在用C++编写一个愚蠢的小应用程序来测试我的一个库.我希望应用程序向用户显示命令列表,允许用户键入命令,然后执行与该命令关联的操作.听起来很简单.在C#中,我最终会编写一个命令列表/映射,如下所示:

    class MenuItem
    {
        public MenuItem(string cmd, string desc, Action action)
        {
            Command = cmd;
            Description = desc;
            Action = action;
        }

        public string Command { get; private set; }
        public string Description { get; private set; }
        public Action Action { get; private set; }
    }

    static void Main(string[] args)
    {
        var items = new List<MenuItem>();

        items.Add(new MenuItem(
            "add",
            "Adds 1 and 2",
            ()=> Console.WriteLine(1+2)));
    }
Run Code Online (Sandbox Code Playgroud)

有关如何在C++中实现此目的的任何建议?我真的不想为每个命令定义单独的类/函数.我可以使用Boost,但不能使用TR1.

c++ lambda text closures menu

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

正确使用Lambda查询

请考虑以下代码:

       private static void WriteProcesses(StreamWriter sw, DateTime d) {
            sw.WriteLine("List of processes @ " + d.ToString());
            Process[] localAll = Process.GetProcesses().Where(o => o.ProcessName.ToLower() != "svchost");            
            if(localAll.Length > 0) {
                for(int i = 0; i < localAll.Length; i++) {                    
                    sw.WriteLine("      " + localAll[i].ProcessName);
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

但我得到一条红色的波浪线说:

无法将类型System.Collections.Generic.IEnumerable'隐式转换为'System.Diagnostics.Process []'.存在显式转换(您是否错过了演员?)

我尝试将数组更改为List但没有工作.

.net c# linq lambda

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

我的自定义线程池有什么问题?

我已经创建了一个自定义线程池实用程序,但似乎有一个我找不到的问题.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading;

namespace iWallpaper.S3Uploader
{
public class QueueManager<T>
{
    private readonly Queue queue = Queue.Synchronized(new Queue());
    private readonly AutoResetEvent res = new AutoResetEvent(true);
    private readonly AutoResetEvent res_thr = new AutoResetEvent(true);
    private readonly Semaphore sem = new Semaphore(1, 4);
    private readonly Thread thread;
    private Action<T> DoWork;
    private int Num_Of_Threads;

    private QueueManager()
    {
        Num_Of_Threads = 0;
        maxThread = 5;
        thread = new Thread(Worker) {Name = "S3Uploader EventRegisterer"};
        thread.Start();

        //   log.Info(String.Format("{0} [QUEUE] FileUploadQueueManager created", DateTime.Now.ToLongTimeString()));
    } …
Run Code Online (Sandbox Code Playgroud)

.net c# lambda multithreading

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

Lambda问题

我正在尝试在C#3中学习lambda,并想知道如何使用lambdas编写这个函数:

假设您有Point3值的集合.

对于这些点中的每一点,p:

创建一个新的p,其中.Y是:

Math.Sin ((center - p).Length * f)
Run Code Online (Sandbox Code Playgroud)

center和f是要提供给函数的外部变量.Point3类型也将有一个带x,y,z值的构造函数.

.net c# lambda

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

使用foreach将字符串[]转换为字符串

string x;
foreach(var item in collection)
{
   x += item+",";
}
Run Code Online (Sandbox Code Playgroud)

我可以用lambdas写这样的东西吗?

c# lambda

0
推荐指数
2
解决办法
281
查看次数

在lambda表达式的谓词中使用和

如何在lambda表达式的谓词中使用"And".我正在努力实现像这样的
新Class1("Test",Status => Status == 18 && 19 && 20)

请回复

谢谢沙拉斯

.net c# lambda

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

谓词和lambda表达式

我最近搬到了.net 3.0(Windows窗体,C#).我想更多地了解谓词和lambda表达式.我们应该在哪里使用它们?他们是否提高了表现?以及他们如何在内部工作.谢谢.

c# lambda predicate

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

c#,lambda表达式,错误在哪里?

我有这个方法

    public static List<Contact> Load(string filename)
    {
        if (!File.Exists(filename))
        {
            throw new FileNotFoundException("Data file could not be found", filename);

        }
        var contacts = 
            System.Xml.Linq.XDocument.Load(filename).Root.Elements("Contact").Select
            (
                x => new Contact() { //errors out here, XXXXXX
                            FirstName = (string)x.Element("FirstName"),
                            LastName = (string)x.Element("LastName"),
                            Email = (string)x.Element("Email")
                         }
            );
        return contacts.ToList();// is this line correct?, it should return List...
    }
Run Code Online (Sandbox Code Playgroud)

我有Contact.xml和Contact元素.

<Contacts>
    <Contact>
        <FirstName>Mike</FirstName>
        <LastName>Phipps</LastName>
        <Email>mike@contoso.com</Email>
    </Contact>
    <Contact>
        <FirstName>Holly</FirstName>
        <LastName>Holt</LastName>
        <Email>holly@contoso.com</Email>
    </Contact>
    <Contact>
        <FirstName>Liz</FirstName>
        <LastName>Keyser</LastName>
    </Contact>
</Contacts>
Run Code Online (Sandbox Code Playgroud)

我有一个contact.cs与此代码

public class Contact
{
    public Contact(string …
Run Code Online (Sandbox Code Playgroud)

c# lambda

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

为什么自由函数可以工作,但 lambda 中的等效函数却无法编译?

以下get函数将使用可变参数返回一个字符串数组。它还通过简单地转换整数来处理提供整数的情况。我提供了这个转换函数的两个版本,一个是 lambda,另一个是自由函数。

请有人解释一下为什么使用 lambda 无法编译,而看似相同的自由函数却可以正常工作。需要进行哪些更改才能使 lambda 案例发挥作用?

#include <iostream>
#include <string>
#include <vector>
#include <ranges>
#include <format>
#include <array>
#include <type_traits>

// free function converter
template <typename KEY>
auto convert_to_string_view(const KEY& key)
{
    if constexpr (std::is_integral_v<KEY> && !std::is_same_v<KEY, bool>)
        return std::to_string(key);
    else
        return key;
}

// make an array out of varargs
template <typename T, typename... Args>
inline std::array<std::common_type_t<Args...>, sizeof...(Args)>
 make_array_from_vars(const Args&... args)
    requires (std::is_constructible_v<std::common_type_t<Args...>, Args> && ...)
{
    return { args... };
}



template<typename... KEYS>
auto get(KEYS... …
Run Code Online (Sandbox Code Playgroud)

c++ lambda c++23

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

标签 统计

lambda ×10

c# ×8

.net ×4

c++ ×2

.net-3.5 ×1

c++23 ×1

closures ×1

linq ×1

menu ×1

multithreading ×1

predicate ×1

text ×1