С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/42: Рейтинг темы: голосов - 42, средняя оценка - 4.62
4 / 4 / 0
Регистрация: 17.05.2011
Сообщений: 262
1

Аналог memset или FillChar в С#

17.08.2011, 05:30. Показов 8091. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создаю массив
C#
1
byte[] buffer = new byte[32];
Как его обнулить, не в цикле?
0
IT_Exp
Эксперт
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
Блог
17.08.2011, 05:30
Ответы с готовыми решениями:

Аналог memset() из C++ в C#
Какая функция в C# выполняет то же что и memset() из C++?

Есть ли аналог memset
есть ли какой нибудь аналог memset в шарпе? я вот тут для себя только что открыл такую классную...

Нужен аналог FillChar из TP
Привет всем=) Смотрю тут старые лекции одной компьютерной школы , заметил что там используют...

Можно ли очистить массив с помощью FillChar
Имею массив var arr:array of String; Можно ли его очистить с помощью FillChar? ...

21
6287 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
17.08.2011, 20:35 2
C#
1
byte[] buffer = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
Добавлено через 39 секунд
C#
1
byte[] buffer = Enumerable.Repeat((byte)0, 32).ToArray();
1
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
17.08.2011, 20:37 3
разве так не происходит обнуление?

C#
1
byte[] buffer = new byte[32]();
Добавлено через 36 секунд
или так
C#
1
byte[] arr = new byte[32] { 0 };
0
4 / 4 / 0
Регистрация: 17.05.2011
Сообщений: 262
21.08.2011, 10:45  [ТС] 4
Цитата Сообщение от Maxwe11 Посмотреть сообщение
разве так не происходит обнуление?

C#
1
byte[] buffer = new byte[32]();
Добавлено через 36 секунд
или так
C#
1
byte[] arr = new byte[32] { 0 };
Оба способа не работают

Добавлено через 54 секунды
Цитата Сообщение от Петррр
C#
1
byte[] buffer = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
а если в массиве сотни тысяч элементов, нули печатать не замучаетесь?
0
6287 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
21.08.2011, 11:02 5
А разве там не нули уже?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
 
class Program
{
    public static void Write(byte b)
    {
        Console.Write(b + " ");
    }
    static void Main(string[] args)
    {
        byte[] b = new byte[32];
        Array.ForEach(b, Write);
        Console.ReadKey(true);
    }
}
0
4 / 4 / 0
Регистрация: 17.05.2011
Сообщений: 262
21.08.2011, 11:09  [ТС] 6
Цитата Сообщение от Петррр Посмотреть сообщение
А разве там не нули уже?
А разве
memset или FillChar только нули могут записывать?
0
6287 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
21.08.2011, 11:22 7
Вы бы хотя бы потрудились сказать что делают эти функции и из какого они языка. В сообщениии написано
Цитата Сообщение от ikari81 Посмотреть сообщение
Как его обнулить, не в цикле?
Более я ничего там не видел.

Добавлено через 5 минут
C#
1
2
3
4
5
public static void FillChar<T>(T[] array, T value)
{
    for (int i = 0; i < array.Length; i++)
        array[i] = value;
}
0
4 / 4 / 0
Регистрация: 17.05.2011
Сообщений: 262
21.08.2011, 11:37  [ТС] 8
Цитата Сообщение от Петррр Посмотреть сообщение
Вы бы хотя бы потрудились сказать что делают эти функции и из какого они языка. В сообщениии написано

Более я ничего там не видел.
Ну обнуление это частный случай. Думал что тут сидят люди, для которых С# не первый язык.
Добавлено через 5 минут
C#
1
2
3
4
5
public static void FillChar<T>(T[] array, T value)
{
    for (int i = 0; i < array.Length; i++)
        array[i] = value;
}
Так и сделал в цикле, только без метода.
0
826 / 717 / 110
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
21.08.2011, 12:37 9
Цитата Сообщение от ikari81 Посмотреть сообщение
Создаю массив
C#
1
byte[] buffer = new byte[32];
Как его обнулить, не в цикле?
Походу, только у вас это не работает

PS.
Можно ещё так заполнять начальными элементами:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
using System.Linq;
 
namespace ConsoleApplicationTest {
    public static class Program {
        private static void Main() {
            byte[] arr = Enumerable.Repeat( (byte)1, 10 ).ToArray();
 
            foreach ( byte b in arr ) {
                Console.WriteLine( b );
            }
 
            Console.ReadKey();
        }
    }
}
0
4 / 4 / 0
Регистрация: 17.05.2011
Сообщений: 262
21.08.2011, 13:24  [ТС] 10
Цитата Сообщение от Unril Посмотреть сообщение
Походу, только у вас это не работает
потрудитесь читать полностью, объявление массива
C#
1
byte[] buffer = new byte[32];
работает, Заполнение его вот так:
C#
1
byte[] buffer = new byte[32]();
C#
1
byte[] arr = new byte[32] { 0 };
нет.
0
311 / 249 / 44
Регистрация: 06.12.2010
Сообщений: 527
21.08.2011, 17:02 11
Цитата Сообщение от ikari81 Посмотреть сообщение
C#
1
byte[] buffer = new byte[32]();
C#
1
byte[] arr = new byte[32];
У вас массив размером 32, а Вы заполняете его 1 элементом.
0
4 / 4 / 0
Регистрация: 17.05.2011
Сообщений: 262
21.08.2011, 17:05  [ТС] 12
Цитата Сообщение от umnick_kh Посмотреть сообщение
У вас массив размером 32, а Вы заполняете его 1 элементом.
если Вы внимательно читаете тему с начала, то заметите, что это не я так делаю, это мне так советуют.
0
311 / 249 / 44
Регистрация: 06.12.2010
Сообщений: 527
21.08.2011, 18:06 13
Array.Clear - оно?
0
4 / 4 / 0
Регистрация: 17.05.2011
Сообщений: 262
21.08.2011, 18:09  [ТС] 14
Цитата Сообщение от umnick_kh Посмотреть сообщение
Array.Clear - оно?
Да, практически оно.
0
Jupiter
22.08.2011, 02:49
  #15

Не по теме:

Цитата Сообщение от ikari81 Посмотреть сообщение
Оба способа не работают
в великом С# нельзя вызвать конструктор при создании массива?=-O

0
4 / 4 / 0
Регистрация: 17.05.2011
Сообщений: 262
22.08.2011, 05:28  [ТС] 16
Цитата Сообщение от Maxwe11 Посмотреть сообщение

Не по теме:


в великом С# нельзя вызвать конструктор при создании массива?=-O

без понятия

Добавлено через 1 час 38 минут
Я ведь тут жду конкретных рабочих примеров, а не риторических вопросов.
0
6287 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
22.08.2011, 06:18 17
Какая разница каким образом обнулять массив? Почему Вы не хотите воспользоваться Enumerable? В любой случае FillChar тоже функция и имеет свою реализацию в каком-нибудь модуле, так же как и memset. Поэтому не понимаю почему Вы не хотите воспользоваться методотом, который дал я.
0
4 / 4 / 0
Регистрация: 17.05.2011
Сообщений: 262
22.08.2011, 06:54  [ТС] 18
Цитата Сообщение от Петррр Посмотреть сообщение
Какая разница каким образом обнулять массив? Почему Вы не хотите воспользоваться Enumerable? В любой случае FillChar тоже функция и имеет свою реализацию в каком-нибудь модуле, так же как и memset. Поэтому не понимаю почему Вы не хотите воспользоваться методотом, который дал я.
потому что есть разница в n-ом количестве call'ов и простой записью в ячейки
0
6287 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
22.08.2011, 08:28 19
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
using System.Linq;
 
class Program
{
    static unsafe void Main(string[] args)
    {
        Random random = new Random();
        byte[] buffer = Enumerable.Repeat(0, 32).Select(x => (byte)random.Next(0, 10)).ToArray();
        Console.WriteLine(string.Join(" ", buffer.Select(x => x.ToString()).ToArray()));
        fixed (byte* ptr = buffer)
        {
            for (byte i = 0; i < buffer.Length; i++)
                ptr[i] = 0;
        }
        Console.WriteLine(string.Join(" ", buffer.Select(x => x.ToString()).ToArray()));
        Console.ReadKey(true);
    }
}
0
4 / 4 / 0
Регистрация: 17.05.2011
Сообщений: 262
22.08.2011, 09:39  [ТС] 20
Цитата Сообщение от Петррр Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
using System.Linq;
 
class Program
{
    static unsafe void Main(string[] args)
    {
        Random random = new Random();
        byte[] buffer = Enumerable.Repeat(0, 32).Select(x => (byte)random.Next(0, 10)).ToArray();
        Console.WriteLine(string.Join(" ", buffer.Select(x => x.ToString()).ToArray()));
        fixed (byte* ptr = buffer)
        {
            for (byte i = 0; i < buffer.Length; i++)
                ptr[i] = 0;
        }
        Console.WriteLine(string.Join(" ", buffer.Select(x => x.ToString()).ToArray()));
        Console.ReadKey(true);
    }
}
http://msdn.microsoft.com/ru-r... eehz6.aspx - скромно и со вкусом, всего один call и готово
0
22.08.2011, 09:39
BasicMan
Эксперт
19315 / 2622 / 84
Регистрация: 17.02.2009
Сообщений: 10,364
Блог
22.08.2011, 09:39
Помогаю со студенческими работами здесь

memset()
Здравсвуйте. У меня возник вопрос касательно memset().Есть код: #include &lt;iostream&gt; #include...

memset
Попробовал потренироватся, как работает функция мемсет. Вот попробовал самый простенький код, но...

по поводу memset
здравствуйте, есть, допустим, такой код(rtti включен): struct img { virtual void a() = 0; };...

Не найден memset
День добрый во время выполнения кода SCARD_READERSTATEA state;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Блоги программистов
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного суматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(шес­­­­­­­­­­­­­­­ти­б­и­т­н­ы­й асихронный счётчик с управляющим сигналом заде
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
Применение компонентов PrimeVue в Vue.js 3 на TypeScript
BasicMan 04.01.2025
Введение в PrimeVue и настройка окружения PrimeVue представляет собой мощную библиотеку компонентов пользовательского интерфейса для Vue. js 3, которая предоставляет разработчикам богатый набор. . .
Как стать Senior developer
cpp_developer 04.01.2025
В современной индустрии разработки программного обеспечения позиция Senior Developer представляет собой не просто следующую ступень карьерной лестницы, а качественно новый уровень профессионального. . .
Что известно о дате выхода Windows 12 и чего от нее ждать
IT_Exp 04.01.2025
В мире технологий постоянно происходят изменения, и операционные системы не являются исключением. Windows 11, выпущенная в октябре 2021 года, принесла множество инноваций и улучшений, но. . .
Что новенького в .NET Core 9
Programming 04.01.2025
Обзор ключевых изменений в . NET Core 9 Платформа . NET Core продолжает активно развиваться, и версия 9 представляет собой значительный шаг вперед в эволюции этой технологии. Новый релиз. . .
Инструкция по установке python3.13.1 в Debian 12
AlexSky-coder 03.01.2025
sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget. . .
Затестил триггеры. архив проекта прилагаю с GOA файлами в настройках архиватора проектов.
Hrethgir 03.01.2025
В этот раз нет закольцованности, потому что от неё только глюки, как я понял, логика не вырезанная. Триггеры очень быстрые если верить измерениям с помощью анализатора от Gowin. Есть ещё регистры,. . .
Python в помощь DevOps
IT_Exp 03.01.2025
Причины использования Python в работе DevOps Python стал неотъемлемой частью мира DevOps, и это не случайно. Этот язык программирования обладает множеством преимуществ, которые делают его. . .
Angular vs React vs Vue.js
BasicMan 03.01.2025
О, друзья-разработчики и просто любопытные читатели! Сегодня мы отправимся в увлекательное путешествие по миру фронтенд-разработки, и первой остановкой станет Angular – этакий строгий немецкий. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru