& Ldquo; Параметр & Rdquo; vs & ldquo; Аргумент & rdquo; [Дубликат]

Вы можете использовать HttpEncoder.HeaderNameValueEncode Method в .NET Framework 4.0 и выше.

Для предыдущих версий .NET Framework вы можете использовать собственный кодер, используя логику, указанную на странице справки HttpEncoder.HeaderNameValueEncode:

  • Все символы, значение Unicode которых меньше символа ASCII 32, кроме символа ASCII 9, кодируются URL-адресом в формате% NN, где N символов представляют шестнадцатеричные значения.
  • Символ ASCII 9 (символ горизонтальной вкладки) не кодируется URL.
  • Символ ASCII 127 кодируется как% 7F.
  • Все остальные символы не закодированы.

Обновление:

Как указывает OliverBock, метод HttpEncoder.HeaderNameValueEncode защищен и внутренне. Я пошел в проект с открытым исходным кодом Mono и нашел реализацию моно

void HeaderNameValueEncode (string headerName, string headerValue, out string encodedHeaderName, out string encodedHeaderValue)
{
        if (String.IsNullOrEmpty (headerName))
                encodedHeaderName = headerName;
        else
                encodedHeaderName = EncodeHeaderString (headerName);

        if (String.IsNullOrEmpty (headerValue))
                encodedHeaderValue = headerValue;
        else
                encodedHeaderValue = EncodeHeaderString (headerValue);
}

static void StringBuilderAppend (string s, ref StringBuilder sb)
{
        if (sb == null)
                sb = new StringBuilder (s);
        else
                sb.Append (s);
}

static string EncodeHeaderString (string input)
{
        StringBuilder sb = null;

        for (int i = 0; i < input.Length; i++) {
                char ch = input [i];

                if ((ch < 32 && ch != 9) || ch == 127)
                        StringBuilderAppend (String.Format ("%{0:x2}", (int)ch), ref sb);
        }

        if (sb != null)
                return sb.ToString ();

        return input;
}

Just FYI

[здесь] ( https://github.com/mono/mono/ блоб / ведущий / MCS / класс / System.Web / System.Web.Util / HttpEncoder.cs )

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

1 ответ

Параметр - это переменная, которая является частью сигнатуры метода (объявление метода). Аргумент - это выражение, используемое при вызове метода.

Рассмотрим следующий код:

void Foo(int i, float f)
{
    // Do things
}

void Bar()
{
    int anInt = 1;
    Foo(anInt, 2.0);
}

Здесь i и f - параметры, а anInt и 2.0 - аргументы.

936
ответ дан 22 November 2019 в 22:23
поделиться
Другие вопросы по тегам:

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