Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/65: Рейтинг темы: голосов - 65, средняя оценка - 4.72
146 / 143 / 32
Регистрация: 21.01.2012
Сообщений: 545
1

Побороть ошибку "Значение параметра по умолчанию для "rec" должно быть константой времени компиляции"

17.05.2012, 09:36. Показов 13281. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
public class Deal
    {
        int iD; //ИДи
 
        public int ID
        {
            get { return iD; }
            set { iD = value; }
        }
        DateTime date; //Дата
 
        public DateTime Date
        {
            get { return date; }
            set { date = value; }
        }
        byte type; // 0 - сделка 
 
        public byte Type
        {
            get { return type; }
            set { type = value; }
        }
        Money received; // Сколько бабла получено
 
        public Money Received
        {
            get { return received; }
            set { received = value; }
        }
        Money used; //Сколько бабла потрачено
 
        public Money Used
        {
            get { return used; }
            set { used = value; }
        }
        string comment; //Куда же без комментов
 
        public string Comment
        {
            get { return comment; }
            set { comment = value; }
        }
 
        //конструктор
        Deal(DateTime date, byte type, Money rec = new Money(0,0), Money used = new Money(0,0), string comment = "")
        {
            this.iD = GetId();
            this.date = date;
            this.type = type;
            this.received = rec;
            this.used = used;
            this.comment = comment;
        }
 
        private int GetId()
        {
            return 0;
        }
    }
 
    //Бабло
    struct Money
    {
        public int Rub;
        public short Kop;
        public Money(int Rub, short Kop)
        {
            this.Rub = Rub;
            this.Kop = Kop;
        }
        
        public override string ToString()
        {
            return String.Format("{0}руб. {1}коп",Rub,Kop);
        }
        
        //из бабла во флоат НЕЯВНО
        public static implicit operator float(Money value)
        {
            return value.Rub + (value.Kop / 100.0f);
        }
 
        //из флоата в бабло ЯВНО
        public static explicit operator Money(float value)
        {
            checked
            {
                int rub = (int)value;
                short kop = Convert.ToInt16((value - rub) * 100);
                return new Money(rub, kop);
            }
        }
    }
Ошибка 1 Значение параметра по умолчанию для "rec" должно быть константой времени компиляции D:\csharp\Buhgaltery\Buhgaltery\MainForm.cs 70 52 Buhgaltery
Ошибка 2 Значение параметра по умолчанию для "used" должно быть константой времени компиляции D:\csharp\Buhgaltery\Buhgaltery\MainForm.cs 70 81 Buhgaltery

Добавлено через 22 минуты
С помощью приведения из флоата тоже не получается задать параметры по умолчанию
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2012, 09:36
Ответы с готовыми решениями:

Как сделать значение по умолчанию для параметра, если оно должно быть значением по умолчанию для типа T?
Как сделать значение по умолчанию для параметра, если оно должно быть значением по умолчанию для...

Каким должно быть значение параметра?
Прошу Вас помочь в решении двух задач, ответы есть, но как составить решение ума не приложу :( ...

Выдаёт ошибку «Значение должно быть скалярным»
Присваиваю x значение. Ввожу уравнение по которому надо посчитать x. В числители 2 дроби...

Значение должно быть целым числом. Вроде не должно быть ошибки
Значение должно быть целым числом

Как убрать ошибку -Значение должно быть скаляром или матрицей?
Не могу понять в чем дело, у коллег по учебе в точности все тоже самое. Помогите пож!

2
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
17.05.2012, 10:46 2
C#
1
Deal(DateTime date, byte type, Money rec = new Money(0,0), Money used = new Money(0,0), string comment = "")
так нельзя
C#
1
Money rec = new Money(0,0), Money used = new Money(0,0)
можно использовать только те типы, которые сразу являются значениями, а не возвращают значения.
к примеру
C#
1
ctor(string prametr = "")
- правильно
C#
1
ctor(string prametr = string.Empty)
- не правильно
1
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
17.05.2012, 11:19 3
Придется перегружать конструктор, если хотите использовать неконстантные выражения в defualt парметрах.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        Deal(DateTime date, byte type, Money rec, Money used, string comment = "")
        {
            this.iD = GetId();
            this.date = date;
            this.type = type;
            this.received = rec;
            this.used = used;
            this.comment = comment;
        }
        Deal(DateTime date, byte type) : this(date, typ, new Money(0,0), new Money(0,0))
        {
        }
        Deal(DateTime date, byte type, Money rec) : this(date, typ, rec, new Money(0,0))
        {
        }
2
17.05.2012, 11:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.05.2012, 11:19
Помогаю со студенческими работами здесь

Показывает в строке - FileSystem.FileGet(n, ref rec.Fio, rec.Sr); ошибку - 96 строка.
Всё работает, но не выводит в public static void Poisk(int n) ФИО и средний балл. Показывает в...

Тип не найден или не является константой времени компиляции: APIConnection
При компиляции ролика, выдает ошибку: Вот кусок кода, к котором находится ошибка: import...

1046: Тип не найден или не является константой времени компиляции: Void.
При открытии файла Action Script 2.0 во Flash 2015 CC (AS 3.0) ошибка: Символ "ico two arrow",...

Помогие найти ошибку в программе при значении 2.5 выдает не правильное значение.значеине должно быть 0.134
program Labrab2; uses wincrt; var x,y :Real; begin WriteLn('Laboratornaya rabota 2');...

Выдает ошибку System.ArgumentNullException: "Значение не может быть неопределенным. Имя параметра: item
Хочу вывести массив в Listbox из файла Excel, если я беру и открываю файл, то он выдает такую...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru