Форум Игромании
 
Регистрация
Справка

Программирование Создание, разработка и доработка различных игр и программного обеспечения

Ответ
 
Опции темы
Старый 02.10.2010, 15:06   #1
Пугатель
 
Аватар для [CCCP] Monster

 
Регистрация: 26.06.2005
Адрес: Москва, СССР
Сообщений: 6,102
Репутация: 1085 [+/-]
C#

C# (произносится си-шарп) — объектно-ориентированный язык программирования. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET. Компилятор с C# входит в стандартную установку самой .NET, поэтому программы на нём можно создавать и компилировать даже без инструментальных средств, вроде Visual Studio.

C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.

Переняв многое от своих предшественников — языков C++, Java, Delphi, Модула и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, C# не поддерживает множественное наследование классов (в отличие от C++).

Особенности языка:

Скрытый текст:
C# разрабатывался как язык программирования прикладного уровня для CLR и, как таковой, зависит, прежде всего, от возможностей самой CLR. Это касается, прежде всего, системы типов C#, которая отражает BCL. Присутствие или отсутствие тех или иных выразительных особенностей языка диктуется тем, может ли конкретная языковая особенность быть транслирована в соответствующие конструкции CLR. Так, с развитием CLR от версии 1.1 к 2.0 значительно обогатился и сам C#; подобного взаимодействия следует ожидать и в дальнейшем. (Однако эта закономерность была нарушена с выходом C# 3.0, представляющим собой расширения языка, не опирающиеся на расширения платформы .NET.) CLR предоставляет C#, как и всем другим .NET-ориентированным языкам, многие возможности, которых лишены «классические» языки программирования. Например, сборка мусора не реализована в самом C#, а производится CLR для программ, написанных на C# точно так же, как это делается для программ на VB.NET, J# и др.

Последний раз редактировалось Kentаvr; 02.10.2010 в 15:43.
[CCCP] Monster вне форума  
Отправить сообщение для [CCCP] Monster с помощью Skype™ Ответить с цитированием
Старый 02.10.2010, 15:46   #2
You, yes you!
 
Аватар для Kentаvr


 
Регистрация: 22.04.2007
Адрес: ۞_۞
Сообщений: 7,069
Репутация: 1595 [+/-]
По памяти отмечу, что наш усатый на первом-втором курсе из литературы особо напирал на Гради Буча, Эндрю Троелсена и Г. Шильда. Если кому нужно, второго могу и залить.
__________________
«Сплин. Мечты сбываются» via А. Васильев
twt ¦ lf ¦ vk | fb ¦ fc ¦ fs
ррррряяяф =* via Amelice

«Когда кругом вода, никто не заметит, как ты плачешь.
Главное — вытирать слезы, танцуя»
© =*
Kentаvr вне форума  
Отправить сообщение для Kentаvr с помощью ICQ Отправить сообщение для Kentаvr с помощью Yahoo Отправить сообщение для Kentаvr с помощью Skype™ Ответить с цитированием
Старый 03.10.2010, 12:19   #3
Dis is one half
 
Аватар для OneHalf
 
Регистрация: 19.10.2007
Адрес: Санкт-Петербург
Сообщений: 1,460
Репутация: 304 [+/-]
Просветите меня, как обрабатывать xml?
Есть у меня такой xml:
Код:
<?xml version="1.0" encoding="UTF-8"?>
<Model xmlns="http://www.esi-group.com/ns/VAOne" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.esi-group.com/ns/VAOne http://www.esi-us-rd.com/xml/schemas/VAOne/rev2/VAOne.xsd" name="Cube" note="">
	<Version>1.1.0</Version>
	<GlobalFrequencyDomain>
		<FrequencyDomain start_freq="16" end_freq="8000" domain_type="2"/>
	</GlobalFrequencyDomain>
	<SolveOptions override_wavefields="false" beam_flexure_x="true" beam_flexure_y="true" beam_extension="true" beam_torsion="true" plate_extension="true" plate_flexure="true" plate_shear="true" average_radeff="false" symmetric_SEA_matrix="true" acoustic_pressure="true" compute_variance="false" solution_type="eHybrid" hybrid_quick="false" hybrid_quicknum="6" vsea_steps="20" override_eigen_frequencies="false" eigenlocallow="-5" eigenlocalhi="17826" eigengloballow="-5" eigenglobalhi="10695.6" local_mass="true" local_modes="false" modes="true" override_local_eigen_frequencies="false" override_global_eigen_frequencies="false" superelement_analysis="false" senqset="500" recover_fe_rad_eff="true" recover_nodal_eu="true" overrideGlobalAcousticEigenFreqs="false" getLocalAcousticModesInBand="true" minGlobalAcousticEigenValueFreq="-5" maxGlobalAcousticEigenValueFreq="10695.6" getAcousticModes="true" recoverBEM="true" overrideFEAcousticJunctionEps="false" feacousticJunctionEps="1e-006" recoverFEAcoustic="true">
		<BulkDataCards/>
		<ControlCards/>
	</SolveOptions>
	<Nodes>
		<Node node_id="1" x="0" y="0" z="0"/>
		<Node node_id="2" x="0" y="1" z="0"/>
		<Node node_id="3" x="1" y="0" z="0"/>
		<Node node_id="4" x="1" y="1" z="0"/>
		<Node node_id="5" x="0" y="0" z="1"/>
		<Node node_id="6" x="0" y="1" z="1"/>
		<Node node_id="7" x="1" y="0" z="1"/>
		<Node node_id="8" x="1" y="1" z="1"/>
		<Node node_id="9" x="0.2" y="0.2" z="1"/>
		<Node node_id="10" x="0.2" y="0.8" z="1"/>
		<Node node_id="11" x="0.8" y="0.2" z="1"/>
...
...
Пытаюсь загрузить его в свою программу:
Код:
public class AutoSeaModel {
        public XmlDocument xDoc = new XmlDocument();
        public XmlElement xRoot;
        String fileName;

        public SortedDictionary<int, Node> nodes = new SortedDictionary<int, Node>();
        public SortedDictionary<int, Face> faces = new SortedDictionary<int, Face>();
        public SortedDictionary<String, Shell> shells = new SortedDictionary<String, Shell>();
        public SortedDictionary<String, Cavity> cavities = new SortedDictionary<String, Cavity>();

        public AutoSeaModel(String fileName)
        {
            this.fileName = fileName;
            xDoc.Load(fileName);
            xRoot = xDoc.DocumentElement;

            XmlNodeList xNodes = xDoc.SelectNodes("/Model/Nodes/Node");
            foreach(XmlElement xNode in xNodes) {
                Node newNode = new Node(this, xNode);
                nodes.Add(newNode.node_id, newNode);
            }

            XmlNodeList xFaces = xDoc.SelectNodes("/Model/Faces/FlatPlateFace");
            foreach (XmlElement xFace in xFaces)
            {
   ...
   ...
Вопрос мой в том, как использовать XPath?
По моим соображениям строка

XmlNodeList xNodes = xDoc.SelectNodes("/Model/Nodes/Node");

Должна вернуть набор XmlElement'ов, каждый из которых должен соответствовать строке типа

<Node node_id="1" x="0" y="0" z="0"/>

Но метод SelectNodes все время возвращает мне пустой список. Что я делаю не так?

Upd:
Все дело оказалось в пространстве имен XML. Помогла эта статья:
http://codehelper.ru/questions/102/n...ml-c-namespace

Последний раз редактировалось OneHalf; 03.10.2010 в 16:14.
OneHalf вне форума  
Отправить сообщение для OneHalf с помощью ICQ Отправить сообщение для OneHalf с помощью Skype™ Ответить с цитированием
Старый 22.01.2011, 21:08   #4
Игроман
 
Аватар для Bad Gateway

 
Регистрация: 26.09.2007
Сообщений: 2,425
Репутация скрыта [+/-]
Это вроде просто, но я не знаю как. Подскажите, если не трудно.
Скрытый текст:
__________________
502 Bad Gateway
nginx0.7.6
Bad Gateway вне форума  
Ответить с цитированием
Старый 31.01.2011, 01:14   #5
Юзер
 
Регистрация: 31.08.2005
Адрес: Далеко
Сообщений: 171
Репутация: -14 [+/-]
Bad Gateway, еще нужна помощь?
Berckyt вне форума  
Отправить сообщение для Berckyt с помощью ICQ Ответить с цитированием
Старый 31.01.2011, 02:03   #6
Гейммастер
 
Аватар для Mad-Dan
 
Регистрация: 07.06.2005
Адрес: unknow
Сообщений: 9,072
Репутация: 634 [+/-]
надо задать размер матрицы nxm, и после чего загнать в матрицу числа. Как создать матрицу я понимаю. Но как лучше заполнить матрицу, мне не совсем ясно. Вызывать каждый раз диалоговое окно и просить ввести в поле i,j элемент не вариант. Загонять из файла тоже. Возможно ли создать как-нибудь сразу таблицу, которую можно будет заполнить, после чего передать данные в массив?
__________________
Бывший Dart Luke

Мечтаю быть модером и всех банить.... Но ведь не дадут (((((

"cъел еретика-спас дерево,"- оголодавший космодесант

Последний раз редактировалось Mad-Dan; 24.02.2011 в 21:36.
Mad-Dan вне форума  
Ответить с цитированием
Старый 31.01.2011, 02:09   #7
Юзер
 
Регистрация: 31.08.2005
Адрес: Далеко
Сообщений: 171
Репутация: -14 [+/-]
Таблицу можно создать с помощью контрола DataGridView
Berckyt вне форума  
Отправить сообщение для Berckyt с помощью ICQ Ответить с цитированием
Старый 23.02.2011, 14:22   #8
Юзер
 
Аватар для CMETAHA

 
Регистрация: 24.06.2008
Адрес: Я тут
Сообщений: 472
Репутация: 172 [+/-]
Реквестирую сюда мини срачик о том что лучше c# или Java. Заодно и мне объясните.
__________________
"Хуже вопроса не в той теме, может быть только вопрос, о вопросе не в той теме." © *@ndrey*

Контактик Щебет Лицокнижка Спроси меня Гплюс
CMETAHA вне форума  
Отправить сообщение для CMETAHA с помощью ICQ Ответить с цитированием
Старый 23.02.2011, 15:10   #9
Dis is one half
 
Аватар для OneHalf
 
Регистрация: 19.10.2007
Адрес: Санкт-Петербург
Сообщений: 1,460
Репутация: 304 [+/-]
Жила-была Java. Microsoft обиделся, что яву придумали не они и решил сделать свою, с блек джеком и девками.

В принципе языки очень похожи даже синтаксисом (хоть я и не вникал в C# так как в яву, но это и так заметно).
OneHalf вне форума  
Отправить сообщение для OneHalf с помощью ICQ Отправить сообщение для OneHalf с помощью Skype™ Ответить с цитированием
Старый 23.02.2011, 15:24   #10
Юзер
 
Аватар для CMETAHA

 
Регистрация: 24.06.2008
Адрес: Я тут
Сообщений: 472
Репутация: 172 [+/-]
Цитата:
Сообщение от OneHalf Посмотреть сообщение
Жила-была Java. Microsoft обиделся, что яву придумали не они и решил сделать свою, с блек джеком и девками.
Получается что шарп лучше т.к. там есть блек джек и девки))
__________________
"Хуже вопроса не в той теме, может быть только вопрос, о вопросе не в той теме." © *@ndrey*

Контактик Щебет Лицокнижка Спроси меня Гплюс
CMETAHA вне форума  
Отправить сообщение для CMETAHA с помощью ICQ Ответить с цитированием
Старый 23.02.2011, 16:17   #11
Игроман
 
Аватар для Hast


 
Регистрация: 13.07.2007
Адрес: Сімферополь
Сообщений: 3,012
Репутация: 629 [+/-]
Ява лучше уже потому, что она кроссплатформанная.
Hast вне форума  
Ответить с цитированием
Старый 23.02.2011, 16:58   #12
Dis is one half
 
Аватар для OneHalf
 
Регистрация: 19.10.2007
Адрес: Санкт-Петербург
Сообщений: 1,460
Репутация: 304 [+/-]
CMETAHA, основная моя мысль в том, что изучать можно любой из этих языков, а потом легко мигрировать на другой (сделать замену "import" <-> "using" ).
Единственное, чего мне хотелось бы в Java из C#, это перегрузка стандартных операторов, сеттеры и геттеры:

Перегрузка операторов:
Скрытый текст:
Код:
// C#
public class MyClass {
    public MyClass operator+(MyClass firstValue, MyClass secondValue) {
        return ...;
    }
}
Тогда можно так:
Код:
newMyObj = myObj1 + myObj2;
вместо такого
Код:
// Java
public class MyClass {
    public static MyClass add(MyClass firstValue, MyClass secondValue) {
        return ...;
    }
}
Код:
newMyObj = MyClass.add(myObj1, myObj2));


сеттеры и геттеры:
Скрытый текст:
Код:
//C#:
public class SomeClass {
    private MyClass fMyValue;

    public MyClass myValue {
        get {
            return fMyValue;
        }
        set {
            // Здесь можно выкинуть исключение, если value не подходит
            fMyValue = value;
        }
    }
}
А далее инкапсулированное поле используется как открытая переменная:
Код:
SomeClass someObject;

...

someObject.myValue = ...;
... = someObject.myValue;
Java:
Код:
//Java
public class SomeClass {
    private MyClass myValue;

    public MyClass getMyValue {
            return myValue;
        }

    public void setMyValue(MyClass value) {
            // Здесь можно выкинуть исключение, если value не подходит
            this.myValue = value;
    }
}
А далее нужно использовать методы:
Код:
SomeClass someObject;

...

someObject.setMyValue(...);
... = someObject.getMyValue();
OneHalf вне форума  
Отправить сообщение для OneHalf с помощью ICQ Отправить сообщение для OneHalf с помощью Skype™ Ответить с цитированием
Старый 23.02.2011, 17:12   #13
Юзер
 
Аватар для CMETAHA

 
Регистрация: 24.06.2008
Адрес: Я тут
Сообщений: 472
Репутация: 172 [+/-]
Hast, А как же mono?
__________________
"Хуже вопроса не в той теме, может быть только вопрос, о вопросе не в той теме." © *@ndrey*

Контактик Щебет Лицокнижка Спроси меня Гплюс
CMETAHA вне форума  
Отправить сообщение для CMETAHA с помощью ICQ Ответить с цитированием
Старый 23.02.2011, 19:27   #14
Юзер
 
Регистрация: 03.04.2008
Сообщений: 265
Репутация: 134 [+/-]
Смысл шарпа вообще не ясен. Заставляет таскать с собой громоздкий фреймворк, при этом не предоставляя основой и главной фичи java и jre - кроссплатформенности, и отсутствия необходимости в перекомпиляции под платформу. А при этом к тому же еще и производительность страдает. Java лучше.

По истории срачей между M$ и Sun можно тут почитать про J# и C#. Про блэкджек уже сказали выше.

Цитата:
А как же mono?
Там все равно полноценной поддержки майкрософтовских технологий нет, компанию его разрабатывающую вообще продали недавно и под никсами он не нужен. Те кто C# любят пусть кодят под винду.

Последний раз редактировалось emptily; 23.02.2011 в 19:41.
emptily вне форума  
Ответить с цитированием
Старый 24.02.2011, 19:21   #15
Юзер
 
Регистрация: 08.09.2007
Сообщений: 271
Репутация: 61 [+/-]
Код:
         Console.WriteLine("\nОтвет: " + y);

         Console.WriteLine("Округлить до n чисел после запятой, введите n...");
				 				 
         buf = Console.ReadLine();
         byte n = Convert.ToByte(buf);

         Console.WriteLine("\nОтвет: " + Math.Round(y, n));
	}
    }
}
Как сделать так, чтобы строки "Округлить до n чисел после запятой, введите n..." и само n исчезли при при его вводе, и остались только ответы.
__________________
"Надежда умирает последней", - сказала Вера и застрелила Любовь...
Arantar вне форума  
Ответить с цитированием
Старый 24.02.2011, 20:27   #16
Dis is one half
 
Аватар для OneHalf
 
Регистрация: 19.10.2007
Адрес: Санкт-Петербург
Сообщений: 1,460
Репутация: 304 [+/-]
Console.Clear(); ?
OneHalf вне форума  
Отправить сообщение для OneHalf с помощью ICQ Отправить сообщение для OneHalf с помощью Skype™ Ответить с цитированием
Старый 24.02.2011, 20:41   #17
Юзер
 
Регистрация: 08.09.2007
Сообщений: 271
Репутация: 61 [+/-]
OneHalf, оно вроде. Спасибо.

А не подскажите ещё как развилку сделать там же, наподобие "Округлить до n чисел после запятой? Если да - нажмите то-то, если нет то-то", при ответе нет - выходит.
__________________
"Надежда умирает последней", - сказала Вера и застрелила Любовь...

Последний раз редактировалось Arantar; 24.02.2011 в 21:58.
Arantar вне форума  
Ответить с цитированием
Старый 01.03.2011, 19:46   #18
Опытный игрок
 
Аватар для OverDoser
 
Регистрация: 08.09.2006
Адрес: столица России - Москва
Сообщений: 1,406
Репутация: 130 [+/-]
Цитата:
Сообщение от Arantar Посмотреть сообщение
OneHalf, оно вроде. Спасибо.

А не подскажите ещё как развилку сделать там же, наподобие "Округлить до n чисел после запятой? Если да - нажмите то-то, если нет то-то", при ответе нет - выходит.
Можно использовать
Цитата:
/*инициализация caseSwitch*/
switch (caseSwitch)
{
case У:/*что делать при вводе чего-то(У)*/
break;
case Х:
/*что делать при вводе чего то (X)*/
break;
default:

/*делаем,если введено что-то другое*/

}
Надеюсь знаем такое?(расписал если вдруг не знаете).
А в вашем случае делаем стринг.
К примеру если вводите N-округляем(
Цитата:
case N:
/нужные действия/
break;
)если вводите M-не округляем(
Цитата:
case M:
/*нужные действия*/
break;
)
Ну и если другое,то(
Цитата:
default:
/*нужные действия*/
break;}//закрываем начало switch(зададите сами)
)

Последний раз редактировалось OverDoser; 01.03.2011 в 19:54.
OverDoser вне форума  
Отправить сообщение для OverDoser с помощью ICQ Ответить с цитированием
Старый 15.03.2011, 02:53   #19
Гейммастер
 
Аватар для Mad-Dan
 
Регистрация: 07.06.2005
Адрес: unknow
Сообщений: 9,072
Репутация: 634 [+/-]
разбираюсь с dataGridView.

с помощью dataGridView1.Columns.Add("MyColumnName", "MyColumnHeaderText");
можно добавить столбец.
Но я не понимаю двух вещей.
1) зачем нужен первый параметр. Нигде в таблице его не обнаружил
2) Можно ли как-нибудь отцентровать текст в заголовке колонки?
__________________
Бывший Dart Luke

Мечтаю быть модером и всех банить.... Но ведь не дадут (((((

"cъел еретика-спас дерево,"- оголодавший космодесант
Mad-Dan вне форума  
Ответить с цитированием
Старый 15.03.2011, 16:00   #20
Новичок
 
Аватар для xine
 
Регистрация: 21.03.2010
Сообщений: 48
Репутация: 26 [+/-]
Mad-Dan, по columnName можно обращаться к столбцам: dataGridView1.Columns["Name"]
xine вне форума  
Ответить с цитированием
Ответ

Метки
c#, обсуждение, помощь, программирование

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 14:23.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Rambler's Top100 Яндекс цитирования