Compiler error cs1503

The compiler shows error CS1503 Argument 1: cannot convert from 'method group' to 'bool'. I don't understand why Console.WriteLine(Сalculate) does not output. Thank you for answer. The code h...

The compiler shows error

CS1503 Argument 1: cannot convert from ‘method group’ to ‘bool’.

I don’t understand why Console.WriteLine(Сalculate) does not output. Thank you for answer.
The code here:

public static double Calculate(string userInput)
{
    var parts = userInput.Split(' ');
    var sum = double.Parse(parts[0]);
    var rate = double.Parse(parts[1]);
    var time = double.Parse(parts[2]);
    return sum * (1 - Math.Pow(rate/ rate, time)) / (1 - rate/ rate);
}

static void Main()
{
    Calculate(Console.ReadLine());
    Console.ReadKey();
    Console.WriteLine(Сalculate);
    Console.ReadKey();
}

mrogal.ski's user avatar

mrogal.ski

5,7621 gold badge24 silver badges30 bronze badges

asked Mar 14, 2017 at 11:16

Alexei196's user avatar

3

You can do this:

static void Main()
{
    // get result from your method
    var result = Calculate(Console.ReadLine());
    Console.ReadKey();
    // print result
    Console.WriteLine(result);
    Console.ReadKey();
}

smn.tino's user avatar

smn.tino

2,1873 gold badges29 silver badges41 bronze badges

answered Mar 14, 2017 at 11:22

tym32167's user avatar

tym32167tym32167

4,5912 gold badges28 silver badges32 bronze badges

0

  • Remove From My Forums
  • Question

  • Hi

    I am Trying to Play an Video in the Windows Mobile 6 by using this code

                MediaPlayer player = new MediaPlayer();

                Uri UriStr = new Uri(«http://192.168.1.5/audio/abc.wmv»);

                player.Open(UriStr);

                VideoDrawing aVideoDrawing = new VideoDrawing();

                aVideoDrawing.Rect = new Rect(0, 0, 100, 100);

                aVideoDrawing.Player = player;

                // Play the video once.

                player.Play();  

    And I have added Reference to  System.dll , Presentaioncore.dll , 

    But

    when I build this I am getting 3 errors

    1)error CS0012: The type ‘System.Uri’ is defined in an assembly that is not referenced. You must add a reference to assembly ‘System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089’.

    2)error CS1502: The best overloaded method match for ‘System.Windows.Media.MediaPlayer.Open(System.Uri)’ has some invalid arguments

    3)error CS1503: Argument ‘1’: cannot convert from ‘System.Uri [c:Program FilesMicrosoft.NETSDKCompactFrameworkv3.5WindowsCESystem.dll]’ to ‘System.Uri []’

Answers

  • The reason for this issue is what you’re trying to use desktop DLL on NETCF and this is not going to work.
    That is, you can’t use this code at all. You also cannot add reference to Presentaioncore.dll, it’s a desktop DLL.

    You need to remove this code and replace it with something which is device compatible.
    Say, there’s an article about hosting MP control on NETCF on MSDN. Keep in mind it is rather complex and requires advanced skills.


    This posting is provided «AS IS» with no warranties, and confers no rights.

    • Marked as answer by

      Tuesday, May 12, 2009 7:43 AM

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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
using System;
using System.IO;
using System.Collections.Generic;
 
namespace Grapher
{ class Program
{
    static void Main(string[] args)
    {
        string[] data = File.ReadAllLines("массив.txt");
        int length = data[0].Split(';').Length, i;
        Graph graph = new Graph();
        for (i = 0; i < length; i++)
        {
            string[] str = data[i].Split(';');
            var vertices = new Dictionary<char, int>();
            for (int j = 0; j < length; j++)
                if (Convert.ToInt32(str[j]) != 0)
                    vertices.Add(Char.Parse((j + 1).ToString()), Convert.ToInt32(str[j]));
 
            graph.add_vertex(Char.Parse((i + 1).ToString()), vertices);
        }
       
        string start = Console.ReadLine(); // Номер начального пункта
            string end = Console.ReadLine(); // Номер конечного пункта
        var result = graph.all_ways(start, end, "", 0);
 
        using (var sw = new StreamWriter("результат.txt"))
        {
            foreach (var item in result)
                sw.WriteLine(item);
            sw.WriteLine("Кратчайшее расстояние равно " + graph.shortest_path(start, end));
        }
        Console.Write("Результат был сохранен в файле результат.txt");
        Console.ReadLine();
    }
}
}
 
 
    class Graph
    {
        Dictionary<char, Dictionary<char, int>> vertices = new Dictionary<char, Dictionary<char, int>>();
        public void add_vertex(char name, Dictionary<char, int> edges)
        {
            vertices[name] = edges;
        }
        public List<string> all_ways(char current, char end, string path, int weight)
        {
            List<string> pathes = new List<string>();
            if (path.IndexOf(current.ToString() + " ") != -1)
 
                return pathes;
            else
                if (path == "")
                path = current.ToString() + " = 0";
            else
            {
                int index = path.IndexOf("=");
                string temp = path.Substring(0, index);
                string sum = path.Substring(index + 1);
                weight += Convert.ToInt32(sum);
                path = temp + "-> " + current.ToString() + " = " + weight.ToString();
            }
            if (current == end)
            {
                pathes.Add(path);
                return pathes;
            }
            foreach (KeyValuePair<char, int> pair in vertices[current])
            {
                List<string> result = all_ways(pair.Key, end, path, pair.Value);
                if (result.Count != 0)
                    pathes.AddRange(result);
            }
            return pathes;
        }
        public int shortest_path(char start, char finish)
        {
            var previous = new Dictionary<char, char>();
            var distances = new Dictionary<char, int>();
            var nodes = new List<char>();
 
            List<char> path = null;
 
            foreach (var vertex in vertices)
            {
                if (vertex.Key == start)
                {
                    distances[vertex.Key] = 0;
                }
                else
                {
                    distances[vertex.Key] = int.MaxValue;
                }
 
                nodes.Add(vertex.Key);
            }
 
            while (nodes.Count != 0)
            {
                nodes.Sort((x, y) => distances[x] - distances[y]);
 
                var smallest = nodes[0];
                nodes.Remove(smallest);
 
                if (smallest == finish)
                {
                    path = new List<char>();
                    while (previous.ContainsKey(smallest))
                    {
                        path.Add(smallest);
                        smallest = previous[smallest];
                    }
 
                    break;
                }
 
                if (distances[smallest] == int.MaxValue)
                {
                    break;
                }
 
                foreach (var neighbor in vertices[smallest])
                {
                    var alt = distances[smallest] + neighbor.Value;
                    if (alt < distances[neighbor.Key])
                    {
                        distances[neighbor.Key] = alt;
                        previous[neighbor.Key] = smallest;
                    }
                }
            }
            if (path.Count > 0)
                return distances[path[0]];
            else
                return 0;
        }
    }

#.net #list #dictionary #hashset #icollection

Вопрос:

Ответила @Hoshani в ответе.

Я разработал Dictionary структуру строкового ключа для коллекции, которая может быть a List или a HashSet . Оба являются string коллекциями, даже ключ словаря-a string .

Я попытался создать универсальный метод для добавления к определенному ключу в словаре определенного элемента в коллекцию. Но его даже не удалось скомпилировать.

Проблема, по-видимому, заключается не в общем определении коллекции, а в объявлении словаря и коллекции. Я не могу продолжать и не могу понять, что я делаю не так. Мне нужна помощь. Это и есть код:

 using System; using System.Collections.Generic;  // NO COMPILE ERROR CS1503 void AddToCollectionlt;T,Ugt;(U item, U key, Dictionarylt;U, ICollectionlt;Ugt;gt; dict)  where T : ICollectionlt;Ugt;, new() {  if (key is not null) dict[item] = new T(){item};  else dict[key].Add(item); }  var diccHS = new Dictionarylt;string, HashSetlt;stringgt;gt;(); var diccLIST = new Dictionarylt;string, Listlt;stringgt;gt;(); // This two sentences DOES NOT COMPILE AddToCollectionlt;HashSetlt;stringgt;, stringgt;("item1", "item", diccHS); AddToCollectionlt;Listlt;stringgt;, stringgt;("item1", "item", diccLIST);  // COMPILE OK - HERE THE CAST COMPILE void testlt;T,Ugt;( ICollectionlt;Ugt; col) where T : ICollectionlt;Ugt;, new() { var hs2 = new T(); } var hset1 = new HashSetlt;stringgt;{"hh"}; var list1 = new Listlt;stringgt;{"hh"}; testlt;HashSetlt;stringgt;, stringgt;(hset1); testlt;Listlt;stringgt;, stringgt;(list1);  

Спасибо

Комментарии:

1. Вместо того, чтобы редактировать вопрос, чтобы отметить, что на него был дан ответ, пожалуйста, отметьте ответ как принятый (значок галочки). Это автоматически обновит заголовок вопроса, чтобы отметить, что на него был дан ответ, и ответчик получит некоторую оценку репутации за предоставление полезного ответа.

Ответ №1:

В основном вы хотите сказать, Dictionarylt;U, ICollectionlt;Ugt;gt; что часть значения словаря может быть любого типа ICollection для каждой пары значений ключа.

Однако в коде var diccHS = new Dictionarylt;string, HashSetlt;stringgt;gt;() вы ограничиваете этот тип HashSet только

например, приведенный ниже код не создаст возникшую у вас проблему

 var keyValuePairs = new Dictionarylt;string, ICollectionlt;stringgt;gt;(){  {"key", new HashSetlt;stringgt;()},  {"key2", new Listlt;stringgt;()} }; AddToCollectionlt;HashSetlt;stringgt;, stringgt;("item1", "item", keyValuePairs);  

Сказав это, я думаю, что в своем вопросе вы хотели, чтобы все значения имели один и тот же тип, для этого вам следует исправить вторую часть словаря следующим образом :

 void AddToCollectionlt;T, Ugt;(U item, U key, Dictionarylt;U, Tgt; dict)  where T : ICollectionlt;Ugt;, new() {  if (key is not null) dict[item] = new T() { item };  else dict[key].Add(item); }  

Комментарии:

1. Вы правы! Теперь это работает. Неправильное определение. Спасибо

2. @Santi если это решит ваш вопрос, пожалуйста, отметьте его как ответ. заранее спасибо

#c_sharp



Собственно у DXMenuItem есть конструктор с параметрами string, void.Так вот ему не
нравится как я вызываю функцию Count с параметрами.Не может конвертировать тип.Как
мне правильно вызвать функцию с параметрами?Подозреваю что надо использовать лямбда-функцию,но
не уверен.
    

Ответы

Ответ 1

У конструктора DxMenuItem, всего две перегрузки с двумя параметрами: DXMenuItem(string caption, DXMenuItemPriority priority) DXMenuItem(string caption, EventHandler click) Вероятнее всего имелась ввиду вторая перегрузка принимающая обработчик click. В этом случае действительно можно передать lambda new DxMenuItem(str, (s,e)=> Count(...))

Ответ 2

Дело в ожидаемых типах параметров конструктора DXMenuItem. Вряд ли тип второго параметра void (. Собственно у делегата DXMenuItem есть конструктор с параметрами string, void. Маловероятно также, что тип DXMenuItem является делегатом. Похоже, в процитированной фразе Вы пытаетесь описать сигнатуру метода: параметр - string, возвращаемое значение - void.

using System;
using UnityEngine;
using UnityEngine.InputSystem;

namespace platformer
{

    public class HeroInput : MonoBehaviour
    {
    
        [SerializeField] private Hero _hero;

        private HeroInputAction _inputActions;

        private void Awake()
        {
        _inputActions = new HeroInputAction();
        _inputActions.Hero.HorizontalMovement.performed += OnHorizontalMovement;
        _inputActions.Hero.HorizontalMovement.canceled += OnHorizontalMovement;

        _inputActions.Hero.SaySomething.performed += OnSaySomething;
        }

        private void OnEnable() 
        {
        _inputActions.Enable();
        }
        
    

        private void OnHorizontalMovement(InputAction.CallbackContext context )
        {
        var direction = context.ReadValue<float>();
        _hero.SetDirection(direction);
        
        }

        private void OnSaySomething(InputAction.CallbackContext context)
        {
          
        _hero.SaySomething();
        
        }   
    }
}

Понравилась статья? Поделить с друзьями:
  • Compiler error cs1106
  • Compiler error cs1061
  • Compiler error cs1012
  • Compiler error cs0501
  • Compiler error cs0433