Использовать varchar или текст для динамического поля в mysql?

Используя AES или реализацию AES? Для использования AES существует Система. Безопасность. Криптография. Класс RijndaelManaged.

29
задан Community 23 May 2017 в 12:17
поделиться

4 ответа

1117 Это лямбда-выражение. Это особенный анонимный делегат. По сути, вы определяете метод, а не даете имя. Его параметры находятся слева от =>, а тело метода - справа от =>. В вашем конкретном случае

(se, cert, chain, sslerror) => { return true; };

- это анонимный метод, определенный лямбда-выражением. Этот конкретный метод имеет четыре параметра

object se
X509Certificate cert
X509Chain chain
SslPolicyErrors sslerror

, а тело метода -

return true;

Это как если бы вы сказали

class ServerCertificateValidation {
    public bool OnRemoteCertificateValidation(
        object se,
        X509Certificate cert,
        X509Chain chain,
        SslPolicyErrors sslerror
    ) {
        return true;
    }
}

и затем

var validation = new ServerCertificateValidation();
System.Net.ServicePointManager.ServerCertificateValidationCallback +=
    validation.OnRemoteCertificateValidation;

Как вызывается эта (blah,blah,blah)=>{return true;} конструкция и где я могу найти больше информации о таких конструкциях?

Она называется так же, как и любой другой метод. Например, вы можете сделать это:

Func<int, int, int> adder = (m, n) => m + n;

Здесь я определяю метод, который съедает пару из int и возвращает int. Это int получается путем сложения значений входных параметров. Он может быть вызван как любой другой метод.

int four = adder(2, 2); 

Вот статья на MSDN о лямбда-выражениях и статья об лямбда-операторе . Если вам действительно интересно, название происходит от лямбда-исчисления .

71
ответ дан 28 November 2019 в 00:47
поделиться

Джейсон объясняет это очень хорошо. Вот пример использования события, которое прослушивается с использованием разных методов:

using System;

namespace Events
{
   class Program
    {
        static void Main(string[] args)
        {
            Events e = new Events();
            e.FireEvents();
            Console.ReadLine();
        }
    }

    public class Events
    {
        private event EventHandler<EventArgs> EventTest;

        public Events()
        {
            EventTest += new EventHandler<EventArgs>(function);

            EventTest += delegate
            {
                Console.WriteLine("written by an anonymous method.");
            };

            EventTest += (o, e) =>
            {
                Console.WriteLine("written by a lambda expression");
            };
        }

        private void function(object sender, EventArgs e)
        {
            Console.WriteLine("written by a function.");
        }

        public void FireEvents()
        {
            if (EventTest != null)
                EventTest(this, new EventArgs()); 
        }
    }
}
2
ответ дан 28 November 2019 в 00:47
поделиться

Для полноты (для результатов поиска и т. Д.): В более поздних версиях C # (начиная с 6.0) синтаксис => был расширен с просто лямбда-выражений для делегатов и деревьев выражений, чтобы охватить членов с выражением тела . Это означает, что ряд простых членов, таких как свойства, методы и т. Д., Могут быть реализованы как тела выражений; например:

public int Foo { get { return innerObj.SomeProp; } }
public void Bar() { Write("Thing"); }

можно записать:

public int Foo => innerObj.SomeProp;
public void Bar() => Write("Thing");
4
ответ дан 28 November 2019 в 00:47
поделиться

=> -оператор представляет лямбда-выражение.

Но для тех из вас, кто посещает этот вопрос в настоящее время, другой вариант использования может быть стрелкой в ​​качестве сокращения для получателя собственности. Эта функция появилась в C # 6. Поэтому вместо записи

public string Foo
{
    get
    {
        return this.bar;
    }
}

вы можете использовать следующий фрагмент:

public string Foo 
{
    get => this.bar;
}

или даже короче:

public string Foo => this.bar;
2
ответ дан 28 November 2019 в 00:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: