Небольшой мануал по C# для новичков - Форум - Все для Unity3d

Все для Unity3d> Небольшой мануал по C# для новичков - Форум>
Страница 1 из 11
Форум » Обучение » Мануалы » Небольшой мануал по C# для новичков
Небольшой мануал по C# для новичков
MetalheadДата: Понедельник, 13.10.2014, 14:47 | Сообщение # 1
Новый писатель
Группа: Пользователи
Сообщений: 5
Статус: Offline
Типы структур

1.class. Класс - это структура, позволяющая хранить поля, методы, константы, конструктор, деструктор и наследовать интерфейсы или другие классы.
Например, если вам надоело передавать 2 разных параметра , например "name" и "value", вы можете написать так :
Код
public class MyClass : IDisposable{ //IDisposable - интерфейс, который реализуется классом
       public string name;
       public int value;
       public MyClass(string x, int y){
           name = x;
           value = y;
       }

       public void Dispose(){
           IDisposable.Dispose(true);
       }
}
... и передавать экземпляр класса MyClass с переменными name и value

==
2. struct. Struct  - это в приципе та же вещь , что и класс, но с одним уникальным свойством : struct можно инициализировать без ключевого слова new, например


Код
public class MyClass{
       int i ;
}

public struct MyStruct{
       int x;
}

public class Example : MonoBehaviour{ //Можно наследовать и класс.
       MyClass x;
       x.i = 0; //Вызовет ошибку
       MyStruct xx;
       xx.x = 0; //Все ОК
}

3.interface. Интерфейс - это что-то вроде оболочки для взаимодействия с классами. Может реализовать только идентификаторы значений/методов/etc.

Код
public interface IMyInterface{
       void HelloWorld();
       string ddd {get;set;} //поля только с методами доступа
}

public class SampleClass : IMyInterface{
       public void HelloWorld(){
           Debug.Log("Hello, World!");
       }
       public string ddd = "hello!";
}

public class Ex : MonoBehaviour{
       void Start(){
           SampleClass sc = new SampleClass();
           IMyInterface imi = new SampleClass();
           SampleClass scc = imi as SampleClass;
       }
}
4.enum. Перечисление. Может реализовать несколько значений

Код
public enum AAA {
       A,B,C,D,E,F
}

public class Example{
       public AAA aaa = AAA.C;
}


Говорите, что исправить или добавить. Тема будет обновляться. Если админам неугодна эта тема, удалите


Сообщение отредактировал Metalhead - Понедельник, 13.10.2014, 15:04
 
МубаДата: Понедельник, 13.10.2014, 15:06 | Сообщение # 2
Новый писатель
Группа: Пользователи
Сообщений: 5
Статус: Offline
Да расскажи про Actions, Events, делегаты и  анонимные делегаты. 
А вообще зачем это здесь ? Мало литературы в интернете?

пы.сы. 
К знающим от анонимного делегата  можно отписаться ?
 
MetalheadДата: Суббота, 18.10.2014, 09:22 | Сообщение # 3
Новый писатель
Группа: Пользователи
Сообщений: 5
Статус: Offline

Ключевые слова

1.public - это ключевое слово, позволяющее получить доступ к объекту из других классов/пространств имен/etc., например :

Код
public class A{
       public int x = 0;
}

namespace B{
       class C{
           A a = new A();
           Debug.Log(a.x.ToString()); //Если убрать модификаторы public из объявлениий A и A.x, тогда выдаст ошибку
       }
}

2.private - модификатор , запрещающий доступ к переменной из других классов(аналог local в Lua). Ставится по умолчанию.

Код
public class X{
       private int myInt = 0;
}

public class A:MonoBehaviour{
       void Start(){
           X x = new X();
           Debug.Log(x.myInt); //Здесь ошибка
       }
}
3.protected - аналог private, с небольшим отличием : к protected-полю/методу/etc. могут иметь доступ из производных классов, например:

Код
public class X{
       protected static string s = "Hello!";
}

public class Y : X{
       public string str = X.s; //Все ОК
}

public class Z{
       public string str = X.s; //Ошибка компилятора
}
4.static - ключевое слово, позволяющее изменять значения переменных, вызывать функции без объявления класса.


Код
public class E{
       public string s;
       public static string s2;
}

public class X{
       public string str1 = E.s; //Ошибка
       public string str2 = E.s2; //Все ОК
       public string str3 = new E().s; //Все ОК
       public string str4 = new E().s2 //Ошибка
}

5.abstract - ключевое слово, применяющееся в основном к классу, указывающее на то, что функции могут реализоваться непосредственно в производных экземплярах, например

Код
public abstract class MyClass{
       public void Azaza(); //Если убрать модификатор abstract, тогда будет ругань компилятора
}

public class MyOtherClass : MyClass{
       public override void Azaza(){
           //Сделать бочку, например
       }
}
6.event и delegate - ключевые слова, применяющиеся для релизации механизма событий. event обозначат событие, вызывающее делегат с модификатором delegate (хотя можно не париться с кастомными делегатами, а использовать EventHandler<ВашиEventArgs>).
Код
public class Ololo{
       public event EventHandler<EventArgs> Started;
       public event MyEventHandler<EventArgs> Closed;
       public delegate void MyEventHandler(object sender, EventArgs e);
       public void OnStart(){
           EventHandler<EventArgs> h = Started;
           if(h != null){
               h(this,new EventArgs());
           }
       }
}
delegate также используется для объявления анонимных методов, например

Код
public delegate string StringOp(string x, string y);

public class x{
       StringOp concat = delegate(string a, string b){
           return a + b;
       }
}
7.dynamic - это ключевое слово, позволящее прпускать проверку типов.

Код
public class X : MonoBehaviour{
       DateTime dt;

       void Start(){
           dt = DateTime.Now();
           Debug.Log(dt as dynamic);
           //еще один пример
           object obj = 1;
           dynamic dyn = 1;
           obj += 3;    //Ошибка
           dyn += 100500; //Все ОК
       }
}
8.Последнее на сегодня. Оператор as - ключевое слово, выполняющее перевод типов.


Код
//Можно написать так :
GameObject g = (GameObject)Network.Instantiate(GameObjet.Find("x"),Vector3.zero,new Quaternion());
//А можно так :
GameObject gg = Network.Instantiate(GameObjet.Find("x"),Vector3.zero,new Quaternion()) as GameObject;


Добавлено (14.10.2014, 13:18)
---------------------------------------------
p.s. Муба, это здесь, чтоб не копаться в поисках литературы по инету

Добавлено (18.10.2014, 09:22)
---------------------------------------------
Стандартные типы C#

1.string. Хранит строку, имеет полезные функции, такие как Substring, Split, и др.
2.short,int,long. Хранят целочисленное значение, отличаются друг от друга размером. short - 16 бит , int - 32бит, long - 64 бит.
3.ushort,uint,ulong - то же , что и предыдущий пункт, но беззнаковые (т.е. не могут быть отрицательными).
4.byte - байт. используется в основном при работе с потоками
5.char. Символ.
6.bool. Булева переменная(true/false). Хранит 1 бит, но занимает почему-то один байт.
7.float,decimal,double - числа с плавающей запятой. различаются размером (32,64,128 бит соответственно).
8.sbyte. Хранит знаковое 8-разрядное число. (от-128 до 127). Подходит для оптимизации циклов с парой десятков итераций


Сообщение отредактировал Metalhead - Суббота, 18.10.2014, 09:23
 
Форум » Обучение » Мануалы » Небольшой мануал по C# для новичков
Страница 1 из 11
Поиск:
Свернуть
Развернуть
Необходима авторизация
0
ТОП-5 САЙТА
НОВЫЕ ИГРЫ
ГОРЯЧИЕ ТЕМЫ
СЛУЧАЙНЫЕ ФАЙЛЫ